Android實現圖片倒影代碼
/實現圖片倒影(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; }
} </pre>
本文由用戶 g2b4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!