Android LauncherActivity,ExpandableListActivity,PreferenceActivity
来源:互联网 发布:红点瞄准镜 知乎 编辑:程序博客网 时间:2024/05/21 11:04
LauncherActivity 继承了ListActivity本质上是开发列表界面的Activity。LauncherActivity开发出来的列表界面每个列表都对应一个Intent,当用户点击不同的列表项时,应用程序会自动启动对应的Activity。
1.继承LauncherActivity
2.setListAdapter(adapter);
3.复写intentForPosition()
protected Intent intentForPosition(int position) {
return new Intent(DemoLauncherActivity.this, clazzs[position]);
}
ExpandableListActivity用于显示一个可展开的列表窗口:
1.继承ExpandableListActivity
2.实现ExpandableListAdapter adapter子类
3.setListAdapter(adapter);
PreferenceActivity用于显示一个选项参数并进行自动保存的窗口:
结合PreferenceFragment实现界面
1.继承PreferenceActivity
2.onBuildHeaders()方法里调用loadHeadersFromResource(R.xml.preference_headers, target);加载header, 以preference-headers做为根元素的xml文件
3.实现PreferenceFragment子类
调用addPreferencesFromResource(R.xml.preferences);加载xml布局文件,以PreferenceScreen做为根元素的xml文件
调用getArguments().getXxxx()获得preference-headers extra 传入的参数
String website = getArguments().getString("website");
preference-headers:
<header
android:fragment="shortcut.song.com.myapplication.PreferenceActivityText$Prefs2Frament" //启动的Frament, Prefs2Frament继承了PreferenceFragment
android:icon="@drawable/img2"
android:title="界面选项设置"
android:summary="界面相关的选项设置">
<!-- 使用extra可以向Activity 传入额外的数据 -->
<extra
android:name="website"
android:value="www.crazyit.org"/>
</header>
<header
android:icon="@drawable/img3"
android:title="使用Intent"
android:summary="使用Intent启动Activity"
>
<intent android:action="android.intent.action.VIEW"
android:data="http://www.crazyit.org"
/>
</header>
PreferenceScreen有以下几个不同功能的控件:
PreferenceCategory分组
Preference 仅供显示的参数
CheckBoxPreference 单选按钮参数
EditTextPreference 文本编辑参数
ListPreference 列表参数
MultiSelectListPreference 多选框参数
RingtonePreference 铃声参数
SwitchPreference 切换开关参数
preference的参数会自动保存到/data/data/<应用程序包名>/shared_prefs路径下,文件名为<应用程序包名>_preferences.xml 根元素<map>
Activity mainfest.xml配置
<activity
android:name="" //activity的名子
android:icon //icon图标
android:label
android:exported="true" //true可以被其它应用调用启动
android:launchMode="singleInstance" //有这几个值standard singleTop singleTask,singleInstanc
/>
package shortcut.song.com.myapplication;import android.app.LauncherActivity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import java.lang.reflect.Array;public class DemoLauncherActivity extends LauncherActivity { String[] names = {"设置程序参数","查看星际宾种"}; Class<?>[] clazzs = {DemoExpandableListActivity.class,PreferenceActivityText.class}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_demo_launcher); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names); setListAdapter(adapter); } @Override protected Intent intentForPosition(int position) { return new Intent(DemoLauncherActivity.this, clazzs[position]); }}
package shortcut.song.com.myapplication;import android.app.ExpandableListActivity;import android.database.DataSetObserver;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.ExpandableListAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import org.w3c.dom.Text;public class DemoExpandableListActivity extends ExpandableListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_demo_expandable_list); ExpandableListAdapter adapter = new ExpandableListAdapter() { int[] logos = {R.drawable.img1, R.drawable.img2, R.drawable.img3}; private String[] armTypes = new String[]{"分组1", "分组2", "分组3"}; private String[][] arms = new String[][] { {"成员1", "成员2", "成员3", "成员4"}, {"成员21", "成员22", "成员23", "成员24"}, {"成员31", "成员32", "成员33"}, }; @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public int getGroupCount() { return armTypes.length; } @Override public int getChildrenCount(int groupPosition) { return arms[groupPosition].length; } @Override public Object getGroup(int groupPosition) { return armTypes[groupPosition]; } @Override public Object getChild(int groupPosition, int childPosition) { return arms[groupPosition][childPosition]; } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return true; } private TextView getTextView() { AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 46); TextView textView = new TextView(DemoExpandableListActivity.this); textView.setLayoutParams(lp); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(36, 0, 0, 0); textView.setTextSize(20); return textView; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { LinearLayout ll = new LinearLayout(DemoExpandableListActivity.this); ll.setOrientation(LinearLayout.HORIZONTAL); ImageView logo = new ImageView(DemoExpandableListActivity.this); logo.setImageResource(logos[groupPosition]); ll.addView(logo); TextView textView = getTextView(); textView.setText(getGroup(groupPosition).toString()); ll.addView(textView); return ll; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setText(getChild(groupPosition, childPosition).toString()); return textView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEmpty() { return false; } @Override public void onGroupExpanded(int groupPosition) { } @Override public void onGroupCollapsed(int groupPosition) { } @Override public long getCombinedChildId(long groupId, long childId) { return 0; } @Override public long getCombinedGroupId(long groupId) { return 0; } }; setListAdapter(adapter); }}
package shortcut.song.com.myapplication;import android.preference.PreferenceActivity;import android.preference.PreferenceFragment;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Button;import android.widget.Toast;import java.util.List;public class PreferenceActivityText extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_preference_text); if(hasHeaders()) { Button button = new Button(this); button.setText("设置操作按钮"); setListFooter(button); } } @Override public void onBuildHeaders(List<Header> target) { super.onBuildHeaders(target); loadHeadersFromResource(R.xml.preference_headers, target); } @Override protected boolean isValidFragment(String fragmentName) { // return true; } public static class Prefs1Frament extends PreferenceFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } public static class Prefs2Frament extends PreferenceFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.display_prefs); String website = getArguments().getString("website"); Toast.makeText(getActivity(), "Web:"+website, Toast.LENGTH_SHORT).show(); } }}
<?xml version="1.0" encoding="utf-8"?><preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 指定启动指定PreferenceFrament的列表项 --> <header android:fragment="shortcut.song.com.myapplication.PreferenceActivityText$Prefs1Frament" android:icon="@drawable/img1" android:title="程序先项设置" android:summary="设置应用的相关项选"/> <!-- 指定启动指定PreferenceFrament的列表项 --> <header android:fragment="shortcut.song.com.myapplication.PreferenceActivityText$Prefs2Frament" android:icon="@drawable/img2" android:title="界面选项设置" android:summary="界面相关的选项设置"> <!-- 使用extra可以向Activity 传入额外的数据 --> <extra android:name="website" android:value="www.crazyit.org"/> </header> <header android:icon="@drawable/img3" android:title="使用Intent" android:summary="使用Intent启动Activity" > <intent android:action="android.intent.action.VIEW" android:data="http://www.crazyit.org" /> </header></preference-headers>
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <RingtonePreference android:ringtoneType="all" android:title="Ring" 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:summary="自动保存" android:summaryOn="开启" android:summaryOff="关闭" android:defaultValue="true" /> </PreferenceCategory></PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="背光设置组"> <ListPreference android:key="light" android:title="灯光强度" android:summary="灯光强度调节" android:dialogTitle="请选择灯光" android:entries="@array/gender_name_list" android:entryValues="@array/gender_value_list" /> </PreferenceCategory> <PreferenceCategory android:title="文字显示组"> <SwitchPreference android:key="autoScrrol" android:title="自动滚屏" android:summaryOn="On" android:summaryOff="Off" android:defaultValue="true" /> </PreferenceCategory></PreferenceScreen>
<string-array name="gender_name_list"> <item>Name1</item> <item>Name2</item> <item>Name3</item> </string-array> <string-array name="gender_value_list"> <item>Value1</item> <item>Value2</item> <item>Value3</item> <item>Value4</item> <item>Value5</item> <item>Value6</item> </string-array>
LauncherActivity运行效果:
ExpandableListActivity运行效果:分组1、2、3都可以展开
PreferenceActivity运行效果:
- Android LauncherActivity,ExpandableListActivity,PreferenceActivity
- LauncherActivity,PreferenceActivity,ExpandableListActivity
- Android中LauncherActivity、PreferenceActivity、ExpandableListActivity的综合运用
- 【Android】Activity类及其子类:LauncherActivity、PreferenceActivity和ExpandableListActivity
- 4 LauncherActivity PreferenceActivity ExpandableActivity
- Android学习笔记八.LauncherActvity 之LauncherActivity、PreferenceActivity、PreferenceFragment
- activity的子类使用:launcheractivity和preferenceactivity
- Android-ExpandableListActivity
- android ExpandableListActivity
- Android UI ExpandableListActivity与ExpandableListActivity
- LauncherActivity
- Android ExpandableListActivity 学习笔记
- Android ExpandableListActivity 学习笔记
- Android基础之ExpandableListActivity
- [Android] ExpandableListActivity的使用
- Android开发--浅谈ExpandableListActivity
- (android 基础知识) ExpandableListActivity
- android ExpandableListActivity简介
- Android Studio 出现 Gradle's dependency cache may be corrupt 错误解决
- Ubuntu12.04安装AMD显卡声音设置问题解决方案
- 十万个为什么(java)
- C# 生成事件失败 提示“已退出 代码 4”问题解决
- C++作业4——循环结构程序设计
- Android LauncherActivity,ExpandableListActivity,PreferenceActivity
- 练习5
- CStatic使用总结
- Nginx初探
- angular 表格跨行
- CentOS安装jdk
- Android,App 常用图标尺寸规范
- ReactNative环境搭建与集成到自己android项目以及重新启动adb
- python--threading 多线程的简单应用