关于Android怎么改变ProgressBar进度条颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Android怎么改变ProgressBar进度条颜色相关的知识,希望对你有一定的参考价值。
参考技术A 需求:下载中的颜色要自定义,要替换为另外的一个颜色方法:就是在
<ProgressBar
android:layout_weight="1"
android:id="@+id/download_item_progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="15dip"
android:progressDrawable="@drawable/progressbar_style"></ProgressBar>
在drawable中新建一个progressBar_style.xml文件,
这个属性进行设置,有两个方案:
第一,设置两张图片:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="">
<item android:id="@android:id/background"
android:drawable="@drawable/progressbar_not" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/progressbar_not">
</item>
<item android:id="@android:id/progress"
android:drawable="@drawable/progressbar_selected">
</item>
</layer-list>
第二种,设置背景颜色:
<?xml version="1.0" encoding="utf-8"?>
<item android:id="@android:id/background"
>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#666666"
android:centerColor="#666666"
android:centerY="0.75"
android:endColor="#666666"
android:angle="270"
/>
</shape>
</item>
<item android:id="@android:id/progress"
>
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#da1f3e"
android:centerColor="#da1f3e"
android:centerY="0.75"
android:endColor="#da1f3e"
android:angle="270"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/secondaryProgress"
>
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#fed7ec"
android:centerColor="#fed7ec"
android:centerY="0.75"
android:endColor="#fed7ec"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
其中的属性还要进一步研究具体作用,据文档翻译有设置角度,渐变的。本回答被提问者和网友采纳
android关于自定义seekbar控件的问题(将横向seekbar改成竖向seekbar)
自定义了个seekbar,将横向的seekbar改为了竖向的seekbar,目前只支持触摸,但是用遥控器控制时候按上下按钮没响应,按下左右按钮seekbar才会被拖动 追了下代码seekbar继承自AbsSeekbar,AbsSeekBar继承自progressBar,ProgressBar继承自View,我该如何实现将按下左右键seekbar的progress值发生改变改为按下上下键seekbar的progress值发生改变?以下是我写的自定义seekbar的代码:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.SeekBar;
public class VerticalSeekBarTwo extends SeekBar
public VerticalSeekBarTwo(Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
public VerticalSeekBarTwo(Context context, AttributeSet attrs)
super(context, attrs);
// TODO Auto-generated constructor stub
public VerticalSeekBarTwo(Context context)
super(context);
// TODO Auto-generated constructor stub
protected void onSizeChanged(int w, int h, int oldw, int oldh)
super.onSizeChanged(h, w, oldh, oldw);
@Override
protected synchronized void onMeasure(int widthMeasureSpec,
int heightMeasureSpec)
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
protected void onDraw(Canvas c)
c.rotate(-90);
c.translate(-getHeight(), 0);
super.onDraw(c);
@Override
public synchronized void setProgress(int progress)
super.setProgress(progress);
onSizeChanged(getWidth(), getHeight(), 0, 0);
@Override
public boolean onTouchEvent(MotionEvent event)
if (!isEnabled())
return false;
switch (event.getAction())
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
setProgress(getMax()
- (int) (getMax() * event.getY() / getHeight()));
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
return true;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if (isEnabled())
int progress = getProgress();
switch (keyCode)
case KeyEvent.KEYCODE_DPAD_UP:
if (progress <= 0) break;
setProgress(progress - 1);
return true;
case KeyEvent.KEYCODE_DPAD_DOWN:
if (progress >= getMax()) break;
setProgress(progress + 1);
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
break;
return super.onKeyDown(keyCode, event);
然后看看按键值是不是跟你写的对应追问
谢谢你了,自己搞反了,已经解决了,话说现在这百度知道的效果不行啊,这问题上周发出去的。
追答我没注意时间。。。
以上是关于关于Android怎么改变ProgressBar进度条颜色的主要内容,如果未能解决你的问题,请参考以下文章
Android笔记:根据进度代码改变progressbar背景颜色,ClipDrawable,LayerDrawable,setProgressDrawable