简单自定义拖动条

开发音乐播放器要一个拖动条显示播放位置, 系统那个拖动条大了根本不能用。

 

图片

 

android:minHeight="2pt"
  android:maxHeight="2pt"
只把那个拖动条高度改变了, 那个拖动按钮一样的东西死都不变小。 网上说可以自定义的。直接重画那个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"  >
        <shape android:shape="oval"> 
            <gradient android:type="radial" android:gradientRadius="8" 
                android:angle="0" android:startColor="#FFFF0000" 
                android:centerColor="#FF00FF00" android:endColor="#000000" /> 
            <size android:width="16dip" android:height="100dip"></size> 
        </shape> 
       
    </item> 
</selector>



可是我就不明白那个item里面的东西该如何定义。下午看了一个下午的源码

    public SeekBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

调用
 
public AbsSeekBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

        TypedArray a = context.obtainStyledAttributes(attrs,
                com.android.internal.R.styleable.SeekBar, defStyle, 0);
        Drawable thumb = a.getDrawable(com.android.internal.R.styleable.SeekBar_thumb);
        setThumb(thumb); // will guess mThumbOffset if thumb != null...
        // ...but allow layout to override this
        int thumbOffset = a.getDimensionPixelOffset(
                com.android.internal.R.styleable.SeekBar_thumbOffset, getThumbOffset());
        setThumbOffset(thumbOffset);
        a.recycle();

        a = context.obtainStyledAttributes(attrs,
                com.android.internal.R.styleable.Theme, 0, 0);
        mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);
        a.recycle();

        mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    }



调用父类的一个构造函数  在这里面看的了
Drawable thumb = a.getDrawable(com.android.internal.R.styleable.SeekBar_thumb);
        setThumb(thumb); // will guess mThumbOffset if thumb != null...

看了drawable里面的com.android.internal.R.styleable.SeekBar_thumb
 
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />

</selector>


文件中@drawable/seek_thumb_normal这些让我迷糊了 ,里面的文件映射到什么地方呢, 在eclipse里面找了
res里面 双击 打不开。  当时就郁闷了   明明是一个png文件怎么打不开呢 !弄了好久还以为是android系统文件 但系统目录下找到了一个system.img 文件还以为源文件在里面  捣鼓了半天打不开,网上差说rar可以打开  狗屁  是linux里面文件  晕了  差点就想把自己电脑给换系统
   本想放弃了,在回到eclipse里面的时候再打开 认真看了错误原因那段英文  说叫我去源文件那边打开 在左下角看有个路径  干  android.jar
打开文件  终于找到了。就几张图片  搞了我半天
   那个拉动按钮是引用这边的图片, 我马上把图片copy出来 自己直接改小
 在布局文件中引用自己的图片  运行调试  ok 
 

 


    <SeekBar
           android:id="@+id/musicSeek"
           style="@android:style/Widget.SeekBar"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:thumb="@drawable/seek_thumb_pressed"
           android:minHeight="2pt"
           android:maxHeight="2pt"
           android:paddingLeft="6pt"
           android:paddingRight="6pt"
           />
        
       



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值