自定义控件之圆形的image
需要添加点击事件的的时候在自定义的控件中覆写OnTouchEvent();方法进行点击事件的分发
package com.example.administrator.mvp.ui.widget;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView; import com.example.administrator.mvp.R; /**
* 这里我们继承ImageView
* Created by Zyh on 2016/11/27.
*/
public class MyCycleImageView extends View {
/**
*方法的作用:
* 构造方法--主要进行变量的初始化
* onMeasure---主要对该控件的宽高进行重置
* onDraw---对需要显示的信息进行重绘
* 我们需要用到的工具:
* 1.画笔
* 2.位图
* 3.绘制的path路线
* 4.画布,这个有系统提供
*
*/
private Bitmap mBitmap;
private Paint mPaint;
private Path mPath;
private int dia;//显示的直径
public MyCycleImageView(Context context, AttributeSet attrs) {
//这个方法是系统默认要执行的方法
super(context, attrs);
mPaint=new Paint();
//设置抗锯齿
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.STROKE);
//设置画笔透明
mPaint.setAlpha(0);
mPath=new Path();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//重新规定布局的宽和高
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//图片的直径我们规定为宽高中最小的那个尺寸
dia=Math.min(MeasureSpec.getSize(widthMeasureSpec),MeasureSpec.getSize(heightMeasureSpec));
//按比例创建位图
mBitmap=Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.chazhuo),dia,dia,false);
//设置路径为直径是dia的圆
mPath.addCircle(dia/2,dia/2,dia/2, Path.Direction.CW);
//这个方法是重新定义宽高的时候必须要执行的方法,否则会有异常
setMeasuredDimension(dia,dia);
} @Override
protected void onDraw(Canvas canvas) {
//重新绘制控件
super.onDraw(canvas);
//绘制圆形的区域--可以为我们位图描边
canvas.drawPath(mPath,mPaint);
//按照路径裁剪画布,裁剪剩下的区域我们设置为交集
canvas.clipPath(mPath, Region.Op.INTERSECT);
canvas.drawBitmap(mBitmap,0,0,null);
}
}

效果如上图
自定义控件之圆形的image的更多相关文章
- 自定义控件之 圆形 / 圆角 ImageView
一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...
- Android - 自定义控件之圆形控件
自定义控件 - 圈圈 Android L: Android Studio 效果:能够自定义圆圈半径和位置:设定点击效果:改变背景颜色 下面是demo图 点击前: 点击后: 自定义控件一般要继承View ...
- 自定义控件【圆形】圆角 BitmapShader
关于缩放比例 本例中,我们会为BitmapShader设置了一个matrix,目的是按比例放大或者缩小bitmap,并移动到View控件的中心,我们不会让view的宽高大于我们bitm ...
- 自定义控件之圆形颜色渐变进度条--SweepGradient
前几天在群里面有人找圆形可颜色渐变进度条,其中主要的知识点是SweepGradient: mSweepGradient = new SweepGradient(240, 360, new int[] ...
- Android自定义控件之圆形进度条ImageView
From:http://blog.csdn.net/xiadik/article/details/41648181package com.wangran.beautiful_girl_show.vie ...
- Android 自定义控件之圆形扩散View(DiffuseView)
实现效果 使用 属性方法 代码 源码下载 参考链接 实现效果 使用 XML中: <com.airsaid.diffuseview.widget.DiffuseView android:id=&q ...
- 美发帮--android APP开发实战
登陆界面,LinearLayout ImageView Button 用到了ImageView自动缩放,和自定义Button形状及State-Drawable,还用到了动画. 自定义控件之圆形 ...
- 自定义控件之--继承控件(圆形TextView)
师从郭大,自学于心,继承控件无疑就是继承自现有控件,保持继承的控件的属性并进行必要的扩展. 比如下面这个自定义控件,它就保持了TextView的属性,并对TextView的外观进行必要的修改该来适 ...
- Android自定义控件系列之应用篇——圆形进度条
一.概述 在上一篇博文中,我们给大家介绍了Android自定义控件系列的基础篇.链接:http://www.cnblogs.com/jerehedu/p/4360066.html 这一篇博文中,我们将 ...
随机推荐
- 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- The network bridge on device VMnet0 is not running
The network bridge on device VMnet0 is not running. The virtual machine will not be able to communic ...
- java 导出数据为word文档(保持模板格式)
导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换 如 aaaaa ...
- android studio 导入有so 文件的项目是,程序崩溃的可能原因
被这玩意坑了2个多小时. ----------------------------------- 由于 android studio 在建项目时,不会自动识别 so 文件,所以在含有so 文件的项目中 ...
- [Java 安全]消息摘要与数字签名
消息摘要 算法简述 定义 它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生.如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知 ...
- 【那些年关于MyEclipse的快捷键大全】
MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Q 定位到最后编辑的地方 ...
- Unity实现滑页嵌套(解决ScrollRect嵌套冲突问题)
简介 由于项目需要+有网友咨询,所以做了个横向滑页+某一横向滑页中有竖向滑页的demo,实现有点绕弯子,但基本功能还是比较完善,发上来共享一下. 效果 思路 第一步的思路是自己判断触屏拖动位置,然后控 ...
- globalization与全球化
本配置节是关于配置应用程序的全球化设置. <globalization <!--以下两个特性默认编码为 UTF-8,该编码在 Machine.config 文件(在安装 .NET Fram ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- ABySS非root权限安装
本文转自 http://yangl.net/2015/11/12/abyss_install/ ABySS: ABySS is a de novo, parallel, paired-end seq ...