主要是布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RadioGroup android:gravity="center" android:layout_gravity="bottom" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <RadioButton android:id="@+id/btn_0" android:textSize="17.0sp" android:textColor="@android:color/black" android:text="搜索微博" android:layout_weight="1" android:button="@null" android:checked="true" android:drawableLeft="@drawable/state_radio" android:background="@drawable/state_btn" android:gravity="center_vertical" > </RadioButton> <RadioButton android:id="@+id/btn_1" android:textSize="17.0sp" android:textColor="@android:color/black" android:text="搜索用户" android:layout_weight="1" android:button="@null" android:drawableLeft="@drawable/state_radio" android:background="@drawable/state_btn" android:gravity="center_vertical" > </RadioButton> </RadioGroup> </LinearLayout>
其中state_radio.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="false" android:state_checked="false" android:state_pressed="false" android:drawable="@drawable/bg_radio" > </item> <item android:state_focused="false" android:state_checked="true" android:state_pressed="false" android:drawable="@drawable/bg_radio_selected" > </item> <item android:state_focused="true" android:state_checked="false" android:state_pressed="false" android:drawable="@drawable/bg_radio_onfocus" > </item> <item android:state_focused="true" android:state_checked="true" android:state_pressed="false" android:drawable="@drawable/bg_radio_onfocus_selected" > </item> </selector>
state_btn.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/bg_btn"/> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/bg_btn_selected" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/bg_btn_selected" /> </selector>
上面的写法有点拖沓,采用style可能会更简单:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme" parent="android:Theme"> <item name="android:radioButtonStyle">@style/RadioButton</item> </style> <style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton"> <item name="android:button">@drawable/radio</item> </style> </resources>
radio.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_window_focused="false" android:drawable="@drawable/radio_hover" /> <item android:state_checked="false" android:state_window_focused="false" android:drawable="@drawable/radio_normal" /> <item android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/radio_active" /> <item android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/radio_active" /> <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/radio_hover" /> <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/radio_normal_off" /> <item android:state_checked="false" android:drawable="@drawable/radio_normal" /> <item android:state_checked="true" android:drawable="@drawable/radio_hover" /> </selector>
今天做一个小程序时,中间界面的切换全部用了setContentview(int id) 这个方法来实现。 然后,当我的有个需求就是需要点击返回按钮,返回到上层菜单时,发现setContentview之后,所有Button的监听器似乎都失灵了。
查了一些资料,发现自己对于setContentview这个方法自己没有理解好, 原来一直都是使用这个setContentview(int id)
来切换界面,但是这一次我的Activy生成之后, 如果仅仅setContentview(int
id),那么View需要重新绘制,上面的Button也就不存在了原来注册的监听器。
熟悉setContentview这个方法的朋友都知道,这个方法还有一个重载方法
setContentview(View
v),传递view参数,就可以实现界面切换时, 同时重绘了VIEW
具体实现:
LayoutInflater inflater = getLayoutInflater();
View layout =
inflater.inflate(R.layout.myxml,null);
上篇博客中提到了这个LayoutInflater
,这个类简单来说是查找layout文件夹下面的xml文件,功能类似的有findViewByid(查找xml文件里的控件),然后通过第二句代码生成一个View对象
接着,我们就可以setContentview(layout
)来实现切换界面了,这样一来,我们那个layout 里面的控件的单击事件就还是可以使用啦。
屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。
通过查看OPhone API文档可以发现,有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数:
- setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。
- showNext: 调用该函数来显示FrameLayout里面的下一个View。
- showPrevious: 调用该函数来显示FrameLayout里面的上一个View。
- isFlipping: 用来判断View切换是否正在进行
- setFilpInterval:设置View之间切换的时间间隔
- startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
- stopFlipping: 停止View切换
- 1 多个Activity其间的切换与数据交互
- 2 图片其间的切换
- 3 Activity其间的切换动画
- 4 Activity其间实现动画的切换
- 5 不同Activity其间的切换
- 1 十分难缠的signal 11 (SIGSEGV)
- 2 Can't create handler inside thread that has not called Looper.prepare() 错误有关问题
- 3 Dex Loader Unable to execute Multiple dex files define解决办法
- 4 解决 Google Play下载施用 "Google Play Store 已停止运行"
- 5 WAP网页获得用户的手机号码
- 6 如何判断Activity是否在运行
- 7 SlidingMenu+ViewPager兑现侧滑菜单效果
- 8 makeKeyAndVisible的功用
- 9 关于Unable to execute dex: Java heap space 解决方法
- 10 RelativeLayout设置居中对齐有关问题
- 1 播发声音文件AVAudioPlayer
- 2 改变银屏显示方式已经加载图片
- 3 2013-十-31 TCP/IP 协议簇
- 4 Java I/零 总体框架图
- 5 拿碗的铠甲勇者
- 6 女友可能出轨 想知道在QQ和别人的聊天记录
- 7 objective C中的字符串(3)
- 8 java.lang.ClassNotFoundException: Didn't find class "Activity" on path: /da
- 9 LG Optimus G Pro 相干
- 10 怎么创建对话框
- 1 power键跟音量键组合实现截图功能
- 2 实现默认文字统制的textview
- 3 视图切换的形式
- 4 Andriod耗时操作的处置(音乐播放器欢迎界面)
- 5 深入viewgroup.onintercepttouchevent1点
- 6 用 lipo 下令裁剪出需要的 architecture
- 7 MGTemplateEngine模版发动机
- 8 Tiledmap编辑操作技巧
- 9 疑惑为什么报错了
- 10 BroadcastReceiver要领
- 上一篇: setContentview后,单击事件不可用的解决办法
- 下一篇: 获取银屏分辨率