自定义控件之圆形的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 这一篇博文中,我们将 ...
随机推荐
- Android获取短信验证码
Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发 ...
- flat network 原理与配置 - 每天5分钟玩转 OpenStack(86)
flat network 是不带 tag 的网络,要求宿主机的物理网卡直接与 linux bridge 连接,这意味着: 每个 flat network 都会独占一个物理网卡. 上图中 eth1 桥接 ...
- (第七天)DOM练习一
动态删除元素 给定一个ul列表,点击ul中子节点进行删除 window.onload = function() { ].childNodes; () console.log(list.length); ...
- iframe跨域+
script.image.iframe的src都不受同源策略的影响.所以我们可以借助这一特点,实现跨域.如前面所介绍的JSONP跨域,以及灯标(Beacons). 该篇随笔主要阐述iframe结合一些 ...
- Hibernate学习之——Hibernate环境搭建
之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...
- 条形码的应用三-----------从Excel文件中读取条形码
条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...
- html标签属性(attribute)和dom元素的属性(property)
简介 attribute和property都有属性之意,但对于attribute和property的区分其实并不难.从对象来说,attribute是html文档上标签属性, 而property则是对应 ...
- DocX在C#中的基本操作方法
用了一个星期把园子里2016年中有关.net的文章都看了,有些只是大致的看了一下,在看的同时也在记录一些通用的方法.发现有很多对NPOI的文档,主要是操作Excl的方法,却很少有关文档类型的方法. 在 ...
- opengl 读取3ds(stl)文件
没有解决: mark 几个网站: 1 http://blog.csdn.net/icebergkevin/article/details/18974235 能实现二维的 2 http://www.cn ...
- STM32Cube Uart_DMA测试工程
1.打开软件,新建工程,选择芯片信号,这里选择 2.USART1使能选择"Asynchronous"模式: 3.配置"RCC",High ...