SeekBar进度条背景图片和按钮图标的动态切换

来源:互联网 发布:电脑软件升级 编辑:程序博客网 时间:2024/06/05 16:15

代码如下:

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

0 0