创建类似于android中脚压力热图的颜色

时间:2015-09-26 16:02:49

标签: android image colors

创建一个应用程序,当搜索栏被引发时,它会改变颜色。 例如,我有一个图像(类似于图像1),当搜索条提升到25%以上时,颜色应该像图像中那样转动2.直到25%,图像应该像图像1一样。

实际上,应用程序正在创建,类似于脚压热图。在脚压热图中,用户的压力被作为输入从图像1(处于正常阶段)变为图像2.但是在这里,我使用简单的搜索条从图像1变为图像2.

问题是,我不知道如何创建像图像2中的颜色。我正在考虑应用径向渐变。但我不知道要正确使用它。还有其他方法吗?

enter image description here

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
    }





}

0 个答案:

没有答案