Android_绘制圆形图片
16lz
2021-01-26
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;}}
更多相关文章
- Glide 下载多张图片
- android 动态实现点击ImageButton更换图片
- Android开发大长图加载
- Android(安卓)基于surfaceView绘制正弦曲线
- Android(安卓)照片墙功能实现
- android recycler添加分割线 点击事件等
- android 图片渐变处理
- 制作TextView的倒影
- 【Xutils-框架 BitmapUtils】解析!!!!!!!!!!!!!!!!!!!!!!!!