public class SoundSeekBar extends View{ /** * 当前值 */ private int percentage=0; /** * 左右间距 */ private int padding=10; /** * 画笔 */ Paint myPaint=new Paint(); /** * 当前值监听接口 */ private OnPercentageChangeListener myOnPercentageChangeListener; public int getPercentage() { return percentage; } public void setPercentage(int percentage) { this.percentage = percentage; } public int getPadding() { return padding; } public void setPadding(int padding) { this.padding = padding; } public SoundSeekBar(Context context) { super(context); } public SoundSeekBar(Context context, AttributeSet attrs) { super(context, attrs); } public SoundSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setOnPercentageChangeListener(OnPercentageChangeListener onPercentageChangeListener) { this.myOnPercentageChangeListener=onPercentageChangeListener; }; @Override protected void onDraw(Canvas canvas) { myPaint.setColor(0xffdcdcdc); myPaint.setStyle(Paint.Style.FILL); Path backPath=new Path(); // 去锯齿 myPaint.setAntiAlias(true); backPath.moveTo(padding, getHeight()); backPath.lineTo(getWidth()-padding, 0); backPath.lineTo(getWidth()-padding, getHeight()); backPath.close(); canvas.drawPath(backPath, myPaint); Path percentagePath = new Path(); percentagePath.moveTo(0, getHeight()); percentagePath.lineTo(padding+(getWidth()-2*padding) * percentage / 100, getHeight()); percentagePath.lineTo(padding+(getWidth()-2*padding) * percentage / 100, getHeight()*(float)(1-(percentage/100.0))); percentagePath.close(); myPaint.setColor(0xffff0000); canvas.drawPath(percentagePath,myPaint); super.onDraw(canvas); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_DOWN ||event.getAction()==MotionEvent.ACTION_MOVE) { int per=(int)(((event.getX()-padding-getX())/(float)(getWidth()-2*padding))*100); if (percentage != per && per >= 0 && per <= 100) { percentage = per; postInvalidate(); } else if(percentage>100) { percentage = 100; postInvalidate(); }else if(percentage<0) { percentage=0; postInvalidate(); } if(myOnPercentageChangeListener!=null) { myOnPercentageChangeListener.onPercentagerChange(percentage); } } return true; } public interface OnPercentageChangeListener { public void onPercentagerChange(int percentage) ; } }
Android自定义音量条控件
最新推荐文章于 2024-07-10 03:19:16 发布