此文是参考《Android用户界面设计》而写的,主要目的是为了记录,备忘,及分享。
Android屏幕旋转禁止重新加载布局,可以在Manifest.xml中配置一下属性来实现。
android:configChanges="keyboardHidden|screenSize|orientation"
我们此处讨论的是:在屏幕旋转,重新加载布局文件的情况下,如何保存和恢复状态。
关于Android自定义组件保存和恢复状态之前一直没有研究,所熟悉的也仅仅是Activity如何保存和恢复状态。但是对于代码规范来说,在自定义组件内部进行状态的保存和恢复至关重要。
此组件是类似于RadioButton似的单选开关组件,效果如下:
首先,创建一个继承于LinearLayout的控件。并创建initView方法
<pre name="code" class="java">public class MultiButton extends LinearLayout implements View.OnClickListener {
CompoundButton mSelectButton;
public MultiButton(Context context) {
super(context);
initView(context,null);
}
public MultiButton(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context,attrs);
}
public MultiButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context, attrs);
}
void initView(Context context,AttributeSet set){
for (int i = 0; i < 3; i++) {
final CompoundButton toggleButton = new ToggleButton(context);
addView(toggleButton);
toggleButton.setOnClickListener(this);
if (i == 0) {
mSelectButton = toggleButton;