Activity的基类

在不同的场景下,可以根据需要继承Activity的子类。

如果应用程序界面只包括列表,则可以让应用程序继承ListActivity,

如果应用程序界面需要实现标签页效果,则可以让应用程序继承TabActivity

Activity的基类_第1张图片

现在实现一个继承LauncherActivity的应用

LauncherActivity继承了ListActivity,本质是一个开发列表界面的Activity,不同的是,它开发的列表界面中的每个选项都对应一个Intent,

因此每当用户单击不同的列表项时,应用程序会自动启动对应的Activity。

使用时:需要设置Adapter,不同的是需要重写Intent intentForPosition(int position)方法,该方法根据不同列表返回不同的Intent

代码如下:

public class otherActivity extends LauncherActivity{
	//定义两个activity
	String[] names = {"设置程序参数","查看星级兵中"};
	//定义两个activity对应实现的类
	Class[] clazzs = {preferencestest.class,ExpandableList.class}; 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,names);
		//设置该窗口显示的列表所学的Adapter
		setListAdapter(adapter);
	}
	//根据列表项返回指定Activity对应的Intent
	@Override
	public Intent intentForPosition(int position){
		return new Intent(otherActivity.this,clazzs[position]);
	}
}

效果图:

Activity的基类_第2张图片

其中:ExpandableList是ExpandableListActivity的子类,用于显示一个可展开的列表窗口

preferencestest是PreferenceActivity的子类,用于显示一个显示设置选项参数并进行保存的窗口

ExpandableList代码如下:

public class ExpandableList extends ExpandableListActivity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		ExpandableListAdapter adapter = new BaseExpandableListAdapter(){

			int[] logos = new int[]{
				R.drawable.bg,
				R.drawable.gc_gamehall,
				R.drawable.ic_launcher
			};
			private String[] armTypes = new String[]{
					"神族","虫族","人族"
			};
			private String[][] arms = new String[][]{
					{"狂战士","龙骑士","电兵"},
					{"小狗","刺蛇","飞龙"},
					{"机枪兵","护士MM","幽灵"}
			};
			@Override
			public Object getChild(int arg0, int arg1) {
				//取得与指定组位置、指定子列表项数据
				// TODO Auto-generated method stub
				return arms[arg0][arg1];
			}

			@Override
			public long getChildId(int arg0, int arg1) {
				//取得给定分组中给定子视图的id.改组id必须在组中是唯一的。
				// TODO Auto-generated method stub
				return arg1;
			}

			@Override
			public View getChildView(int arg0, int arg1, boolean arg2,
					View arg3, ViewGroup arg4) {
				//决定每个字选项的外观
				// TODO Auto-generated method stub
				TextView textview = getTextView();
				textview.setText(getChild(arg0,arg1).toString());
				return textview;
			}

			@Override
			public int getChildrenCount(int arg0) {
				//取得指定分组的子元素数
				// TODO Auto-generated method stub
				return arms[arg0].length;
			}
			private TextView getTextView(){
				AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,64);
				TextView textview  = new TextView(ExpandableList.this);
				textview.setLayoutParams(lp);
				textview.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
				textview.setPadding(36, 0, 0, 0);
				textview.setTextSize(20);
				return textview;
				
			}
			@Override
			public Object getGroup(int groupPosition) {
				//获取指定组位置处的组数据
				// TODO Auto-generated method stub
				return armTypes[groupPosition];
			}

			@Override
			public int getGroupCount() {
				//取得分组数
				// TODO Auto-generated method stub
				return armTypes.length;
			}

			@Override
			public long getGroupId(int groupPosition) {
				//取得指定分组的id。该组的id必须在组中是唯一的
				// TODO Auto-generated method stub
				return groupPosition;
			}

			@Override
			public View getGroupView(int groupPosition, boolean isExpanded,
					View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
				//取得用于显示给定分组的视图。这个方法仅返回分组的视图对象,想获取子元素的视图对象,就必须调用该方法。
				LinearLayout ll = new LinearLayout(ExpandableList.this);
				ll.setOrientation(0);
				ImageView logo = new ImageView(ExpandableList.this);
				logo.setImageResource(logos[groupPosition]);
				ll.addView(logo);
				TextView textview = getTextView();
				textview.setText(getGroup(groupPosition).toString());
				ll.addView(textview);
				return ll;
			}

			@Override
			public boolean hasStableIds() {
				// TODO Auto-generated method stub
				//是否指定分组视图及其子视图的id对应的后台数据改变也会保存该id
				return true;
			}

			@Override
			public boolean isChildSelectable(int groupPosition,
					int childPosition) {
				// 指定位置的子视图是否可选择
				// TODO Auto-generated method stub
				return true;
			}
			
		};
		//设置该窗口显示列表
		setListAdapter(adapter);
	}
}

效果图:

Activity的基类_第3张图片

Activity的基类_第4张图片

PreferenceActivity是专门用来设置选项参数,所使用的XML文件,就建立在res/xml目录下的,根元素是使用PreferenceScreen。

通过PreferenceActivity设置的参数,会自动保存,且立即生效,下次调用时依然有效。

XML代码:



    
    
    
        
        
        
        
    
    
		        
    

java代码:

public class preferencestest extends PreferenceActivity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preferences);
	}
}

效果图:

Activity的基类_第5张图片

你可能感兴趣的:(android,事件,android,activity)