图片倒影效果
“鱼龙隐苍翠,鸟兽游清泠;菰蒲林下秋,薜荔波中轻。”这是唐代诗人储光羲在《同诸公秋霁曲江俯见南山》中描写倒影的神奇魅力的诗句、而现如今我们通过代码就可以轻松简单的实现这种倒影效果了、是不是强大呢、好了、进入主题、
实现图片倒影效果的主要方法如下:
/** * 图片倒影效果 * @param originalImage * @return */ public static Bitmap createMirrorImage(Bitmap originalImage) { int width = originalImage.getWidth(); int height = originalImage.getHeight(); //反射倒影图片的高度 int mirrorHeight = height>>1; Matrix matrix = new Matrix(); // 实现图片翻转90度 matrix.preScale(1, -1); // 创建倒影图片(是原始图片的一半大小) Bitmap mirrorImage = Bitmap.createBitmap(originalImage, 0,mirrorHeight , width, mirrorHeight, matrix, false); // 创建总图片(原图片 + 倒影图片+中间间隔1) Bitmap finalBitmap = Bitmap.createBitmap(width, height + mirrorHeight + 1, Config.ARGB_8888); // 创建画布 Canvas canvas = new Canvas(finalBitmap); canvas.drawBitmap(originalImage, 0, 0, null); //把倒影图片画到画布上 (中间间隔1感觉更真实) canvas.drawBitmap(mirrorImage, 0, height + 1, null); Paint shaderPaint = new Paint(); //创建线性渐变LinearGradient对象 LinearGradient shader = new LinearGradient(0, height + 1, 0, finalBitmap.getHeight(), 0x7fffffff, 0x00ffffff, TileMode.MIRROR); shaderPaint.setShader(shader); shaderPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); //画布画出反转图片大小区域、然后把渐变效果加到其中、就出现了图片的倒影效果、 canvas.drawRect(0, height + 1, width, finalBitmap.getHeight(), shaderPaint); return finalBitmap; }
在这里我写了个简单的小程序、来实现图片倒影的效果、下面是测试时主要用到的一些文件和测试代码:
测试用到的原图片文件:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" android:gravity="center"> <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity { private ImageView iv; private void init(){ iv = (ImageView)findViewById(R.id.iv); Bitmap bmp = ((BitmapDrawable) getResources().getDrawable(R.drawable.test)).getBitmap(); iv.setImageBitmap(createMirrorImage(bmp)); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } }
倒影效果图如下:
关于作者
Name: Jenly
Email: jenly1314@gmail.com
Email: jenly1314@vip.qq.com
Github: github.com/jenly1314