Imageview set color filter to gradient
You have to get Bitmap
of your ImageView
and redraw same Bitmap
with Shader
public void clickButton(View v){ Bitmap myBitmap = ((BitmapDrawable)myImageView.getDrawable()).getBitmap(); Bitmap newBitmap = addGradient(myBitmap); myImageView.setImageDrawable(new BitmapDrawable(getResources(), newBitmap));}public Bitmap addGradient(Bitmap originalBitmap) { int width = originalBitmap.getWidth(); int height = originalBitmap.getHeight(); Bitmap updatedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(updatedBitmap); canvas.drawBitmap(originalBitmap, 0, 0, null); Paint paint = new Paint(); LinearGradient shader = new LinearGradient(0, 0, 0, height, 0xFFF0D252, 0xFFF07305, Shader.TileMode.CLAMP); paint.setShader(shader); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawRect(0, 0, width, height, paint); return updatedBitmap;}
UPDATE 3I changed: colors of gradient, LinearGradient width = 0 and PorterDuffXfermode.Here a good picture to understand PorterDuffXfermode:
You could use a selector
main_header.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/. android" android:layout_width="fill_parent" android:layout_height="50dip" android:orientation="horizontal" android:background="@drawable/main_header_selector"> </LinearLayout>
main_header_selector.xml:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/. android"><item> <shape> <gradient android:angle="90" android:startColor="#FFFF0000" android:endColor="#FF00FF00" android:type="linear" /> </shape></item></selector>
The same background can be applied to an ImageView.
To define and use selector dynamically, refer to this link :Dynamically defining and using selectors
Create a XML file , and place it in the drawable folder .
gradient.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><gradient android:startColor="#CCb1e7fa" android:centerColor="#B3ffffff" android:endColor="#CCb1e7fa" android:angle="180" /><corners android:radius="5dp" /></shape>
Next add this as a background to your image view
<ImageView android:id="@+id/umageview1" android:layout_width="100dp" android:layout_height="100dp" android:background="@drawable/gradient" android:layout_centerHorizontal="true" />