疯狂Android讲义(第3版)学习笔记(第四章---Activity与Fragment)

来源:互联网 发布:windows优化大师固态 编辑:程序博客网 时间:2024/05/22 14:29

1,PreferenceActivity和ExpandableListActivity的使用

  PreferenceActivity主要用于显示一个显示设置选项参数并进行保存的窗口,ExpandableListActivity主要用于显示一个可展开的列表窗口

// PreferenceActivityTestimport android.content.SharedPreferences;import android.os.Bundle;import android.preference.EditTextPreference;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceFragment;import android.preference.PreferenceScreen;import android.widget.Button;import android.widget.Toast;import java.util.List;/** * PreferenceActivity是通过选项设置的布局文件,以PreferenceScreen作为根元素 * 并结合PreferenceFragment使用,其中Activity负责加载列表布局,Fragment负责加载选项布局 */public class PreferenceActivityTest extends PreferenceActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 为界面设置一个标题按钮        if(hasHeaders()){            Button btn = new Button(this);            btn.setText("设置操作");            // 将按钮添加到界面            setListFooter(btn);        }    }    /**     * 重写该方法,用于加载界面布局文件     */    @Override    public void onBuildHeaders(List<Header> target) {        loadHeadersFromResource(R.xml.preference_headers , target);    }    /**     * 重写该方法,验证各PreferenceFragment是否有效     */    @Override    protected boolean isValidFragment(String fragmentName) {        return true;    }    /**     * 创建Prefs1Fragment和Prefs2Fragment两个类     * 点击header出现的两个Fragment 在header里面设置对应的Fragment     */    public static class Prefs1Fragment extends PreferenceFragment{        private SharedPreferences mSp;        @Override        public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            addPreferencesFromResource(R.xml.prefs);            initData();        }        private void initData() {            PreferenceScreen ps = getPreferenceScreen();            Preference pName = ps.findPreference("name");            EditTextPreference etp = (EditTextPreference) pName;            etp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {                @Override                public boolean onPreferenceChange(Preference preference, Object newValue) {                    String name = mSp.getString("name", "");                    Toast.makeText(getActivity(), "name:" + name, Toast.LENGTH_SHORT).show();                    return true;                }            });        }    }    public static class Prefs2Fragment extends PreferenceFragment{        @Override        public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            addPreferencesFromResource(R.xml.display_prefs);            // 获取传入该Fragment的参数            String website = getArguments().getString("website");            Toast.makeText(getActivity(), "网站的域名是:" + website , Toast.LENGTH_SHORT).show();        }    }}----------------------------------------------------------------------------------------// (xml)preference_headers.xml// 加载activity的界面布局<?xml version="1.0" encoding="utf-8"?><preference-headers    xmlns:android="http://schemas.android.com/apk/res/android">    <!--指定PreferenceFragment的列表项-->    <header android:fragment="com.zhumei.activity.PreferenceActivityTest$Prefs1Fragment"            android:icon="@mipmap/a"            android:title="小鸡相关设置"            android:summary="设置小鸡相关选项"/>    <header android:fragment="com.zhumei.activity.PreferenceActivityTest$Prefs2Fragment"            android:icon="@mipmap/b"            android:title="螃蟹相关设置"            android:summary="设置螃蟹相关选项">        <extra            android:name="website"            android:value="www.zhumei.net"/>    </header>    <header        android:icon="@mipmap/c"        android:title="使用Intent"        android:summary="使用Intent启动某个Activity">        <intent android:action="android.intent.action.VIEW"                android:data="http://www.zhumei.net/"/>    </header></preference-headers>----------------------------------------------------------------------------------------// (xml)prefs.xml和(xml)display_prefs.xml// 加载fragment的界面布局<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">    <!--设置系统铃声-->    <PreferenceCategory        android:title="铃声选择设置">        <RingtonePreference            android:key="ring_key"            android:ringtoneType="all"            android:showDefault="true"            android:showSilent="true"            android:summary="选择铃声(设置RingtonePreference)"            android:title="设置铃声"/>    </PreferenceCategory>    <PreferenceCategory        android:title="英雄选择设置">        <MultiSelectListPreference            android:dialogTitle="你最喜欢的英雄为:"            android:entries="@array/hero_name_list"            android:entryValues="@array/hero_value_list"            android:key="hero"            android:summary="选择英雄(设置MultiSelectListPreference)"            android:title="设置你最喜欢的英雄"/>    </PreferenceCategory>    <PreferenceCategory        android:title="帐号信息设置">        <!--通过输入框填写用户名-->        <EditTextPreference            android:dialogTitle="您所使用的用户名为:"            android:key="name"            android:summary="填写您的用户名(测试EditTextPreference)"            android:title="填写用户名"/>    </PreferenceCategory>    <PreferenceCategory        android:title="性别设置">        <ListPreference            android: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="系统功能设置">        <CheckBoxPreference            android:defaultValue="true"            android:key="autoSave"            android:summaryOff="自动保存:关闭(测试CheckBoxPreference)"            android:summaryOn="自动保存:开启(测试CheckBoxPreference)"            android:title="自动保存进度"/>    </PreferenceCategory>    <PreferenceCategory        android:title="定时开关机设置">        <SwitchPreference            android:defaultValue="true"            android:key="timingStartStop"            android:summaryOff="定时开关机:打开(测试SwitchPreference)"            android:summaryOn="定时开关机:关闭(测试SwitchPreference)"            android:title="设置定时开关机"/>    </PreferenceCategory></PreferenceScreen>----------------------------------------------------------------------------------------// (values)array.xml// 加载fragment设置选项entries和entryValues中的集合<resources>    <string-array name="light_strength_list">        <item>暗</item>        <item>亮</item>        <item>超亮</item>    </string-array>    <string-array name="light_value_list">        <item>暗</item>        <item>亮</item>        <item>超亮</item>    </string-array>    <string-array name="gender_name_list">        <item>男</item>        <item>女</item>        <item>未知</item>    </string-array>    <string-array name="gender_value_list">        <item>男</item>        <item>女</item>        <item>未知</item>    </string-array>    <string-array name="hero_name_list">        <item>墨菲特</item>        <item>阿木木</item>        <item>厄加特</item>    </string-array>    <string-array name="hero_value_list">        <item>墨菲特</item>        <item>阿木木</item>        <item>厄加特</item>    </string-array></resources>----------------------------------------------------------------------------------------// MainActivityimport android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.preference.PreferenceManager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button mBtn1;    private Button mBtn2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mBtn1 = (Button) findViewById(R.id.btn1);        mBtn2 = (Button) findViewById(R.id.btn2);        mBtn1.setOnClickListener(this);        mBtn2.setOnClickListener(this);    }    @Override    protected void onResume() {        super.onResume();        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);        // 获取到的是entryValues(存储在数据库中的内容,而entry是显示给用户看的内容)        // 这里的键就是Preference里面的key        String gender = sp.getString("gender", "");        Toast.makeText(MainActivity.this, "gender:" + gender, Toast.LENGTH_SHORT).show();    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.btn1:                Intent intent1 = new Intent(MainActivity.this , ExpandableListActivityTest.class);                startActivity(intent1);                break;            case R.id.btn2:                Intent intent2 = new Intent(MainActivity.this , PreferenceActivityTest.class);                startActivity(intent2);                break;            default:                break;        }    }}----------------------------------------------------------------------------------------// activity_main<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.zhumei.activity.MainActivity">    <Button        android:id="@+id/btn1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textAllCaps="false"        android:text="to ExpandableListActivityTest"/>    <Button        android:id="@+id/btn2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textAllCaps="false"        android:text="to PreferenceActivityTest"/></LinearLayout>

  Demo下载请移步:http://download.csdn.net/download/zxc514257857/9960343

阅读全文
0 0
原创粉丝点击