Android中自定义圆形图片(二)
来源:互联网 发布:下载最快的软件 编辑:程序博客网 时间:2024/06/04 19:16
android中自定义圆形图片
第一篇已经介绍过了,这个主要是写法不同,别的,都相同,下面不在废话,贴代码。
这里写代码片xml布局代码<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <com.example.cn.bgs.circleimageviewdemoa.CircleImageView android:id="@+id/image1" android:layout_width="200dp" android:layout_height="220dp" android:layout_centerInParent="true" android:scaleType="centerCrop" android:src="@drawable/yyy" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/image1" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:text="女神" android:textColor="#333333" android:textSize="17sp" /></RelativeLayout>
这里写代码片MainActivity代码package com.example.cn.bgs.circleimageviewdemoa;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
这里写代码片CircleImageView代码package com.example.cn.bgs.circleimageviewdemoa;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;public class CircleImageView extends ImageView { private Paint mPaint; //画笔 private int mRadius; //圆形图片的半径 private float mScale; //图片的缩放比例 public CircleImageView(Context context) { super(context); } public CircleImageView(Context context, AttributeSet attrs) { super(context, attrs); } public CircleImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); //因为是圆形图片,所以应该让宽高保持一致 int size = Math.min(getMeasuredWidth(), getMeasuredHeight()); mRadius = size / 2; setMeasuredDimension(size, size); } @Override protected void onDraw(Canvas canvas) { mPaint = new Paint(); Bitmap bitmap = drawableToBitmap(getDrawable()); //初始化BitmapShader,传入bitmap对象 BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); //计算缩放比例 mScale = (mRadius * 2.0f) / Math.min(bitmap.getHeight(), bitmap.getWidth()); Matrix matrix = new Matrix(); matrix.setScale(mScale, mScale); bitmapShader.setLocalMatrix(matrix); mPaint.setShader(bitmapShader); //画圆形,指定好中心点坐标、半径、画笔 canvas.drawCircle(mRadius, mRadius, mRadius, mPaint); } //写一个drawble转BitMap的方法 private Bitmap drawableToBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable) { BitmapDrawable bd = (BitmapDrawable) drawable; return bd.getBitmap(); } int w = drawable.getIntrinsicWidth(); int h = drawable.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, w, h); drawable.draw(canvas); return bitmap; }}
下面看一下效果图:
一切都结束了,圆形图片告一段落,,,,哈哈哈哈,,,,,希望大家多多指教,,,,,,
阅读全文
1 0
- Android中自定义圆形图片(二)
- Android中自定义圆形图片(一)
- Android学习(二十)设置自定义圆形图片
- Android自定义圆形图片
- Android自定义圆形图片
- Android自定义圆形图片
- Android自定义圆形图片
- Android 自定义圆形图片
- Android自定义圆形图片
- [Android]自定义圆形图片
- Android自定义圆形图片
- Android自定义圆形图片
- android 自定义圆形图片
- Android圆形图片--自定义控件
- Android圆形图片自定义控件
- android-自定义圆形图片控件
- Android圆形图片--自定义控件
- Android圆形图片--自定义控件
- Android权限大全
- 本地广播Broadcast
- wx.onMenuShareTimeline使用注意事项
- 1.2Java基础语法(关键字、标识符、注释、常量、变量...)
- oracle使用命令exp导出时,不能将表导出的解决办法
- Android中自定义圆形图片(二)
- 机器学习第六讲-逻辑回归
- Java链表及字符串反转问题集
- raid5_cache.c数据结构之r5l_io_unit
- Netty5.0+ 心跳机制(四)
- Item属性
- 09 redis集群的搭建 以及遇到的问题
- office图标显示异常和新建时图标没有显示等问题解决
- spark2.0-scala2.11.8-hadoop2.8.0配置