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运行效果:




0 0
原创粉丝点击