package com.javaeye.graphics;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuffXfermode;import android.graphics.Bitmap.Config;import android.graphics.PorterDuff.Mode;import android.graphics.Shader.TileMode;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class BitmapReflect extends Activity{private static final String TAG = "***BitmapFactoryOptionsTest***";LinearLayout ly;TextView name;TextView phone;public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                name = new TextView(this);        phone = new TextView(this);                name.setText("bruce zhang");        phone.setText("13739188962");                ly = new LinearLayout(this);        ly.setOrientation(LinearLayout.VERTICAL);        LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(        LinearLayout.LayoutParams.WRAP_CONTENT,        LinearLayout.LayoutParams.WRAP_CONTENT);        ly.setLayoutParams(llp);        ly.addView(name);        ly.addView(phone);                Button button = new Button(this);        button.setText("OK");        button.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){ int width = phone.getWidth();        int height = name.getHeight() + phone.getHeight();        Log.e(TAG, "width: " + width + " height: " + height);                Bitmap.Config bc = Bitmap.Config.ARGB_8888;        Bitmap bitmap = Bitmap.createBitmap(width, height, bc);                Canvas canvas = new Canvas(bitmap);        ly.draw(canvas);                Bitmap bitmap2 = createReflectedImage(bitmap);                ImageView image = new ImageView(BitmapReflect.this);        image.setBackgroundDrawable(new BitmapDrawable(bitmap2));        ly.addView(image);        ly.postInvalidate();}});        ly.addView(button);                       setContentView(ly);}public static Bitmap createReflectedImage(Bitmap originalImage) {      final int reflectionGap = 4;  //倒影和原图片间的距离    int width = originalImage.getWidth();       int height = originalImage.getHeight();        Matrix matrix = new Matrix();       matrix.preScale(1, -1);          //倒影部分    Bitmap reflectionImage = Bitmap.createBitmap(originalImage,     0, height / 2, width, height / 2, matrix, false);      //要返回的倒影图片    Bitmap bitmapWithReflection = Bitmap.createBitmap(width,               (height + height / 2), Config.ARGB_8888);          Canvas canvas = new Canvas(bitmapWithReflection);      //画原来的图片    canvas.drawBitmap(originalImage, 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, originalImage.getHeight(),     0, bitmapWithReflection.getHeight() + reflectionGap,     0x70ffffff, 0x00ffffff,               TileMode.MIRROR);      paint.setShader(shader);      paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));      canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);      return bitmapWithReflection;   }  }

 

 

更多相关文章

  1. 【Xutils-框架 BitmapUtils】解析!!!!!!!!!!!!!!!!!!!!!!!!
  2. ScrollView和EditText 滑动冲突的解决办法
  3. 图片 缓存
  4. 开源项目Universal Image Loader for Android(安卓)说明文档 (1)
  5. Android可控图片旋转
  6. android 加载大图的原理和实现
  7. Android左右滑动切换图片
  8. Android实现手势缩放图片
  9. 有用代码片段

随机推荐

  1. js之购物车自动计算
  2. COUNT(*)计算行数有哪些优化手段
  3. 【AIX】AIX内存机制
  4. 藏在表分区统计信息背后的小秘密
  5. dd命令详解
  6. 使用DBLINK查询时报ORA-00600: internal
  7. 【OS】什么是YUM?如何配置本地YUM源?
  8. 【Tomcat】Tomcat的使用
  9. ssh登录日志收集
  10. 行链接(Row Chaining)和行迁移(Row Migratio