Here I create reflection of image as a shadow of image in android.
Below is full example of this.
My xml file for imageview..
<?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="fill_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="150dp" android:layout_height="150dp" android:src="@drawable/ic_launcher" /> </LinearLayout>
Java file for this....
public class MainActivity extends Activity {
Bitmap bt;
ImageView i;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
i = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap();
bt = reflection(bitmap);
i.setImageBitmap(bt);
}
public static Bitmap reflection(Bitmap mainImage) {
// gap space between original and reflected
final int reflectionGap = 2;
// get image size
int width = mainImage.getWidth();
int height = mainImage.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(mainImage, 0,
height / 2, width, height / 2, matrix, false);
Bitmap reflectedBitmap = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
Canvas canvas = new Canvas(reflectedBitmap);
canvas.drawBitmap(mainImage, 0, 0, null);
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0,
mainImage.getHeight(), 0, reflectedBitmap.getHeight()
+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, reflectedBitmap.getHeight()
+ reflectionGap, paint);
return reflectedBitmap;
}
}
This is the OUTPUT of above example.

how to remove the grey line ?
ReplyDeleteReduce Gap between reflected image and original image
Deletefinal int reflectionGap = 2;
Change above line of code according to your requirement.