您的位置:首页 > 其它

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) { } };}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: