/*实现图片倒影(tested)*/

public class ButtonImageActivity extends Activity {

/** Called when the activity is first created. */

private ImageView image_btn;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

image_btn=(ImageView)findViewById(R.id.image_btn);

Bitmap bitmap =((BitmapDrawable)getResources().getDrawable(R.drawable.image_btn)).getBitmap();

image_btn.setImageBitmap(createReflectedImage(bitmap));

image_btn.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

}

});

}

private Bitmap createReflectedImage(Bitmap originalBitmap) {

// 图片与倒影间隔距离

final int reflectionGap = 4;

// 图片的宽度

int width = originalBitmap.getWidth();

// 图片的高度

int height = originalBitmap.getHeight();

Matrix matrix = new Matrix();

// 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转

matrix.preScale(1, -1);

// 创建反转后的图片Bitmap对象,图片高是原图的一半。

Bitmap reflectionBitmap = Bitmap.createBitmap(originalBitmap, 0,

height / 2, width, height / 2, matrix, false);

// 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。

Bitmap withReflectionBitmap = Bitmap.createBitmap(width, (height

+ height / 2 + reflectionGap), Config.ARGB_8888);

// 构造函数传入Bitmap对象,为了在图片上画图

Canvas canvas = new Canvas(withReflectionBitmap);

// 画原始图片

canvas.drawBitmap(originalBitmap, 0, 0, null);

// 画间隔矩形

Paint defaultPaint = new Paint();

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

// 画倒影图片

canvas.drawBitmap(reflectionBitmap, 0, height + reflectionGap, null);

// 实现倒影效果

Paint paint = new Paint();

LinearGradient shader = new LinearGradient(0, originalBitmap.getHeight(),

0, withReflectionBitmap.getHeight(), 0x70ffffff, 0x00ffffff,

TileMode.MIRROR);

paint.setShader(shader);

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

// 覆盖效果

canvas.drawRect(0, height, width, withReflectionBitmap.getHeight(), paint);

return withReflectionBitmap;

}

}

java水面倒影效果,Java实现图片倒影代码详解相关推荐

  1. python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  2. python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  3. php java内存占用_PHP内存溢出优化代码详解

    相信很多人做大批量数据导出和数据导入的时候,经常会遇到PHP内存溢出的问题,在解决了问题之后,总结了一些经验,整理成文章记录下. 优化点 1.优化SQL语句,避免慢查询,合理的建立索引,查询指定的字段 ...

  4. java水面倒影效果,Java实现图片倒影的源码实例内容

    把做工程过程常用的一些代码段做个记录,下面代码是关于Java实现图片倒影的的代码,应该对大家有较大用处. public class ButtonImageActivity extends Activi ...

  5. android-自定义ImageView-圆形图片绘制代码详解

    andorid中圆形图片很早就有啦,今天算是搞了一把,自己写了出来,并且可以实际使用的代码. 先看效果图: 图片的原图是: 先看看xml的布局文件是怎么样的: <?xml version=&qu ...

  6. Java GUI编程:swing创建窗体代码详解

    package com.zxl;import java.awt.Container; import java.awt.FlowLayout;import javax.swing.JButton; im ...

  7. 【Java】Java中的设计模式的介绍以及代码详解

    一.什么是设计模式? 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误 总结出来的. 对问题行之有效地解决方式,是一种设计 ...

  8. java排他_Java排他锁实现的代码详解

    这篇文章主要介绍了Java编程实现排他锁的相关内容,叙述了实现此代码锁所需要的功能,以及作者的解决方案,然后向大家分享了设计源码,需要的朋友可以参考下. 一 .前言 某年某月某天,同事说需要一个文件排 ...

  9. java shiro实例_spring+shiro 整合实例代码详解

    一.添加相关依赖 org.apache.shiro shiro-core 1.2.1 org.apache.shiro shiro-web 1.2.1 org.apache.shiro shiro-e ...

最新文章

  1. python需要音语基础_英语基础一般,如何才能学习C语言编程和Python
  2. 使用 SAP Business Application Studio 创建 Fiori Elements 应用显示 OData 服务的数据
  3. tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果) | 王猛的个人主页...
  4. pcie routing
  5. 科工网大数据有力促进机器人制造业发展
  6. 可靠的自托管「GitHub 热点速览 v.22.37」
  7. 随机密码生成器 java
  8. 详细的568A和568B线序
  9. 女生应该读的30本书
  10. 【星座】十二星座会因为什么变穷
  11. BufferedImage
  12. Windows监控——性能指标详解
  13. 程序界的高手传奇(转)
  14. java.lang.NoClassDefFoundError: Could not initialize class找不类的问题
  15. Flowplayer基于视频流的免费web视频播放器
  16. Apache 的 X-sendfile
  17. [Netty]pipeline(二)
  18. python判断密码是否正确_python密码判断是否符合要求的方法
  19. pytorch动态网络以及权重共享
  20. java随机生成随机数

热门文章

  1. 【源码】update-notifier 检测 npm 包是否更新~
  2. 成功解决IDEA2022 Plugins 连不上、打不开
  3. 关于offsetX、layerX、clientX、screenX以及pageX
  4. 关于系统分析师的考试感想
  5. amd显卡驱动linux 卸载,怎么彻底卸载AMD显卡驱动|完全卸载AMD显卡驱动步骤
  6. MATLAB批量改变图片大小
  7. Mac取证你需要了解的那些事!
  8. 地理坐标定位和计算距离
  9. 1.认识华为数据通信
  10. 用c写一个等腰三角星星图案