`
skewen
  • 浏览: 74638 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

android 自定义SeekBarPreference 实现

阅读更多



由于网上有很多人问到SeekBarPreference怎么去实现,今天将这个效果做出来,本例子并没有真正的改变屏幕亮度,如果真正想去实现,那么可以在这个类中onProgressChanged()方法或者onDialogClosed()方法中写上自己调节亮度的代码,并将这些值保存起来。

1.首先定义一个类SeekBarPreference继承于DialogPreference的类:

package com.kewen.systeminfo;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SeekBarPreference extends DialogPreference implements
		OnSeekBarChangeListener {
	private SeekBar seekBar;
	private TextView textView;

	public SeekBarPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onBindDialogView(View view) {
		// TODO Auto-generated method stub
		super.onBindDialogView(view);
		seekBar = (SeekBar) view.findViewById(R.id.seekBar1);
		textView = (TextView) view.findViewById(R.id.textView1);
		seekBar.setOnSeekBarChangeListener(this);
	}

	@Override
	protected void onDialogClosed(boolean positiveResult) {
		// TODO Auto-generated method stub
		if (positiveResult) {
			Log.i("Dialog closed", "You click positive button");
		} else {
			Log.i("Dialog closed", "You click negative button");
		}
	}

	@Override
	public void onProgressChanged(SeekBar seekBar, int progress,
			boolean fromUser) {
		textView.setText(progress + "%  " + progress + "/100");

	}

	@Override
	public void onStartTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onStopTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub

	}

}

 

2.以上实现的为一个对话框式的Preference,也就是SeekBar将会旋转在一个DialogPreference上,以下为DialogPreference的dialogLayout文件:

<?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">

	<SeekBar android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:id="@+id/seekBar1"
		android:layout_marginLeft="20dip" android:layout_marginRight="10dip"
		android:max="100" android:progress="60"></SeekBar>
	<TextView android:text="TextView" android:id="@+id/textView1"
		android:layout_height="wrap_content" android:layout_width="fill_parent"
		android:layout_marginLeft="20dip" ></TextView>
</LinearLayout>

 

3.将写好的自定义Preference类放到定义preference的xml文件中:

<com.kewen.systeminfo.SeekBarPreference
 android:dialogTitle="亮度调整" android:title="调整亮度" 
 android:summary="调整屏幕的亮度"  android:key="light" 
 android:dialogLayout="@layout/seekbar">
</com.kewen.systeminfo.SeekBarPreference>

 以上三步为实现这个效果的关键代码,以下还会有DatePickerPreference、TimePickerPreference出现

  • 大小: 35.2 KB
0
0
分享到:
评论

相关推荐

    Android代码-SeekBarPreference

    `SeekBarPreference`是Android开发中一个自定义控件,它扩展了系统提供的`Preference`类,为用户界面添加了一个可以滑动调整值的条形进度条。在Android原生的`Preference`库中,虽然提供了诸如`SeekBar`的组件,但...

    android_support_v7

    Android Support Library是一个重要的工具集,它为Android开发者提供了在不同版本的Android系统上实现向后兼容的功能。在给定的压缩包"android_support_v7"中,包含了多个关键的库,如V4和V7系列,这些库极大地扩展...

    Android中PreferenceSetting的小实例源码

    8. **适配不同的Android版本**:不同Android版本可能对设置界面的实现有些差异,需要确保代码兼容各种API级别。 总的来说,`BrightnessPreferenceSetting`实例展示了如何利用Android的Preference机制创建自定义设置...

    AndroidSeekBarPreference:提供首选项,该首选项允许从SeekBar中选择一个值。-开源

    “ AndroidSeekBarPreference”是一个Android库,提供了Preference实现,该实现允许通过SeekBar从连续范围中选择浮点值或整数值。 与首选项交互时,对话框中会显示SeekBar。 如果用户确认,所选值将仅保留。 可通过...

    Android应用源码之精仿QQ设置界面.zip

    源码中可能会包含多个自定义的`Preference`类,比如`SwitchPreference`用于开关按钮,`SeekBarPreference`用于滑动条等,它们扩展了基本的`Preference`功能,提供了更丰富的UI和交互。 2. **布局设计**: QQ的设置...

    Android Preference

    使用`SwitchPreferenceCompat`和`SeekBarPreference`等可以提供与Material Design风格一致的用户界面。 9. **PreferenceFragmentCompat与PreferenceFragment**的区别: - `PreferenceFragment`是Android早期版本...

    Preference demo

    - 添加OnPreferenceClickListener:监听Preference的点击事件,可以实现自定义行为。 4. **PreferenceFragment和PreferenceFragmentCompat**: - 在API 11及以上版本,可以使用PreferenceFragment来展示设置界面...

    AndroidMaterialPreferences:提供各种“ Material Design”样式的首选项

    “ AndroidMaterialPreferences”是一个Android库,它提供了各种首选项,这些首选项是根据Android 5的Material Design指南设计的,即使在棒棒糖之前的设备上也是如此。 该库提供以下首选项: 首选项,允许显示...

Global site tag (gtag.js) - Google Analytics