b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

preferenceactivity_安卓content provider_edittextpreference(4)

电脑杂谈  发布时间:2017-06-15 17:00:41  来源:网络整理

通过第二个方法,我们可以方便的通知到Listener,告诉它,SeekBar的值有变化。这里我们把SeekBar的值,即progress看做是SeekBarPreference的value。除了这两个方法之外,就是要增加setValue和getValue两个方法了。

如果不看代码的话,就会有疑问:SeekBar是如何进入Diglog的呢?它正式通过DialogPreference的属性android:dialogLayout得以注入:

<net.poemcode.android.config.SeekBarPreference
	android:key="@string/setting_handwrite_width_key"
        android:title="@string/setting_handwrite_width_title"
        android:dialogTitle="@string/setting_handwrite_width_title"
        android:dialogLayout="@layout/setting_widthseekbar"
        android:persistent="true"/>

依此原理,可以举一反三,对于如何实现选择颜色是不是有了思路?

首先实现一个视图,负责展现不同颜色和接收用户选中的颜色,其可以从SeekBarPreference中的内部类ColorPickerView加以改造完成;然后新增一个布局文件,将刚才的视图加入到布局当中;接着继承DialogPreference实现自己的Preference子类ColorPickerPreference;最后在XML文件里增加这个Preference并把刚才的布局文件通过dialogLayout属性加入进去。从而实现了整个功能。

public class SeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener {
 
    private static final String TAG = "SeekBarPreference";
 
    private SeekBar bar;
 
    private int barValue;
 
    public SeekBarPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    @Override
    protected void onBindDialogView(View view) {
        super.onBindDialogView(view);
 
        bar = (SeekBar) view.findViewById(R.id.seekbar);
        bar.setOnSeekBarChangeListener(this);
        bar.setProgress(barValue);
    }
 
    public void setValue(int value) {
        barValue = value;
    }
 
    public int getValue() {
        return barValue;
    }
 
    @Override
    protected void onDialogClosed(boolean positiveResult) {
        if (positiveResult) {
            this.getOnPreferenceChangeListener().onPreferenceChange(this, barValue);
        }
    }
 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        Log.d(TAG, "onProgressChanged, progress : " + progress + ", fromUser : " + fromUser);
    }
 
    public void onStartTrackingTouch(SeekBar seekBar) {
        Log.d(TAG, "onStartTrackingTouch");
    }
 
    public void onStopTrackingTouch(SeekBar seekBar) {
        barValue = seekBar.getProgress();
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-52957-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...