自定义view"/>
浅谈安卓自定义view
原
浅谈安卓自定义view(一):制作一个最最最简单的自定义view
2017年11月09日 16:47:13 wsyizmao 阅读数:4739 标签: 自定义view 更多
个人分类: 我的安卓
对于安卓程序员来说,自定义view简直不要太重要,毕竟有很多功能,譬如圆形头像这些,用单纯的原生非常难以实现,而用自定义view,简直分分钟。
在这里,我尝试用最简单方式跟初学者说一下如何自定义一个自己的view~
首先,最简单最简单的自定义view,有多简单?简单到没有逻辑,没有任何自带属性,只是简单展示,
譬如,我制作一个圆形图片。。。
一共只需要两步,
第一步,创建你的自定义类,让它继承View类,并重写构造方法。
第二步,重写ondraw()方法。
比如,我创建了这个自定义类名字叫做circleImageView,如下图所示:
注意,这里有两个默认的构造器方法,circleImageView(Context context)和circleImageView(Context context,AttributeSet arrts)
其中circleImageView(Context context)这个方法是你动态new的时候调用的,而circleImageView(Context context,AttributeSet arrts)这个方法是你在xml文件中调用才会调用这个方法。如下图,直接将标签定义为类名便可以了:
然后第二步,重写ondraw()方法!
在这里简单说一下,ondraw(),顾名思义就是画画方法,在自定义组件时候,其实内部可以简单分为三个步骤,也就是三大方法,onMeasure,onLayout,ondraw,这些方法在自定义组件中依次运行,先onMeasure获得组件大小,再onLayout知道组件布局位置,最后ondraw将组件渲染画出来,但是其实在自定义组件中onMeasure和onLayout不是必须重写的,所以在这里我先不说,后面再讲,就说这个ondraw方法,这个是必须实现的方法。
在上面的构造器方法中,我已经在组件初始化的时候便将要显示的图片初始化伟bitmap了
嗯,就是上面那个方法
接下来我们要做的就是将这个bitmap截成一个圆形,在这里我写了一个圆形方法,如下图:
好啦,画圆方法写好啦,最后就是在ondraw里面调用画画方法就好了,如下图
这样一个自定义组件就写好啦,完整代码如下图
package com.example.administrator.testmyidea.myTextView;import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.view.View;
import com.example.administrator.testmyidea.R;public class circleImageView extends View{private Paint mPaint;private Bitmap imageBitmap;private float circleRadio;public circleImageView(Context context) {super(context);mPaint=new Paint();}public circleImageView(Context context, AttributeSet attrs) {super(context, attrs);mPaint=new Paint();imageBitmap=BitmapFactory.decodeResource(getResources(),R.drawable.touxiang);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(getCircle(imageBitmap),0,0,mPaint);}//将bitmap转换成圆形bitmappublic Bitmap getCircle(Bitmap bitmap){//circleRadio圆形图片的半径float circleRadio=bitmap.getWidth()/2;//创建一张新的bitmap,跟传入图片一样宽的正方形bitmap,Bitmap b=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getWidth(), Bitmap.Config.ARGB_8888);//初始化画布,并将刚才创建的bitmap给这画布,让画布画在这bitmap上面Canvas canvas=new Canvas(b);//初始化画笔Paint p=new Paint();//在画布中画一个等宽的圆canvas.drawCircle(circleRadio,circleRadio,circleRadio,p);//设置画笔属性,让画笔只在哪圆圈中画画,关于画笔属性,可以百度一下,很多,但是非常有用p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));canvas.drawBitmap(bitmap,0,0,p);return b;}}
在xml里面代码是这样的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android=""xmlns:tools=""xmlns:luo=""android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.administrator.testmyidea.MainActivity"><com.example.administrator.testmyidea.myTextView.circleImageViewandroid:layout_centerInParent="true"android:layout_width="150dp"android:layout_height="150dp"/></RelativeLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
最后效果:
诺~自定义的圆形imageview出来啦
不过这里的是写死图片的,下一节我们说下怎么弄为可在代码动态设置图片,也可以在xml里面加入图片地址的
发表评论
添加代码片
- HTML/XML
- objective-c
- Ruby
- PHP
- C
- C++
- JavaScript
- Python
- Java
- CSS
- SQL
- 其它
还能输入1000个字符
Android自定义View(二、深入解析自定义属性)
u010163442
05-21 2.5万
转载请标明出处: 本文出自:【openXu的博客】 [TOC] 在上一篇博...
自定义View,有这一篇就够了
huachao1001
06-03 5.6万
我的简书同步发布:自定义View,有这一篇就够了 为了扫除学习中的盲点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容并没有什么独特,其他大神...
Android (非常重要)如何实现自定义的View
qq_28057541
08-02 2532
一个设计的好的自定义view,有着丰富的特性和简单的接口。它可以有效的使用cpu和内存。所以一个自定义view必须满足以下几点: 符合Android的规范 提供可以和Android XML 布局相适应...
自定义View(三)---自定义View整个流程的梳理与总结
cjm2484836553
04-30 1282
转载请注明出处:From李诗雨— 不诗意的女程序猿不是好厨师~ 在自定义Vi...
下载
安卓自定义View
04-05
博客介绍
自定义View学习-绘制一个简单的圆
wangbin_learn
04-26 2431
想把平时学到的关于自定义View的一些东西记录下来,从最基本的慢慢往难学吧。这篇是简单的不能再简单的绘制,算是一个入门吧。做了两个,一个是就显示圆。还有一个是绘制的圆根据手指滑动的位置来移动。并且圆的...
Android自定义View的官方套路
yissan
04-12 1.7万
概述Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了。自定义控件对于初学者总是感觉是一种复杂的技术。因为里面涉及到的知识点会比...
安卓自定义的view
weixin_37166398
07-18 18
安卓的自定义view ,主要分为两种方式: 1.组合控件,类似于 即时通讯中的聊天的titlebar 可以写成一个 自定义的view ,其实就是一些控件的组合 2.自定义的view,继承于view...
鸿洋大神博文Android 自定义View (一)中自定义属性所遇到的坑
qq_21265915
02-24 730
原因是由于接触安卓也这么久了,但是自定义view这方面一直没怎么了解, 尤其是对于自定义属性的使用。 由于最近app上需要用到自定义View,于是决定把自定义View的坑填上(毕竟安卓中自定义View...
Android自定义View——从零开始实现水波浪进度框
lly347705530
10-17 659
本系列教程博客,我都会将自己实现的思路写下来,带大家一步步从零开始实现我们想要的效果。因为最近在网上看了很多前辈们实现的 水波浪进度框,一时手痒,所以任性地决定这系列的第二篇博客的主角就是它了...
相关热词
浅谈抢红包 浅谈http 后缀数组浅谈 浅谈splay 场景浅谈
安卓面试之=》自定义View
lfc18606951877
06-19 992
纯属个人笔记,学习慕课网视频笔记!!!!! 1:自定义属性的声明和获取 分析要需要的属性 在res/values/attrs.xml中进行定义声明,在使用自定义控件xml中使用 在自定义...
安卓自定义view实现彩票刮刮卡效果
qq_27607229
11-28 288
欢迎来到亮亮的博客我是一名在校大学生,目前学的是软件,今天我的个人微博也算是开通了,那么我要说的第一个就是我自己研究的安卓,在看自定义view这块时,我特意去找了几位大神的博客看了下,有一位是专门研究...
安卓开发自定义权限以及权限的级别
a937896607
01-11 1290
在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。如果应用需要执行某些操作,就需要声明使用这个操作对应的权限。 (在manifest...
自定View
zsp_android_com
08-06 23
简介 xxx 方法 drawRect(float left, float top, float right, float bottom, Paint paint) Draw the s...
Android 中自定义View的初步总结
yuminfeng728
06-08 4109
概述在开发过程中,经常会遇到系统中提供的控件无法满足产品的设计需求,这时可能就需要考虑使用自定义的View来实现产品的设计细节了。对于自定义View,可以分为两种,一种是自定义控件(继承View),另...
安卓基础:自定义View
qq_38845493
06-18 41
一.自定义View分类 View下面有 ImageView ImageButton QuickContactBadge AppCompatImageView ...
手把手教你写一个完整的自定义View
carson_ho
03-14 2.9万
前言 自定义View是Android开发者必须了解的基础 今天,我将手把手教你写一个自定义View,并理清自定义View所有应该的注意点 阅读本文前,请先阅读我写的一系列自定义View文章 ...
Android自定义View绘制流程小结
wjw190077
01-24 999
总之一句话,当系统控件满足不了我们的需求时,就需要自定义View来实现,足以表达自定义有多么强大! 通过网上资料和结合自己实践,这篇文章主要用来理解绘制流程的一个具体过程的,绘制流程的起始都是在Vi...
Android自定义View——从零开始实现雪花飘落效果
lly347705530
11-23 1490
转眼已是十一月下旬了,天气慢慢转冷,不知道北方是不是已经开始下雪了呢?本期教程我们就顺应季节主题,一起来实现雪花飘落的效果吧...
Android 自定义View (一)
lmj623565791
04-21 40.4万
很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章。先总结下自定义View的步骤...
一步一步学自定义View(1.简单入门)
androidxiaogang
02-23 1046
1、自定义Viewandroid中可能遇到很多需求要求自定义view,一般github上都有各种各样的酷炫效果自定义view,特别是仪表盘,柱状图,饼状图都有,但还是不免遇到一些特别的需求,自定义样式...
Android 通过图片进行自定义View绘制
zhanggang740
06-30 1472
通过Android自定义图表:ChartView和自定义View实现渲染 我们已经了解了如何简单的去绘制一个自定义View-图表和在如何去对一个自定义View中起部分内容进行渲染。 这次我们来了解...
Android自定义View 一<最简单的自定义View>
qq_36209474
03-19 3629
为什么要自定义Viewandroid提供了很多控件供我们使用 但有些功能是系统所提供的实现不 了的 这时候我们就需要自定义一个View来实现我们所需要的效果. 在Android中所有的控件都直...
Android自定义View(一、初体验自定义TextView)
u010163442
05-19 2.8万
转载请标明出处: 本文出自:【openXu的博客】 继承View重写onDraw...
Android自定义View使用总结
wenzhi20102321
11-29 3149
View是一个Android视图的基础类,这个类是用户接口的基础构件。 View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。...
Android开发-自定义View-AndroidStudio(八)自定义View初体验
iwanghang
12-21 1832
转载请注明出处: 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 老规矩,先上效果图,看个...
安卓自定义View实现简单折线图
qq_19560943
02-21 1341
自定义View实现折线图:运行效果: 少说废话,实现起来还是比较简单的,无非就是使用canvas进行绘图,以及坐标的计算,下面直接贴代码:ChartView.java/** * Created b...
自定义View Layout过程 - 最易懂的自定义View原理系列(3)
carson_ho
02-20 1.4万
前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化 等 今天,我将全面总结自定义V...
自定义View基础 - 最易懂的自定义View原理系列(1)
carson_ho
02-20 1.7万
前言 自定义View原理是Android开发者必须了解的基础; 在了解自定义View之前,你需要有一定的知识储备; 本文将全面解析关于自定义View中的所有知识基础。 目录1. View的分类视图Vi...
自定义View Measure过程 - 最易懂的自定义View原理系列(2)
carson_ho
02-20 1.6万
前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化 等 今天,我将全面总结自定义Vi...
Android自定义View-自定义组件
yilei0033
03-05 136
Android自定义组件 android自定义组件一般有三种实现方式: 一、组合控件:组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。 二、自绘控件:...
Android自定义View的三种实现方式
luckrr
07-07 227
参考别人的文章,简明易懂,留个笔记 参考原文链接 在毕设项目中多处用到自定义控件,一直打算总结一下自定义控件的实现方式,今天就来总结一下吧。在此之前学习了郭霖大神博客上面关于自定义View的几...
下载
<em>Android</em>中<em>自定义View</em>
09-15
*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M *详细原因: 取 消 提 交 <em>Android</em>中<em>自定义View</em> 5积...
Android自定义view之自己真正意义上的自定义view
submit66
04-23 83
之前的自定义view文章也写了几篇了,但是也一直是局限于搞懂系统API如何使用等,还是没有真正的实践过,今天这篇文章算是自己真正意义上的第一次自定义view,就是做了一个常见的尺子效果的半...
Android自定义view+文字
Startpoupee
12-27 142
MainActivitypackage com.gjl.day03_after;import android.support.v7.app.AppCompatActivity; import andr...
Android自定义View实现不断旋转的圆形图片
Moing557
06-18 1924
自定义View是android开发的一个重要技能,用android提供的2/3D绘制相关类可以实现非常多炫酷的效果,需要实打实的编程基础。(吧)。 但是自定义View又是我的弱项,所以最近都在摸索、练...
android自定义view-打造圆形ImageView(一)
SmartIceberg
03-29 6320
前言: 大家在很多应用不难发现,用户的头像那一块的imageview是圆形的,可是我们并没有现成的圆形ImageView调用,那么最常见的思路就是自己去写一个属于自己的圆形ImageView,基于这样...
Android 自定义View——蒙版擦除效果实现
To_be_Designer
09-18 5374
在《Android PorterDuff.Mode图形混合处理 》这篇博客中,我们讲解了PorterDuff.Mode对图形混合的处理。这篇我们将通过图形混合的原理,来制作一个手动擦除蒙版显示底层图片...
Android刮刮卡的实现
c1392851600
03-17 330
做了几年开发以前都是去看书, 看大神的博客, 看别人的文章, 确实收获了不少, 遇到不会的就查, 看到别人写好的第三方控件就拿过来用 , 使用别人制造的轮子感觉灰常好, 还节省时间, ...
CircleImageView用法及源码解析(雷惊风)
liuyonglei1314
02-14 6699
首先这篇文章我们从以下四个方面进行一一讲解1.CircleImageView在AS中集成及用法;2.CircleImageView中定义的对外的方法;3.源码解析;4.用到的知识点的总计。希望通过本篇...
没有更多推荐了,返回首页
个人资料
wsyizmao
关注
原创
19
粉丝
5
喜欢
0
评论
3
等级:
访问:
7095
积分:
254
排名:
32万+
勋章:
持之以恒
授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
最新文章
- 启动另外一个app时候报没有权限的错误:java.lang.SecurityException
- 或许组件屏幕中的位置
- 常用库记录
- 第二章 ipc通信
- socket 实例解说
个人分类
- 我的安卓14篇
- android Bitmap2篇
- android 一些实用工具2篇
- html小知识1篇
- Android开发艺术探索总结1篇
归档
- 2018年5月 1篇
- 2018年2月 1篇
- 2018年1月 6篇
- 2017年12月 2篇
- 2017年11月 10篇
热门文章
- 浅谈安卓自定义view(一):制作一个最最最简单的自定义view
阅读量:4724
- android 小米时钟的实现
阅读量:517
- html 布局
阅读量:439
- 自定义view2——创建你自己的组件自定义属性
阅读量:200
- 设置图片inSampleSize但是内存没变?或许你应该看看这个
阅读量:176
最新评论
- android 小米时钟的实现
qq_41613677:[reply]qq_41613677[/reply] 我的邮箱是685883550@qq
- android 小米时钟的实现
qq_41613677:您好 我用这个为什么超出了屏幕,画布太大,只显示一部分,需要加什么属性吗?< com and...
- 设置图片inSampleSize但...
wsyizmao:欢迎大家评论啊
联系我们
请扫描二维码联系客服
webmaster@csdn
400-660-0108
QQ客服 客服论坛
关于招聘广告服务 网站地图
©2018 CSDN版权所有 京ICP证09002463号
百度提供搜索支持
经营性网站备案信息
网络110报警服务
中国互联网举报中心
北京互联网违法和不良信息举报中心
CSDN APP
- 点赞取消点赞
0
- 评论
- 收藏
- 手机看
- 上一篇
- 下一篇
- 更多
- 上一篇
- 下一篇
更多推荐
浅谈安卓自定义view
发布评论