package com.example.demo_drawcircle;import android.R.color;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.Bitmap.Config;import android.view.Menu;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.widget.LinearLayout;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LinearLayout layout = (LinearLayout) findViewById(R.id.main);LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);Bitmap source = BitmapFactory.decodeResource(getResources(), R.drawable.icon);source = createCircleBitmap(source, 150);ImageView imageView = new ImageView(this);imageView.setImageBitmap(source);layout.addView(imageView,lp);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}/** *  * @param source * @param min * @return */private Bitmap createCircleBitmap(Bitmap source,int min){Paint paint = new Paint();paint.setColor(Color.parseColor("#FFFFFF"));paint.setAntiAlias(true);//抗锯齿Bitmap target = Bitmap.createBitmap(min, min, Config.ARGB_8888);/** * 产生同样大小的画布 */Canvas canvas = new Canvas(target);/** * 首先绘制圆形 */canvas.drawCircle(min/2, min/2, min/2, paint);/** * 使用SRC_IN(关键代码) */paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));/** * 缩放图片 */ //获取这个图片的宽和高        int width = source.getWidth();        int height = source.getHeight();//计算缩放率,新尺寸除原始尺寸        float scaleWidth = ((float) min) / width;        float scaleHeight = ((float) min) / height;                // 创建操作图片用的matrix对象        Matrix matrix = new Matrix();                // 缩放图片动作        matrix.postScale(scaleWidth, scaleHeight);                //旋转图片 动作//        matrix.postRotate(45);                // 创建新的图片        Bitmap newBitmap = Bitmap.createBitmap(source, 0, 0,        width, height, matrix, true);/** * 绘制图片 */canvas.drawBitmap(newBitmap, 0, 0, paint);return target;}}


更多相关文章

  1. Glide 下载多张图片
  2. android 动态实现点击ImageButton更换图片
  3. Android开发大长图加载
  4. Android(安卓)基于surfaceView绘制正弦曲线
  5. Android(安卓)照片墙功能实现
  6. android recycler添加分割线 点击事件等
  7. android 图片渐变处理
  8. 制作TextView的倒影
  9. 【Xutils-框架 BitmapUtils】解析!!!!!!!!!!!!!!!!!!!!!!!!

随机推荐

  1. 享受Android应用程序的Java技术盛宴
  2. Android开机启动流程
  3. android简单学习总结
  4. Android(安卓)LayoutInflater
  5. eclipse导入的Android项目没有android.ja
  6. Android解析XML-详尽
  7. Android面试系列文章2018之Android部分Ha
  8. Android打印相关
  9. Android(安卓)15本经典教程和150多个实例
  10. Android(安卓)LineaerLayout中layout_mar