Android中LauncherActivity、PreferenceActivity、ExpandableListActivity的综合运用

本文主要是介绍Android中LauncherActivity、PreferenceActivity、ExpandableListActivity的综合运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

1.LauncherActivity继承了ListActivity,因此它本质上也是一个开发列表界面的Activity,但它开发出来的列表界面与普通列表界面有所不同。它的每个列表项都对应一个Intent,用户单击不同的列表项时,应用程序会自动启动对应的Activity。继承LauncherActivity时通常应该重写intentForPosition()方法,该方法根据不同列表项返回不同的Intent。

2.PreferenceActivity专门用于设置选项参数并进行保存,对于PreferenceActivity,我们不再使用普通的界面布局文件,不再使用XxxLayout作为根元素,而是使用PreferenceScreen作为根元素,它表明定义一个参数设置的界面布局。

3.至于ExpandableListActivity,用于显示一个可展开的列表窗口。

下面通过一个简单实例来演示它们的使用,主界面是LauncherActivity,它的两个列表项是PreferenceActivity和ExpandableListActivity,代码如下:

LauncherActivity:

package com.lovo.activity;import android.os.Bundle;
import android.app.LauncherActivity;
import android.content.Intent;
import android.widget.ArrayAdapter;public class MainActivity extends LauncherActivity {// 定义两个Activity的名称private String[] names = { "查看DNF游戏角色", "设置程序参数" };// 定义两个Activity对应的实现类private Class<?>[] clazzs = { ExpandableListActivityTest.class,PreferenceActivityTest.class };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names);// 设置该窗口显示的列表所需的AdaptersetListAdapter(adapter);}// 根据列表项返回指定Activity对应的Intent@Overrideprotected Intent intentForPosition(int position) {return new Intent(MainActivity.this, clazzs[position]);}
}

ExpandableListActivity:

package com.lovo.activity;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.LinearLayout;
import android.widget.TextView;public class ExpandableListActivityTest extends ExpandableListActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 创建一个可展开的列表组件ExpandableListAdapter对象ExpandableListAdapter adapter = new BaseExpandableListAdapter() {// 每一个列表的字符数组private String[] roleTypes = new String[] { "圣职者", "神枪手", "鬼剑士","法师", "暗夜使者" };// 每个列表下面的子列表字符数组private String[][] roles = new String[][] {{ "蓝拳", "驱魔", "圣骑士", "复仇者" }, { "漫游", "大枪", "弹药", "机械" },{ "剑魂", "红眼", "阿修罗", "鬼泣" },{ "战斗法师", "魔法师", "元素师", "召唤师" }, { "刺客", "死灵" } };@Overridepublic boolean isChildSelectable(int groupPosition,int childPosition) {return true;}@Overridepublic boolean hasStableIds() {return true;}// 构建每个父列表组件@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {// 创建一个LinearLayout对象LinearLayout ll = new LinearLayout(ExpandableListActivityTest.this);ll.setOrientation(0);TextView textView = getTextView();// 根据groupPosition取roleTypes对应文本作为textView显示的文本内容textView.setText(getGroup(groupPosition).toString());ll.addView(textView);return ll;}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic int getGroupCount() {return roleTypes.length;}@Overridepublic Object getGroup(int groupPosition) {return roleTypes[groupPosition];}@Overridepublic int getChildrenCount(int groupPosition) {return roles[groupPosition].length;}/*** 在MainActivity里创建TextView组件* * @return TextView*/private TextView getTextView() {AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_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;}// 构建子列表的数据@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {TextView textView = getTextView();// 根据groupPosition和childPosition取roles中对应文本作为textView显示的内容textView.setText(getChild(groupPosition, childPosition).toString());return textView;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic Object getChild(int groupPosition, int childPosition) {return roles[groupPosition][childPosition];}};setListAdapter(adapter);}
}

PreferenceActivity:

package com.lovo.activity;import android.os.Bundle;
import android.preference.PreferenceActivity;public class PreferenceActivityTest extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置布局addPreferencesFromResource(R.xml.preference);
}
}

PreferenceActivity布局XML:

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


引用的数组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>1</item><item>0</item></string-array></resources>





 

这篇关于Android中LauncherActivity、PreferenceActivity、ExpandableListActivity的综合运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/966283

相关文章

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE