`
mmdev
  • 浏览: 12925043 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android开发学习之LauncherActivity开发启动的列表

 
阅读更多

Android开发学习之LauncherActivity开发启动的列表

创建项目:OtherActivity

项目运行结果:

建立主Activity:OtherActivity.java

package wwj.otherActivity;

import android.os.Bundle;
import android.app.Activity;
import android.app.LauncherActivity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.support.v4.app.NavUtils;

public class OtherActivity extends LauncherActivity {
	
	//定义两个Activity的名称
	String[] names = {"设置程序参数", "查看星际兵种"};
	//定义两个Activity对应的实现类
	Class<?>[] clazzs = {PreferenceActivityTest.class,
			ExpandableListActivityTest.class};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1
        		, names);
        // 设置该窗口显示的列表所需的Adapter
        setListAdapter(adapter);
    }
    //根据列表项返回指定Activity对应的Intent
    @Override
    protected Intent intentForPosition(int position) {
    	// TODO Auto-generated method stub
    	return new Intent(OtherActivity.this, clazzs[position]);
    }
}


建立第一个列表项的Activity:PreferenceActivityTest.java

package wwj.otherActivity;

import android.os.Bundle;

public class PreferenceActivityTest extends android.preference.PreferenceActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//设置显示参数设置布局
		addPreferencesFromResource(R.xml.preferences);
	}
}


PreferenceActivity使用的界面布局文件

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
	<!-- 设置系统铃声 -->
	<RingtonePreference
	    android:ringtoneType="all"
	    android:title="设置铃声"
	    android:summary="选择铃声"
	    android:showDefault="true"
	    android:key="ring_key"
	    android:showSilent="true">
	</RingtonePreference>
	<PreferenceCategory
	    android:title="个人信息设置组">
	    <!-- 通过输入框填写用户名 -->
	    <EditTextPreference 
	        android:key="name"
	        android:title="用户名"
	        android:summary="填写你的用户名"
	        android:dialogTitle="您所使用的用户名为: "
	        />
	    <!-- 通过列表框选择性别 -->
	    <ListPreference 
	        android:key="gender"
	        android:title="性别"
	        android:summary="选择您的性别"
	        android:dialogTitle="ListPreference"
	        android:entries="@array/gender_name_list"
	        android:entryValues="@array/gender_value_list"
	        />
	</PreferenceCategory>
	<PreferenceCategory 
	    android:title="系统功能设置组">
	    <CheckBoxPreference 
	        android:key="autoSave"
	        android:title="自动保存进度"
	        android:summaryOn="自动保存 :开启"
	        android:summaryOff="自动保存:关闭"
	        android:defaultValue="true"/>
	</PreferenceCategory>
	</PreferenceScreen>


数组文件:array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="gender_name_list">
	<item>男</item>
	<item>女</item>
</string-array>
<string-array name="gender_value_list">
	<item>male</item>
	<item>female</item>
</string-array>
</resources>


创建第二个列表项的Activity:ExpandableListActivity.java

package wwj.otherActivity;

import android.app.ExpandableListActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ExpandableListActivityTest extends ExpandableListActivity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		ExpandableListAdapter adapter = new BaseExpandableListAdapter() {
			
			int[] logos = new int[]{
					R.drawable.p,
					R.drawable.z,
					R.drawable.t
			};
			private String[] armTypes = new String[]
					{"神族兵种", "虫族兵种", "人族兵种"};
			private String[][] arms = new String[][]{
					{"狂战士", "龙骑士", "黑暗圣堂", "点兵"},
					{"小狗", "刺蛇", "飞龙", "自爆飞机" },
					{"机枪兵", "护士MM", "幽灵"}
			};
			
			//获取指定组位置、指定子列表项处的子列表项数据
			public Object getChild(int groupPosition, int childPosition) {
				// TODO Auto-generated method stub
				return arms[groupPosition][childPosition];
			}
			
			public long getChildId(int groupPosition, int childPosition) {
				return childPosition;};
				
			public int getChildrenCount(int groupPosition) {
					// TODO Auto-generated method stub
					return arms[groupPosition].length;
				}	
			
			private TextView getTextView(){
				AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
						ViewGroup.LayoutParams.FILL_PARENT, 64);
				TextView textView = new TextView(ExpandableListActivityTest.this);
				textView.setLayoutParams(lp);
				textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
				textView.setPadding(36, 0, 0, 0);
				textView.setTextSize(20);
				return textView;
			}
			
			public View getChildView(int groupPosition, int childPosition,
					boolean isLastChild, View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
				TextView textView = getTextView();
				textView.setText(getChild(groupPosition, childPosition).toString());
				return textView;
			}
			
			//获取指定位置处的组数据
			public Object getGroup(int groupPosition) {
				return armTypes[groupPosition];
			};
			public int getGroupCount() {
				// TODO Auto-generated method stub
				return armTypes.length;
			}
			public long getGroupId(int groupPosition) {
				// TODO Auto-generated method stub
				return groupPosition;
			}
			
			public View getGroupView(int groupPosition, boolean isExpanded,
					View convertView, ViewGroup parent) {
				// TODO Auto-generated method stub
				LinearLayout ll = new LinearLayout(ExpandableListActivityTest.this);
				ll.setOrientation(0);
				ImageView logo = new ImageView(ExpandableListActivityTest.this);
				logo.setImageResource(logos[groupPosition]);
				ll.addView(logo);
				TextView textView = getTextView();
				textView.setText(getGroup(groupPosition).toString());
				ll.addView(textView);
				return ll;
			}

			public boolean hasStableIds() {
				// TODO Auto-generated method stub
				return true;
			}

			public boolean isChildSelectable(int groupPosition,
					int childPosition) {
				// TODO Auto-generated method stub
				return true;
			}
			
		};
		//设置该窗口显示列表
		setListAdapter(adapter);
	}
}


分享到:
评论

相关推荐

    Android开发-Activity的生命周期及Intent

    3. 掌握在manifest文中定义多个activity,并指定Launcher Activity 4. 掌握Activity的启动模式,和启动模式所对应的Activity和task的关系 内容: 1、设计如下界面,包括四个按钮,两个文本框。单击对应按钮可以启动...

    android开发资料大全

    Android开发开发技巧之 EditText 属性、 ProgressBar 各种样式大全 android用户界面之EditText教程实例汇 android用户界面之ListView教程实例汇 android用户界面之Toast教程实例汇 android用户界面之AlarmManager...

    新版Android开发教程.rar

    Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...

    基于Android NativeActivity的LuaJIT启动器,通过FFI在Lua land中实现主循环-Android开发

    基于Android NativeActivity的LuaJIT启动器,通过FFI在Lua Land中实现主循环android-luajit-launcher基于Android NativeActivity的LuaJIT启动器,通过FFI在Lua Land中实现主循环。 从平台android-9开始可以使用...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 5/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    《Google Android SDK开发范例大全(第3版)》.pdf

     全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

    Google Android SDK开发范例大全(完整版)

    Android 应用程序文件实际上是归档文件,可通过 WinZip 之类的软件查看。扩展名为 apk。 •发出 ping 命令,查看 Google.com 是否可用。 从相同的命令提示符环境中,还可以与 SQLite 数据库交互,启动程序以及执行...

    Google Android SDK开发范例大全(第3版)part2

     全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及...

    解析Android应用启动后自动创建桌面快捷方式的实现方法

    要不怎么说Android特别开放呢,在Android开发中,只要发送一个广播,就可以实现这种需求了。 废话不多说,以下是封装好的一段代码。 代码如下:public class ShortcutUtil { public static void createShortCut...

    安卓(Android)开发之统计App启动时间

    作为 Android 开发者,想必多多少少要接触启动速度优化相关的事情,当用户越来越多,产品的功能也随着迭代越来越多,App 逐渐变得臃肿是一件很常见的现象,甚至可以说是不可避免的现象,随之而来的工作就是优化 App ...

    android开发使用例子

    在进行Android开发的过程中,免不了,要开发TCP/UDP通讯的程序,下面这两段代码,分别介绍了TCP/UCP通过的一个实例: 代码一: private void tcpdata() { try { Socket s = new Socket("192.168.0.25", 65500); ...

    Android6.0 Launcher2应用解析

    在之前我们分析了Android6.0系统在启动时安装应用程序的过程,这些应用程序安装好之后,Launcher应用就负责把它们在桌面上展示出来。 一、AMS启动Launcher  Launcher应用是在AMS的systemReady方法中直接调用...

    Android的Launcher启动器中添加快捷方式及小部件实例

    前言: 最近一直在看Launcher模块,经过差不多两个月学习,终于摸透了Launcher的一些主要功能实现,目前继续还处于 摸索状态。未看Launcher时,于我而言,只能膜拜,以为所有功能都是它实现的 ;入门后,才发现,...

    疯狂Android讲义源码

     1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装Eclipse和ADT插件 7  1.3 Android常用开发工具的用法 10  1.3.1 创建、删除和浏览AVD 10  1.3.2 使用Android模拟器  (Emulator) 14...

    疯狂Android讲义.part2

    1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览AVD 10 1.3.2 使用Android模拟器 (Emulator) 14 1.3.3 使用...

    疯狂Android讲义.part1

    1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览AVD 10 1.3.2 使用Android模拟器 (Emulator) 14 1.3.3 使用...

Global site tag (gtag.js) - Google Analytics