2017-01-07 7 views
0

Я хочу изменить цвет изображения слева направо, как спектр, и увидеть изменение цвета по мере его изменения, вот мой код, проблема в том, что он меняется от исходного изображения до конечного изображения после щелчка по buttom, но я не знаю, как его изменить, чтобы я мог видеть изменение, поскольку оно меняется.android изменение цвета изображения слева направо плавно

final ImageView imgView = (ImageView) findViewById(R.id.imageView); 
    Button btn = (Button) findViewById(R.id.button1); 

    Bitmap bitmap = ((BitmapDrawable) imgView.getDrawable()).getBitmap(); 
    final Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 


      for(x = 0; x < mutableBitmap.getWidth() ; x++){ 
       runOnUiThread (new Thread(new Runnable() { 
        public void run() { 
         try { 
             for(int y = 0; y < mutableBitmap.getHeight() ; y++){ 
              int c = mutableBitmap.getPixel(x, y); 
              mutableBitmap.setPixel(x, y, Color.rgb(Color.red(c), (200 - Color.green(c)), Color.blue(c))); 
              Log.d("IMAGE", ""+x); 
             } 
             imgView.setImageBitmap(mutableBitmap); 
              Thread.sleep(100); 
             } catch (InterruptedException e) { 
              // TODO Auto-generated catch block 
              e.printStackTrace(); 
             } 
          } 

       })); 
      } 
     } 


    }); 
+0

Вы имеете в виду как [color gradient] (https://en.wikipedia.org/wiki/Color_gradient)? – CommonsWare

+0

Да, например, он начинается с белого и заканчивается зеленым непрерывно. –

+0

Рассмотрите возможность использования 'GradientDrawable' вместо сборки собственного растрового изображения. – CommonsWare

ответ

1

Вы можете щелкнуть правой кнопкой мыши по вашей папке с выделением, выберите «Новый файл \ Найденный ресурс». Выберите имя файла и нажмите «ОК». После этого вы можете добавить этот код:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient 
    android:angle="135" 
    android:centerColor="@color/colorAccent" 
    android:endColor="@color/colorPrimaryDark" 
    android:startColor="@color/colorPrimary" 
    android:type="linear" /> 

Вы можете создавать новые цвета от вас color.xml и использовать их. Затем в java-коде:

imageView.setImageDrawable(getResources().getDrawable(R.drawable.YOURDRAWABLENAME)); 
1

Я не эксперт, но я думаю, что вы можете попробовать это выбрать цвета, которые вы хотите:

int[] colors = {0xFFFFFFFF, 0xFFFF0000, 0xFF00FF00} 

И это применять их:

mutableBitmap.setPixel(x, y, new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, colors); 

Надежда это help

+0

спасибо, но «Метод setPixel (int, int, int) в типе Bitmap не применим для аргументов (int, int, GradientDrawable)» –

+0

Вам нужно сделать это по коду? Потому что очень просто с xml. Вы создаете новый шаблон, и вы применяете его к ImageView, если вам интересно, и это то, что вы хотите, я могу показать вам, как – Johnson

+0

@BitaMirshafiee – Johnson

Смежные вопросы