您的位置:首页 > 产品设计 > UI/UE

活动被回收的处理、活动的启动模式、一键退出所有活动、UI控件、四种布局方式、自定义控件

2015-04-16 11:05 453 查看
Activity 主题:在清单文件AndroidManifest.xml中的<activity>标签有属性android:theme

例:<activity android:theme=”@android:style/Theme.Dialog”>(对话框式活动)

活动被回收

1.在Activity中重写onSaveInstanceState()方法,次方法保证在Activity被系统回收前被调
用。该方法携带一个Bundle类型的参数,可以用于保存数据。

例:

@Override
protected void onSaveInstanceState (Bundle outState){
super.onSaveInstanceState(outState);
outState.putString(“key”, “value”);
}


经由此,数据被保存下来。

2.数据被保存下来后,通过onCreate()方法获得经过onSaveInstanceState()方法保存的数据。

onCreate()方法同样携带了一个Bundle类型的参数。这个参数一般情况下都是null,但通过onSaveInstanceState()方法后,这个参数就带有保存的数据。

例:

@Override
protected void onCreate (Bundle saveInstanceState){
super.onCreate(saveInstanceStage);
setContentView(R.layout.xxx);

if (saveInstanceState != null){
String value = saveInstanceState.getString(“key”);
}
}


这里的Bundle以及之前的Intent对于数据的保存与取出方式类似于Map

活动的启动模式

1.standard模式:无论返回栈中是否已经有此Activity,都会重新实例化一个此Activity

2.singleTop模式:如果在返回栈的栈顶有此Activity,则不会重新实例一个此Activity,而是
直接取得栈顶的Activity,若不在栈顶,则重新实例一个此Activity

3.singleTask模式:只要在返回栈中有过此Activity,无论是否在栈顶,都是直接取得返回栈 中的此Activity而不会重新实例一个Activity。但是在这个Activity上面的所有的所
有Activity统统出栈。

4.singleInstance模式:会启用一个新的返回栈来管理这个Activity。用处:与其他程序共享数据。

一键退出所有活动

注意:是退出所有活动,即退出整个应用程序,而不是仅仅关闭程序界面,在后台挂起。

使用一个集合来管理所有你实例过的Activity

public class ActivityCollector {
public static List<Activity> activityList = new ArrayList<Activity>();

public static void addActivity (Activity activity){
activityList.add(activity);
}

pubic static void removeActivity (Activity activity){
activityList.remove(activity);
}

public static void removeAll (){
for (Activity activity: activityList){
if (!activity.isFinishing()){
activity.finish();
}
}
}
}


在Activity的onCreate()方法中调用addActivity()方法,在onDestroy()方法中调用removeActivity()方法。若要关闭全部,则直接调用removeAll()方法

UI控件

TextView Button EditView ImageView ProgressBar(加载条) AlertDialog(对话框)

PorgressDialog(对话框,带进度条)

修改对齐方式:

android:gravity=”[top|bottom|left|right|center]” (gravity:重力,bottom:底部)

修改颜色和大小:

android:textSize=””

android:textColor=””

控件提示性文字:

android:hint=”” (hint:提示)

限制行高:

android:maxLines=””

输入框类型

android:inputTupe=”textPassword” (密码输入框)

是否可见:

android:visibility=”[visible|invisible|gone]” (可见|不可见但占据位置|不可见且不占据位置)

代码:setVisibility([View.VISIBLE|View.INVISIBLE|View.GONE]);

界面弹出一个对话框:

AlertDialog.Builder dialog = new AlertDialog.Builder(XxxActivity.this);
dialog.setTittle(“This is Dialog”);
dialog.setMessage(“Something important”);
dialog.setCancelble([true|false]);	//可否取消
dialog.setPositiveButton(“OK”, new DialogInterface.OnClickListener (){
@Override
public void onClick (DialogInterface dialog, int which){
//逻辑代码
}
});
dialog.setNegativeButton(“Cancel”, new DialogInterface.OnclickListener (){
@Override
public void onClick (DialogInterface dialog, int which){
//逻辑代码
}
});
<span style="color:#ff0000;">dialog.show();</span>


四种布局方式

LinearLayout:线性布局。

android:orientation=”[vertical|horizontal]” (orientation:方向, vertical:垂直, horizontal:水平)

android:layout_gravity 指定控件在布局中的对齐方式

android:layout_weight 使用比例的形式来指定控件的大小(屏幕适配方面有重要作用)

RelativeLayout:相对布局

FrameLayout:帧布局

子控件对齐到左上角,控件会层叠,布局的大小由最大的子控件的最大尺寸决定。

TableLayout:表格布局

android:stretchColumns=”1” 表格行拉伸以自动适配屏幕。1带表拉伸第二列

android:shrinkColumns 与上相同,作用为收缩而不是拉伸

android:layout_span=”” 合并单元格

AbsoluteLayout:绝对布局(官方已经不推荐使用)

自定义控件

1.引入布局

<include layout=”@layout/xxx” /> //实现布局配置文件的重用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: