频道栏目
首页 > 资讯 > 其他 > 正文

编程开发中图片倒影+渐变效果实现方案

17-10-11        来源:[db:作者]  
收藏   我要投稿
编程开发中图片倒影+渐变效果实现方案。

一. 需要实现的效果


二. 主要代码


  1. public class MainActivity extends Activity {

  2. private ImageView mRevertImageView;

  3. private Bitmap mSourceBitmap; //原图

  4. private Bitmap mRevertBitmap; //倒立图

  5.  

  6. @Override

  7. protected void onCreate(Bundle savedInstanceState) {

  8. super.onCreate(savedInstanceState);

  9. setContentView(R.layout.activity_main);

  10.  

  11. mRevertImageView = (ImageView)findViewById(R.id.im_revert);

  12. mSourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.source);

  13. mRevertImageView.setBackground(new BitmapDrawable(getResources(), revertBitmap(mSourceBitmap)));

  14. }

  15.  

  16. private Bitmap revertBitmap(Bitmap originalImage) {

  17. final int reflectionGap = 4;

  18. int width = originalImage.getWidth();

  19. int height = originalImage.getHeight();

  20. Matrix matrix = new Matrix();

  21. matrix.preScale(1, -1); //实现图片的反转

  22. Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false); //创建反转后的图片Bitmap对象,图片高是原图的一半。

  23.  
  24. Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

  25. (height + height / 2), Config.ARGB_8888); //创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。

  26. Canvas canvas = new Canvas(bitmapWithReflection);

  27. canvas.drawBitmap(originalImage, 0, 0, null); //创建画布对象,将原图画于画布,起点是原点位置。

  28. Paint defaultPaint = new Paint();

  29. canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);

  30. canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);//将反转后的图片画到画布中。

  31. Paint paint = new Paint();

  32. LinearGradient shader = new LinearGradient(0,

  33. originalImage.getHeight(), 0, bitmapWithReflection.getHeight()

  34. + reflectionGap, 0×70ffffff, 0×00ffffff,

  35. TileMode.MIRROR); //创建线性渐变LinearGradient 对象。

  36. paint.setShader(shader);

  37. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

  38. canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()

  39. + reflectionGap, paint); //画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。

  40. return bitmapWithReflection;

  41. }

  42. }

相关TAG标签
上一篇:使用C语言将pcm数据封装成wav文件代码教程
下一篇:HTML5图片的淡出,淡入,显示,隐藏,外加左右移动动画效果
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站