zoukankan      html  css  js  c++  java
  • Android 自定义Preference

    CustomPreference
    package com.rasa.game;

    import android.content.Context;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.content.res.TypedArray;
    import android.preference.Preference;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;

    public class CustomPreference extends Preference {
    private int mClickCounter = 100;
    private Button ok_button = null;

    // This is the constructor called by the inflater
    public CustomPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    setWidgetLayoutResource(R.layout.custom_preference);
    }

    @Override
    protected void onBindView(View view) {
    super.onBindView(view);

    // Set our custom views inside the layout
    final TextView myTextView = (TextView) view
    .findViewById(R.id.mypreference_widget);

    ok_button
    = (Button) view.findViewById(R.id.ok);
    ok_button.setOnClickListener(
    new OnClickListener() {

    @Override
    public void onClick(View v) {
    mClickCounter
    += 1;
    notifyChanged();
    // notify UI to refresh
    SharedPreferences sp = getSharedPreferences();
    Editor et
    = sp.edit();
    et.putInt(
    "mypreference_widget", mClickCounter);
    et.commit();
    }
    });
    if (myTextView != null) {
    SharedPreferences sp
    = getSharedPreferences();
    mClickCounter
    = sp.getInt("mypreference_widget", 200);
    myTextView.setText(String.valueOf(mClickCounter));
    }
    }

    @Override
    protected Object onGetDefaultValue(TypedArray a, int index) {
    return a.getInteger(index, 0);
    }

    @Override
    protected void onClick() {
    // TODO Auto-generated method stub
    int nKeep = mClickCounter + 1;
    callChangeListener(nKeep);
    // add lock
    mClickCounter = nKeep;
    persistInt(mClickCounter);
    notifyChanged();
    // notify UI to refresh
    super.onClick();
    }

    @Override
    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
    if (restoreValue) {
    // Restore state
    mClickCounter = getPersistedInt(mClickCounter);
    }
    else {
    // Set state
    int value = (Integer) defaultValue;
    mClickCounter
    = value;
    persistInt(value);
    }

    }


    }

      

    custom_preference.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id
    ="@+id/custompref" android:orientation="vertical"
    android:layout_width
    ="wrap_content" android:layout_height="wrap_content">
    <TextView android:id="@+id/mypreference_widget"
    android:layout_width
    ="wrap_content" android:layout_height="wrap_content"
    android:layout_gravity
    ="center_vertical" android:layout_marginRight="6sp"
    android:text
    ="Hello Kitty" android:focusable="false"
    android:clickable
    ="false" />
    <LinearLayout android:orientation="horizontal"
    android:layout_width
    ="wrap_content" android:layout_height="wrap_content">
    <Button android:id="@+id/ok" android:text="OK"
    android:layout_weight
    ="1.0" android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content" />
    <Button android:id="@+id/cancel" android:text="cancel"
    android:layout_weight
    ="1.0" android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content" />
    </LinearLayout>
    </LinearLayout>

      

    setting.xml
    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference android:key="music"
    android:title
    ="@string/music_title" android:summary="@string/music_summary"
    android:defaultValue
    ="true" />
    <CheckBoxPreference android:key="hints"
    android:title
    ="@string/hints_title" android:summary="@string/hints_summary"
    android:defaultValue
    ="true" />
    <PreferenceScreen android:key="detailSetting"
    android:title
    ="@string/detail_setting_title" android:summary="@string/detail_setting_summary">
    <CheckBoxPreference android:key="music1"
    android:title
    ="@string/music_title" android:summary="@string/music_summary"
    android:defaultValue
    ="true" />
    <CheckBoxPreference android:key="music2"
    android:title
    ="@string/music_title" android:summary="@string/music_summary"
    android:defaultValue
    ="true" />
    </PreferenceScreen>
    <PreferenceScreen android:key="customSetting"
    android:title
    ="@string/custom_setting_title" android:summary="@string/custom_setting_summary">
    <intent android:action="android.intent.action.MAIN"
    android:targetPackage
    ="com.rasa.game" android:targetClass="com.rasa.game.CustomSetting" />
    </PreferenceScreen>
    <com.rasa.game.CustomPreference
    android:key="my_preference" android:title="Advance Preference"
    android:summary
    ="You can custom design your prefrence UI"
    android:defaultValue
    ="100" />
    </PreferenceScreen>

      

  • 相关阅读:
    造轮子杂记2
    Net分布式系统之五:微服务架构
    C#设计模式:责任链模式
    NET Core1.0之CentOS平台开发控制台程序DEMO
    WCF Routing 服务
    设计模式之外观模式
    设计模式之简单工厂模式
    Eclipse快捷键总结
    Spring容器的初始化流程
    IOC容器的创建
  • 原文地址:https://www.cnblogs.com/myparamita/p/2174425.html
Copyright © 2011-2022 走看看