Android SeekBar显示进度在thumb上
来源:互联网 发布:linux svn 上传文件 编辑:程序博客网 时间:2024/04/29 18:08
参考:
参考进行了修改
参考网上的一个项目进行了修改,只保留了两个按钮,和一个进度条,可以显示进度到拖动按钮,效果如下:
xml布局文件
<com.tcl.navigator.setting.view.mSeekBar android:id="@+id/day_light_progress" android:layout_width="352px" android:layout_height="wrap_content" android:layout_toRightOf="@id/btn_screen_brightness_minus" android:layout_marginLeft="10px" android:focusable="false" android:max="15" android:progressDrawable="@drawable/seekbar_horizonta" android:paddingLeft="18px" android:paddingRight="18px" android:thumbOffset="0px" android:maxHeight="4px" android:minHeight="4px" />
SeekBar.java 代码文件
import android.annotation.SuppressLint;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PixelFormat;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.SeekBar;public class mSeekBar extends SeekBar { //比例对应的原点分辨率 private int ScreenWidth = 720; private int screenHeight = 1280; private Drawable thumb; private Resources res; private Paint paint; private Bitmap bmp; private Drawable mThumb; public mSeekBar(Context context) { this(context, null); } @SuppressWarnings("deprecation") public mSeekBar(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(); paint.setTextAlign(Paint.Align.CENTER); paint.setColor(getResources().getColor(R.color.color_white)); res = context.getResources(); if(Pixels.getpixels_x(100) == 720){ bmp = BitmapFactory.decodeResource(res, R.drawable.seek_thumb); }else{ bmp = BitmapFactory.decodeResource(res, R.drawable.seek_thumb); } thumb = new BitmapDrawable(bmp); paint.setTextSize(30); // 设置拖动的图片 setThumb(thumb); // 图片的位置 setThumbOffset(thumb.getIntrinsicWidth()); } @Override public void setThumb(Drawable thumb) { // TODO Auto-generated method stub super.setThumb(thumb); this.mThumb = thumb; } public Drawable getSeekBarThumb(){ return mThumb; } //设置thumb的偏移数值 @Override public void setThumbOffset(int thumbOffset) { // TODO Auto-generated method stub super.setThumbOffset(thumbOffset/3); } String temp_str = "0"; @Override protected synchronized void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.save(); int data = Integer.parseInt(temp_str); Rect rect = getSeekBarThumb().getBounds(); float fontwidth = paint.measureText(temp_str); if(data < 10){ canvas.drawText(temp_str, rect.left + (rect.width()) /2.0F, rect.top - paint.ascent() + (rect.height() - (paint.descent() - paint.ascent()))/2.0F, paint); }else{ canvas.drawText(temp_str, rect.left + (rect.width() ) /2.0F, rect.top - paint.ascent() + (rect.height() - (paint.descent() - paint.ascent()))/2.0F, paint); } canvas.restore(); } private Bitmap drawableToBitmap(Drawable drawable) { // 取 drawable 的长宽 int w = drawable.getIntrinsicWidth(); int h = drawable.getIntrinsicHeight(); // 取 drawable 的颜色格式 Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; // 建立对应 bitmap Bitmap bitmap = Bitmap.createBitmap(w, h, config); // 建立对应 bitmap 的画布 Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, w, h); // 把 drawable 内容画到画布中 drawable.draw(canvas); return bitmap; } public void SetValue(String value){ StringBuffer sb = new StringBuffer(); sb.append(value); temp_str = sb.toString(); invalidate(); } @SuppressLint("NewApi") @Override protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override public void setOnSeekBarChangeListener(final OnSeekBarChangeListener l) { super.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (l != null) { l.onProgressChanged(seekBar, progress, fromUser); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { if (l != null) { l.onStartTrackingTouch(seekBar); } } @Override public void onStopTrackingTouch(SeekBar seekBar) { if (l != null) { l.onStopTrackingTouch(seekBar); } } }); }}
Pixels.java 代码文件
import android.app.Activity;import android.util.DisplayMetrics;/** * 获得屏幕像素 * @author Administrator * */public class Pixels { private static int[] px = new int[101]; private static int[] py = new int[101]; private int w,h; private DisplayMetrics dm; public Pixels(Activity activity){ dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); w = dm.widthPixels; h = dm.heightPixels; int length = px.length; for(int index=0;index<length;index++){ px[index] = (int)(w*0.01*index); py[index] = (int)(h*0.01*index); } } /** * 获得x点值 * @param index * @return */ public static int getpixels_x(int index){ return px[index]; } /** * 获得y点值 * @param index * @return */ public static int getpixels_y(int index){ return py[index]; }}
seekbar_horizonta.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"> <shape> <corners android:radius="5.0dip" /> <solid android:color="#878278"/> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5.0dip" /> <solid android:color="#878278" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5.0dip" /> <solid android:color="#878278" /> </shape> </clip> </item> </layer-list>
调用代码文件
private mSeekBar dayLightProgress dayLightProgress.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub dayLightProgress.SetValue(progress+""); } });
0 0
- Android SeekBar显示进度在thumb上
- android SeekBar thumb显示不全的原因
- Android开发之seekbar动态显示进度
- Android 自定义SeekBar显示进度百分比
- Android seekbar 滑动时上方显示进度
- Android——SeekBar动态显示进度
- SeekBar,thumb不居中显示的解决办法
- SeekBar thumb不居中显示的解决办法
- SeekBar,thumb不居中显示的解决办法
- SeekBar 垂直,进度点与thumb指示同步对齐
- <Android>进度控件seekbar
- Android switch在某些系统上不显示thumb和track的解决办法
- Android自定义SeekBar,滑动时弹出气泡指示器显示进度
- 5.0之后,Android 自定义样式SeekBar Thumb两侧显示断层的坑
- android Seekbar改变thumb图片的位置
- Android自定义SeekBar thumb透明效果
- Android 使用SeekBar时动态显示进度且随SeekBar一起移动
- SeekBar,thumb和背景不居中显示的解决办法
- ASM(Active Shape Model)主动形状模型通俗易懂讲解一:理论
- crlf
- 位操作
- as86汇编示例——boot.s
- 了解AJAX
- Android SeekBar显示进度在thumb上
- 常用类之System类
- wamp下MySQL编码的配置
- 网易视频云:分布式系统的三类一致性挑战与解决方案
- 四种常见的 POST 提交数据方式
- poj 3253 Huffman树(最优二叉树)
- 常用类之Runtime类
- Ubuntu16.04 atom : Could not find 'uncrustify'. The program may not be installed.
- CEF 下载文件扩展