Android系统自带的SeekBar的样式比较单一,而且不同品牌手机被定制了之后样式也不一样,为了SeekBar的样式和应用的风格统一,就需要自定义SeekBar的样式,先看效果图:

<SeekBar

android:layout_width=”192dip”

android:layout_height=”wrap_content”

android:progressDrawable=”@drawable/seekbar_style”

android:thumb=”@drawable/thumb_bg”

android:id=”@+id/seekWeight”

android:max=”70″

android:paddingLeft=”17dip”

android:paddingRight=”17dip”

/>

1.改变按钮的样式。

这个很简单,直接则layout文件里指定android:thumb属性即可,如上面红色字体,需要注意的是SeekBar的宽的左右的padding一定要指定。

2.改变长条的颜色。

这里只需指定android:progressDrawable属性即可,下面是seekbar_style文件,放在drawable文件夹下。

<?xml version=”1.0″ encoding=”utf-8″?>

<layer-list xmlns:android=”http://schemas.android.com/apk/res/android”>

<item android:id=”@android:id/background”>

<shape>

<corners android:radius=”10dip” />

<gradient

android:startColor=”#d4d4d4″

android:centerColor=”#ffffff”

android:endColor=”#ffffff”

android:centerY=”0.45″

android:angle=”270″/>

</shape>

</item>

<item android:id=”@android:id/progress”>

<clip>

<shape>

<corners android:radius=”10dip” />

<gradient

android:startColor=”#ffd202″

android:centerColor=”#ffc004″

android:endColor=”#fbc600″

android:centerY=”0.45″

android:angle=”270″/>

</shape>

</clip>

</item>

</layer-list>

红色的<item android:id=”@android:id/background”>指定了SeekBar背景的颜色。android:startColor,android:centerColor,android:endColor分别指定了开始,中间,结尾的颜色,使SeekBar有了立体的效果。绿色的<item android:id=”@android:id/progress”>指定了SeekBar滚过的部分的颜色。

3.SeekBar上面动态变化的弹出框显示当前值。

原理是在SeekBar上面方一个TextView,在SeekBar的监听OnSeekBarChangeListener里动态改变TextView的layoutParams的leftMargin属性。

layout:

<LinearLayout

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:orientation=”vertical”

>

<TextView

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:background=”@drawable/bg_seektv”

android:textColor=”#000000″

android:textStyle=”bold”

android:id=”@+id/tvWeight”

android:gravity=”center”

android:layout_marginLeft=”7dip”

/>

<SeekBar

android:layout_width=”192dip”

android:layout_height=”wrap_content”

android:progressDrawable=”@drawable/seekbar_style”

android:thumb=”@drawable/thumb_bg”

android:id=”@+id/seekWeight”

android:max=”70″

android:paddingLeft=”17dip”

android:paddingRight=”17dip”

/>

</LinearLayout>

代码:

seekStrength.setOnSeekBarChangeListener(mSeekChange);

private OnSeekBarChangeListener mSeekChange = new OnSeekBarChangeListener() {

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

// TODO Auto-generated method stub

int iStrength = seekBar.getProgress() + 1;

LinearLayout.LayoutParams paramsStrength = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

paramsStrength.leftMargin = (int) ((iStrength-1)*5*fDensity+7*fDensity);

tvStrength.setLayoutParams(paramsStrength);

}

}

具体数值需要根据情况调整,大致思路就是这样。

更多相关文章

  1. Android(安卓)SDK开发 (三) App的属性配置
  2. Android(安卓)自定义View练手Demo(一)实现圆角遮罩效果
  3. Android控件 vs Flutter控件
  4. Android设置选项开发及自定义Preference样式
  5. Android(安卓)的属性动画的实现和使用详解
  6. Android通过设置颜色的透明度来获取颜色值
  7. android:windowSoftInputMode属性使用心得
  8. Android(安卓)---Application 开发中共享全局数据
  9. Android中List的padding设置

随机推荐

  1. android与Unity3d交互
  2. Android实现录屏直播(二)需求才是硬道理之
  3. Android签名证书生成
  4. Android有用代码片段2
  5. 【android】用camera实现view的伪3D的效
  6. H5调用Android原生Api
  7. Android View绘制及事件(一)屏幕的视图层级
  8. android sdk 中apidemo如何加载到eclipse
  9. Android(安卓)studio导入eclipse项目
  10. TextView属性大全!技术干货