创建一个应用程序,当搜索栏被引发时,它会改变颜色。 例如,我有一个图像(类似于图像1),当搜索条提升到25%以上时,颜色应该像图像中那样转动2.直到25%,图像应该像图像1一样。
实际上,应用程序正在创建,类似于脚压热图。在脚压热图中,用户的压力被作为输入从图像1(处于正常阶段)变为图像2.但是在这里,我使用简单的搜索条从图像1变为图像2.
问题是,我不知道如何创建像图像2中的颜色。我正在考虑应用径向渐变。但我不知道要正确使用它。还有其他方法吗?
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.SeekBar;
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener
{
private SeekBar redSeekBar;
private GradientDrawable mDrawable;
ImageView img1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
redSeekBar = (SeekBar) findViewById(R.id.skbr);
redSeekBar.setOnSeekBarChangeListener(this);
redSeekBar.setMax(254);
// greenSeekBar.setMax(254);
// blueSeekBar.setMax(254);
img1 = (ImageView) findViewById(R.id.imageView1);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean touch)
{
if(touch) {
if (progress >= 25 )
mDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
new int[] { 0xFFFF0000, 0xFF00FF00,
0xFF0000FF });
else if (progress <= 100)
mDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
new int[] { 0xFFFF0000, 0xFF00FF00,
0xFF0000FF });
}
//colors = Color.rgb(redProgress, greenProgress, blueProgress);
// imageView.setColorFilter(colors);
}
protected void onDraw(Canvas canvas) {
//canvas.translate(0, mRect.height() + 10);
canvas.save();
canvas.translate(10, 10);
mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
//setCornerRadius(mDrawable, 0, 0, r, r);
mDrawable.draw(canvas);
canvas.restore();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}