A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴光新 黑马帝   /  2013-8-15 17:23  /  1598 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.example.aimage;

  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.graphics.Bitmap;
  5. import android.graphics.Bitmap.Config;
  6. import android.graphics.BitmapFactory;
  7. import android.graphics.Canvas;
  8. import android.graphics.Paint;
  9. import android.graphics.Path;
  10. import android.graphics.Path.Direction;
  11. import android.graphics.PorterDuff.Mode;
  12. import android.graphics.PorterDuffXfermode;
  13. import android.util.Log;
  14. import android.view.Menu;
  15. import android.view.View;
  16. import android.view.View.OnClickListener;
  17. import android.widget.ImageView;

  18. public class MainActivity extends Activity {
  19.         private ImageView mImageView1;
  20.        
  21.         @Override
  22.         protected void onCreate(Bundle savedInstanceState) {
  23.                 super.onCreate(savedInstanceState);
  24.                 setContentView(R.layout.activity_main);
  25.                
  26.                 mImageView1 = (ImageView) findViewById(R.id.imageView1);
  27.                 mImageView1.setOnClickListener(new OnClickListener() {

  28.                         @Override
  29.                         public void onClick(View paramView) {
  30.                                 mImageView1.setImageBitmap(getBitmap());
  31.                         }
  32.                 });
  33.         }

  34.         private Bitmap getBitmap() {
  35.                 Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.earth);
  36.                 Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ARGB_8888);

  37.                 drawDestBitmap(src, dest);
  38.                
  39.                 return dest;
  40.         }
  41.        
  42.         private void drawDestBitmap(Bitmap src, Bitmap dest) {
  43.                 Canvas canvas_d = new Canvas(dest);
  44.                 Paint paint_d = new Paint();
  45.                 Bitmap mask = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ALPHA_8);

  46.                 long begin = System.currentTimeMillis();
  47.                
  48.                 drawMaskBitmap(mask);
  49.                 canvas_d.drawBitmap(mask, 0, 0, paint_d);
  50.                 paint_d.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  51.                 canvas_d.drawBitmap(src, 0, 0, paint_d);

  52.                 long count = System.currentTimeMillis() - begin;
  53.                 Log.d("", " :" + count);
  54.         }
  55.        
  56.         private void drawMaskBitmap(Bitmap mask) {
  57.                 Canvas canvas_m = new Canvas(mask);
  58.                 Paint paint_m = new Paint();
  59.                 Path path = new Path();

  60.                 path.addCircle(500, 400, 270, Direction.CCW);
  61.                 paint_m.setAntiAlias(true);
  62.                 paint_m.setAlpha(0xff);
  63.                 canvas_m.drawPath(path, paint_m);
  64.         }
  65.        
  66.         @Override
  67.         public boolean onCreateOptionsMenu(Menu menu) {
  68.                 // Inflate the menu; this adds items to the action bar if it is present.
  69.                 getMenuInflater().inflate(R.menu.main, menu);
  70.                 return true;
  71.         }

  72. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马