SeeBar改进为多项拖拽选择插件

1.报错问题为:error: No resource identifier found for attribute 'showAsAction' in package 'android'
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:title="@string/menu_save"
// This line //
android:showAsAction="ifRoom|withText" />
</menu>
android:showAsAction="nerver"报错的问题:需要修改为"ifRoom|withText"
2.借鉴文章:android三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现[http://www.cnblogs.com/zdz8207/archive/2012/06/27/seekbar_three.html]

3.多项拖拽选择的小插件
package com.example.muilterseekbartest;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.SeekBar;
//自定义SeekBar控件 能够拖拽 添加做多种选择
public class SeekBarTest extends SeekBar {
private int lastProgress = 15;
private int newProgress = 15;
private int n;
public SeekBarTest(Context context) {
this(context, null);
this.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
}
public SeekBarTest(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.seekBarStyle);
this.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
}
public SeekBarTest(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
}
private OnSeekBarChangeListener mOnSeekBarChangeListener=new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar paramSeekBar, int progress,
boolean fromUser) {
Log.i("onProgressChanged=","cc progress="+ progress + " lastProgress="+ lastProgress+" newProgress="+ newProgress);
if(progress >newProgress+10 || progress<newProgress-10){
newProgress = lastProgress;
paramSeekBar.setProgress(lastProgress);
return;
}
newProgress = progress;
}
public void onStartTrackingTouch(SeekBar paramSeekBar) {
Log.i("onStartTrackingTouch="," lastProgress="+ lastProgress+" newProgress="+ newProgress);
}
public void onStopTrackingTouch(SeekBar paramSeekBar) {
if(newProgress<30){
lastProgress = 15;
newProgress =15;
paramSeekBar.setProgress(0);
}else if(newProgress>30&&newProgress<60){
//设置lastProgress 要放在setProgress之前,否则可能导致执行多次onProgressChanged 改变了原值
lastProgress = 45;
newProgress = 45;
paramSeekBar.setProgress(45);
}else if(newProgress>60&&newProgress<90){
lastProgress = 75;
newProgress =75;
paramSeekBar.setProgress(75);
}
else if(newProgress>90&&newProgress<120){
lastProgress = 105;
newProgress =105;
paramSeekBar.setProgress(105);
}
else if(newProgress>120&&newProgress<150)
{
lastProgress = 135;
newProgress =135;
paramSeekBar.setProgress(135);
}
else if(newProgress>150)
{
lastProgress = 165;
newProgress =165;
paramSeekBar.setProgress(165);
}
Log.v("onStopTrackingTouch2="," lastProgress="+ lastProgress+" newProgress="+ newProgress);
}
};
}
布局配置文件:
<com.example.muilterseekbartest.SeekBarTest
android:id="@+id/seekBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="180"
android:progressDrawable="@drawable/seekbar_style"
android:thumb="@drawable/seekbar_thumb" />
更改SeekBar的样式文件:
seekbar_style.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@drawable/seekbar_bg"/>
<item
android:id="@android:id/progress"
android:drawable="@drawable/seekbar_bg"/>
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/seekbar_bg"/>
</layer-list>
seekbar_thumb.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态-->
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/thumb_normal" />
<!-- 普通无焦点状态 -->
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/thumb_normal" />
<!-- 有焦点状态-->
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/thumb_normal" />
<!-- 有焦点 -->
<item
android:state_focused="true"
android:drawable="@drawable/thumb_normal" />
</selector>

posted @ 2013-05-08 14:41  David.Yan.D.W  阅读(637)  评论(0编辑  收藏  举报