SeekBar进度条背景图片和按钮图标的动态切换
2016-08-16 10:46
357 查看
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | package com.android.camera.manager; import android.view.View;import com.android.camera.Log;import com.android.camera.R; import android.graphics.Color;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.Drawable;import android.view.View; import com.android.camera.Log;import com.android.camera.ui.RotateModeItemView; import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.graphics.Rect; import com.android.camera.Util;import android.content.Context; public class ProferssionManager extends ViewManager implements View.OnClickListener{ private SeekBar mProfessionSeekBar; private static Rect mBounds; private static final int[] PROFESSION_SEEKBAR_PROGRESS = new int[PROFESSION_NUM_COUNTS]; static { PROFESSION_SEEKBAR_PROGRESS[0] = R.drawable.eq_seekbar_press1; PROFESSION_SEEKBAR_PROGRESS[1] = R.drawable.eq_seekbar_press2; PROFESSION_SEEKBAR_PROGRESS[2] = R.drawable.eq_seekbar_press3; PROFESSION_SEEKBAR_PROGRESS[3] = R.drawable.eq_seekbar_press4; }; private static final int[] PROFESSION_SEEKBAR_THUMB = new int[PROFESSION_NUM_COUNTS]; static { PROFESSION_SEEKBAR_THUMB[0] = R.drawable.eq_thumb1; PROFESSION_SEEKBAR_THUMB[1] = R.drawable.eq_thumb2; PROFESSION_SEEKBAR_THUMB[2] = R.drawable.eq_thumb3; PROFESSION_SEEKBAR_THUMB[3] = R.drawable.eq_thumb4; }; public ProferssionManager(CameraActivity context) { super(context, VIEW_LAYER_OVERLAY); } @Override protected View getView() { View v = getContext().inflate(R.layout.proferssion_background, getViewLayer()); mProfessionSeekBar.setThumb(getContext().getResources().getDrawable(R.drawable.eq_thumb_default)); mProfessionSeekBar.setProgressDrawable(getContext().getResources().getDrawable(R.drawable.eq_seekbar_default)); //一定要获取到原进度条的Bounds mBounds = mProfessionSeekBar.getProgressDrawable().getBounds(); return v; } @Override public void onClick(View view) { for (int i = 0; i < PROFESSION_NUM_COUNTS; i++) { //mProfessionViews[i]可以忽视,这只是一个判断条件 if (mProfessionViews[i] == view) { switchSeekBar(i); } } } public void switchSeekBar(int i) { Drawable progressDrawable = getContext().getResources().getDrawable(PROFESSION_SEEKBAR_PROGRESS[i]); mProfessionSeekBar.setProgressDrawable(progressDrawable); //如果没有下面这一步,新切换的进度条背景图会拉伸填满整个进度条的布局 mProfessionSeekBar.getProgressDrawable().setBounds(mBounds); Drawable thumbDrawable= getContext().getResources().getDrawable(PROFESSION_SEEKBAR_THUMB[i]); mProfessionSeekBar.setThumb(thumbDrawable); } private void applyListener() { if (mProfessionSeekBar!= null) { mProfessionSeekBar.setOnSeekBarChangeListener(mSeekBarLisenter1); } } private OnSeekBarChangeListener mSeekBarLisenter = new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //切换进度条背景和按钮后,监听会执行一次progress = 0 的操作,不知道为什么会如此, //但是这样会给编程中的一些操作造成困扰 } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } };} |
相关文章推荐
- Creo二次开发:查找和替换指定文件夹下所有工程图中的符号
- 数据结构实验:连通分量个数
- 开源wkhtmltopdf使用心得 (一)
- 蓝牙模块:详解蓝牙通信模块的使用
- 新建项目报错 Failed to execute aapt
- Hexo NexT 主题SEO优化指南
- hdu5834 Magic boy Bi Luo with his excited tree
- Java设计模式--代理模式
- java线程加锁
- 彻底搞定C语言指针详解-完整版
- iPhone app中,提升网页列表用户体验的建议
- MyEclipse2016 live preview功能引发的问题
- DOM中事件处理概览与原理的全面解析
- buffernbife会不会对性能有影响
- UVA 11178 旋转边求交点
- Xcode8 beta版无法输出NSLog问题
- POJ-1149-PIGS(最大流 标号法)
- Linux crontab 命令
- MT4使用MQL连接Redis的插件
- Fiddler 脚本对HTTP请求进行处理