`
weicaijin8
  • 浏览: 34264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android PrefeneceActivity知识小结

阅读更多
1.PrefeneceActivity都提供了哪几种元素可供使用

      image

各个对象的继承关系(看sdk api)
Preference ---> CheckBoxPreference
DialogPreference -------> EditTextPreference, ListPreference,
PreferenceGroup -------> PreferenceCategory, PreferenceScreen
RingtonePreference

1)PreferenceScreen:PreferenceActivity的根元素,必须为它。

2)PreferenceCategory:用于分组。效果如下:

          image

3)Preference:只进行文本显示,需要与其他进行组合使用。

           image

系统提供几种标准的preference:(扩展自preference)

CheckBoxPreference:CheckBox选择项,对应的值的ture或flase。如图:

            image

EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。

    image

ListPreference: 列表选择,弹出对话框供选择。

    image

RingtonePreference:系统玲声选择。

         image

如果自己对这些系统样式还不满足,自己可以对preference进行扩展.如下图的扩展效果:

   

(请看中间选项的效果,在右边显示当前选择的图片。)

该效果代码如下:
复制代码
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;

/**
* 图片选项,用于设置图片和边框
* @author Winter Lau
*/
publicclass ImageOptionPreference extends Preference {

private PreferenceActivity parent;
privateint mImage = R.drawable.car;
private ImageView preview_img;

public ImageOptionPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public ImageOptionPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}

public ImageOptionPreference(Context context) {
super(context);
}

void setActivity(PreferenceActivity parent) {
this.parent = parent;
}

@Override
publicboolean isPersistent() {
returnfalse;
}

/**
* 修改图片
* @param newImage
* @return
*/
boolean ChangeGamePic(int newImage ){
if(this.mImage == newImage)
returnfalse;
GameGlobal.save_pic(newImage);
this.mImage = newImage;
preview_img.setImageResource(newImage);
returntrue;
}

@Override
protectedvoid onBindView(View view) {
super.onBindView(view);

this.mImage = GameGlobal.get_pic();
preview_img = (ImageView)view.findViewById(R.id.pref_current_img);
preview_img.setImageResource(this.mImage);
}

@Override
protectedvoid onClick() {
super.onClick();
Bundle bundle =new Bundle();
bundle.putInt(GameGlobal.PREF_KEY_IMAGE, this.mImage);
Intent intent =new Intent(parent, ImageSelector.class);
intent.putExtras(bundle);
parent.startActivityForResult(intent, MagicSetting.REQUEST_CODE_GAME_IMAGE);
}

}
复制代码

对应的 Perference 配置信息如下:(在res/xml/preference.xml)
复制代码
<com.liusoft.android.fmagic.ImageOptionPreference
android:key="game_pic"
android:persistent="false"
android:title="@string/pref_pic_title"
android:summary="@string/pref_pic_summary"
android:widgetLayout="@layout/preference_widget_image"
/>
复制代码

而 preference_widget_image 的信息如下:(在res/layout/preference_widget_image.xml)
复制代码
<?xml version="1.0" encoding="utf-8"?>

<!-- Layout used by ImageOptionPreference for the image option style.
This is inflated inside android.R.layout.preference.
-->
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pref_current_img"
android:layout_width="54dip"
android:layout_height="54dip"
android:layout_marginRight="4dip"
android:layout_gravity="center_vertical"
android:focusable="false"
android:clickable="false"
android:background="#eeeeee"
android:padding="2dip"
/>
复制代码

该例子代码转载自:http://www.oschina.net/question/12_2175


2.自定义Preference样式,PreferenceActivity中添加普通view组件

在一个集成PreferenceActivity的类中,可以通过

addPreferencesFromResource(R.xml.preference);加载preference控件

还可以通过setContentView(R.layout.preference_layout)来自定义preference内容。

案例:现在想在PreferenceActivity添加一个Button

1)、新建一个Layout,文件名为set_preference_main.xml,文件内容如下:
复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button"></Button>

<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
复制代码
其中Button为自己需要添加的view,ListView会被R.xml.preference的preferences替换。
注意其中ListView的android:id="@android:id/list"必须,且不可改变。
(特别注意,一定要加这个listview控件,不然运行后会出错,而且可以通过这个listview控件来定义样式,如透明之类的!!)

其实可以理解为:preference就是一个listview。

2)、在Activity的onCreate中添加:
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preference);
setContentView(R.layout.set_preference_main);
}

注意其中setContentView(R.layout.set_preference_main);表示加载set_preference_main.xml内容到content中
分享到:
评论

相关推荐

    Android基础知识点总结

    文件是chm格式的,类似于Java的帮助文档,是我从开始接触Android,一点一滴总结Android的技术知识,总的来说是适合初学者来学习的,而且这个chm文档搜索功能相当强大,搜索某个关键词就可以搜索到对应的知识

    android基本知识点总结

    ### Android基本知识点总结 在移动应用开发领域,Android操作系统占据着举足轻重的地位。为了更好地理解和掌握Android应用开发的基本原理和技术,以下是对Android基础知识的一个系统性总结。 #### 一、Android四大...

    Android知识系统总结

    Android知识系统总结是一个涵盖广泛的主题,它涉及到Android操作系统的核心概念、开发环境的搭建、应用程序的结构、用户界面设计、数据存储、网络通信、多线程处理、性能优化等多个方面。以下是对这些关键知识点的...

    Android开发知识点总结[参考].pdf

    在Android开发中,掌握一些关键知识点对于提升应用质量和用户体验至关重要。以下是一些核心要点的详细说明: 1. **获取标题栏和状态栏高度** - 状态栏高度获取:通过`getWindow().getDecorView()....

    android基础知识点总结

    《Android基础知识点总结》 Android开发是移动应用领域的重要组成部分,掌握其基础知识是成为合格Android开发者的第一步。本文将从快捷键使用、环境配置、UI界面设计等方面进行深入阐述。 一、快捷键操作 快捷键...

    Android 核心知识点笔记.pdf

    精致排版,没有广告 大纲: 一、Java知识点汇总 二、Android知识点汇总 三、Android扩展知识点 四、Android开眼库源码分析 五、设计模式汇总 六、Gradle知识点汇总 七、常见面试算法题汇总

    Android开发知识点总结

    Android 开发知识点总结 Android 安全性简介 Android 开发中,安全性是非常重要的一个方面,需要处理多个与安全性相关的方面,包括应用程序进程和沙箱、代码和数据共享、通过应用程序签名达到的系统保护,以及权限...

    android基本知识点总结.doc

    Android 基本知识点总结 Android 作为一款流行的移动操作系统,拥有庞大的用户群体和开发者群体。了解 Android 的基本知识点对开发者来说至关重要。本文总结了 Android 的四大组件、Activity 生命周期、横竖屏切换...

    android基本知识点总结.pdf

    Android 基本知识点总结 Android 作为一款流行的移动操作系统,具有广泛的应用前景。学习 Android 需要掌握多方面的知识点,本文将对 Android 的基本知识点进行总结。 一、Android 四大组件 Android 应用程序主要...

    Android入门到精通知识总结.pdf

    以上只是对Android开发中一些基础和关键知识点的概述,实际开发中还需要深入学习更多高级主题,如Fragment、服务(Service)、广播接收器(BroadcastReceiver)、通知(Notification)、数据库(SQLite)、异步任务...

    Android进阶知识点一

    在“Android进阶知识点一”这个主题中,我们主要探讨的是Android应用开发的高级概念,特别是在使用Android Studio作为开发环境时遇到的各种技术和实践。这个知识判断器可能是一个小型的交互式应用,它根据用户的选择...

    Android核心知识点笔记V2020.03.30.zip

    收集的Android核心知识点笔记,JAVA知识点汇总、Android知识点汇总、Android拓展知识点、Android开源库源码分析、设计模式汇总、Gradle知识点汇总、常见面试算法题汇总。Android

    学习android需要的Java知识点列表.pdf

    ### 学习Android所需Java知识点概述 为了更好地掌握Android开发技术,深入了解并熟练掌握Java语言是必不可少的基础之一。本文将根据“学习android需要的Java知识点列表”中的内容,详细阐述学习Android开发过程中...

    android4.1.2知识点总结

    在Android 4.1.2的知识点中,我们主要探讨的是Android系统开发的相关内容,包括SDK的文件结构、Android项目的构建、程序的安装过程、ADB工具的使用以及具体的应用实例,如电话拨号器的实现。 首先,Android SDK的...

    android基础知识总结

    ### Android基础知识总结与面试要点详解 #### 一、Android架构概览 Android系统采用分层设计,主要包括五层:应用程序层、应用程序框架层、库和Android运行时、Linux内核。其中,应用程序层包含了预装的应用如电话...

    android开发知识点汇总

    在Android开发领域,掌握关键知识点是提升开发效率和产品质量的关键。以下是对标题“android开发知识点汇总”和描述中提到的一些重要技术点的详细解析: 1. **知识库.txt**: 这个文件可能包含了Android开发的基础...

    Android开发知识点总结.pdf

    Android开发知识点总结 本文总结了 Android 开发中的多个知识点,包括获取标题栏和状态栏高度、让 EditTextView 不能输入的方法、全屏问题的解决方案、设置控件是否显示的属性设置、避免软键盘挡上输入框等。 一、...

    Android核心知识点笔记.pdf

    Android核心知识点笔记

Global site tag (gtag.js) - Google Analytics