在android中创建类似于足部压力热图的颜色
我正在创建一个应用程序,当搜索栏升起时,它会改变它的颜色。 例如,我有一个图像(类似于图像1),当搜索条升高到25%以上时,颜色应与图像2中的颜色相同。直到25%,图像应与图像1相同 实际上,应用程序am正在创建,类似于足部压力热图。在脚部压力热图中,用户的压力作为输入,从图像1(处于正常阶段)更改为图像2。但在这里,我使用简单的搜索栏将图像1更改为图像2 问题是,我不知道如何创建图像2中的颜色。我在考虑应用径向梯度。但我不知道如何正确使用它。还有其他方法吗在android中创建类似于足部压力热图的颜色,android,image,colors,Android,Image,Colors,我正在创建一个应用程序,当搜索栏升起时,它会改变它的颜色。 例如,我有一个图像(类似于图像1),当搜索条升高到25%以上时,颜色应与图像2中的颜色相同。直到25%,图像应与图像1相同 实际上,应用程序am正在创建,类似于足部压力热图。在脚部压力热图中,用户的压力作为输入,从图像1(处于正常阶段)更改为图像2。但在这里,我使用简单的搜索栏将图像1更改为图像2 问题是,我不知道如何创建图像2中的颜色。我在考虑应用径向梯度。但我不知道如何正确使用它。还有其他方法吗 导入android.app.Act
导入android.app.Activity;
导入android.graphics.Canvas;
导入android.graphics.drawable.GradientDrawable;
导入android.os.Bundle;
导入android.widget.ImageView;
导入android.widget.SeekBar;
公共类MainActivity扩展活动实现SeekBar.onseekbarchanegListener
{
私人SeekBar-redSeekBar;
私有渐变可绘制可绘制;
ImageView img1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
redSeekBar=(SeekBar)findViewById(R.id.skbr);
redSeekBar.setonseekbarchaneglistener(这个);
雷德希克巴设定最大值(254);
//格林斯基巴.塞特马克斯(254);
//blueSeekBar.setMax(254);
img1=(ImageView)findViewById(R.id.imageView1);
}
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-touch)
{
如果(触摸){
如果(进度>=25)
mDrawable=新的GradientDrawable(GradientDrawable.Orientation.LEFT\u RIGHT,
新的int[]{0xFFFF0000,0xFF00FF00,
0xFF0000FF});
其他如果(进展)嗨!你能解释一下你的颜色变化背后的逻辑吗?同时,展示你迄今为止尝试改变颜色的方法。你可以参考如何提高获得答案的机会。嗨!谢谢。我已经编辑了问题,并添加了我尝试过的代码。有人知道着色部分吗?
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
}
}