android 自定义SeekBarPreference 实现

本文详细介绍了如何使用自定义的SeekBarPreference组件来创建一个亮度调节对话框。通过继承DialogPreference并实现OnSeekBarChangeListener接口,文章提供了完整的代码示例,包括布局文件及Preference配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



由于网上有很多人问到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出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值