[Java] Java实现图片倒影代码 →→→→→进入此内容的聊天室

来自 , 2019-06-01, 写在 Java, 查看 109 次.
URL http://www.code666.cn/view/955fd821
  1. /*实现图片倒影(tested)*/
  2. public class ButtonImageActivity extends Activity {
  3.     /** Called when the activity is first created. */
  4.     private ImageView image_btn;
  5.     @Override
  6.     public void onCreate(Bundle savedInstanceState) {
  7.         super.onCreate(savedInstanceState);
  8.         setContentView(R.layout.main);
  9.         image_btn=(ImageView)findViewById(R.id.image_btn);
  10.         Bitmap bitmap =((BitmapDrawable)getResources().getDrawable(R.drawable.image_btn)).getBitmap();
  11.         image_btn.setImageBitmap(createReflectedImage(bitmap));
  12.         image_btn.setOnClickListener(new OnClickListener() {
  13.              
  14.             public void onClick(View v) {
  15.                 // TODO Auto-generated method stub
  16.                  
  17.             }
  18.         });
  19.     }
  20.     private Bitmap createReflectedImage(Bitmap originalBitmap) {  
  21.         // 图片与倒影间隔距离  
  22.         final int reflectionGap = 4;  
  23.            
  24.         // 图片的宽度  
  25.         int width = originalBitmap.getWidth();  
  26.         // 图片的高度  
  27.         int height = originalBitmap.getHeight();  
  28.            
  29.         Matrix matrix = new Matrix();  
  30.         // 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转  
  31.         matrix.preScale(1, -1);  
  32.         // 创建反转后的图片Bitmap对象,图片高是原图的一半。  
  33.         Bitmap reflectionBitmap = Bitmap.createBitmap(originalBitmap, 0,  
  34.                 height / 2, width, height / 2, matrix, false);  
  35.         // 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。  
  36.         Bitmap withReflectionBitmap = Bitmap.createBitmap(width, (height  
  37.                 + height / 2 + reflectionGap), Config.ARGB_8888);  
  38.    
  39.         // 构造函数传入Bitmap对象,为了在图片上画图  
  40.         Canvas canvas = new Canvas(withReflectionBitmap);  
  41.         // 画原始图片  
  42.         canvas.drawBitmap(originalBitmap, 0, 0, null);  
  43.    
  44.         // 画间隔矩形  
  45.         Paint defaultPaint = new Paint();  
  46.         canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);  
  47.    
  48.         // 画倒影图片  
  49.         canvas.drawBitmap(reflectionBitmap, 0, height + reflectionGap, null);  
  50.    
  51.         // 实现倒影效果  
  52.         Paint paint = new Paint();  
  53.         LinearGradient shader = new LinearGradient(0, originalBitmap.getHeight(),  
  54.                 0, withReflectionBitmap.getHeight(), 0x70ffffff, 0x00ffffff,  
  55.                 TileMode.MIRROR);  
  56.         paint.setShader(shader);  
  57.         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  58.    
  59.         // 覆盖效果  
  60.         canvas.drawRect(0, height, width, withReflectionBitmap.getHeight(), paint);  
  61.    
  62.         return withReflectionBitmap;  
  63.     }  
  64. }
  65. //java/7052

回复 "Java实现图片倒影代码"

这儿你可以回复上面这条便签

captcha