浅谈安卓自定义view

 

浅谈安卓自定义view(一):制作一个最最最简单的自定义view

2017年11月09日 16:47:13 wsyizmao 阅读数:4739 标签: 自定义view 更多

个人分类: 我的安卓

对于安卓程序员来说,自定义view简直不要太重要,毕竟有很多功能,譬如圆形头像这些,用单纯的原生非常难以实现,而用自定义view,简直分分钟。

在这里,我尝试用最简单方式跟初学者说一下如何自定义一个自己的view~

首先,最简单最简单的自定义view,有多简单?简单到没有逻辑,没有任何自带属性,只是简单展示,

譬如,我制作一个圆形图片。。。

一共只需要两步,

第一步,创建你的自定义类,让它继承View类,并重写构造方法。

第二步,重写ondraw()方法。

比如,我创建了这个自定义类名字叫做circleImageView,如下图所示:

浅谈安卓自定义view_第1张图片

注意,这里有两个默认的构造器方法,circleImageView(Context context)和circleImageView(Context context,AttributeSet arrts)

其中circleImageView(Context context)这个方法是你动态new的时候调用的,而circleImageView(Context context,AttributeSet arrts)这个方法是你在xml文件中调用才会调用这个方法。如下图,直接将标签定义为类名便可以了:

浅谈安卓自定义view_第2张图片

然后第二步,重写ondraw()方法!

在这里简单说一下,ondraw(),顾名思义就是画画方法,在自定义组件时候,其实内部可以简单分为三个步骤,也就是三大方法,onMeasure,onLayout,ondraw,这些方法在自定义组件中依次运行,先onMeasure获得组件大小,再onLayout知道组件布局位置,最后ondraw将组件渲染画出来,但是其实在自定义组件中onMeasure和onLayout不是必须重写的,所以在这里我先不说,后面再讲,就说这个ondraw方法,这个是必须实现的方法。

在上面的构造器方法中,我已经在组件初始化的时候便将要显示的图片初始化伟bitmap了

浅谈安卓自定义view_第3张图片

嗯,就是上面那个方法

接下来我们要做的就是将这个bitmap截成一个圆形,在这里我写了一个圆形方法,如下图:

浅谈安卓自定义view_第4张图片

好啦,画圆方法写好啦,最后就是在ondraw里面调用画画方法就好了,如下图

浅谈安卓自定义view_第5张图片

这样一个自定义组件就写好啦,完整代码如下图

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);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawBitmap(getCircle(imageBitmap),0,0,mPaint);
    }

    //将bitmap转换成圆形bitmap
    public 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里面代码是这样的



    


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

最后效果:

浅谈安卓自定义view_第6张图片

诺~自定义的圆形imageview出来啦

不过这里的是写死图片的,下一节我们说下怎么弄为可在代码动态设置图片,也可以在xml里面加入图片地址的

 

发表评论

添加代码片

  • HTML/XML
  • objective-c
  • Ruby
  • PHP
  • C
  • C++
  • JavaScript
  • Python
  • Java
  • CSS
  • SQL
  • 其它

还能输入1000个字符

Android自定义View(二、深入解析自定义属性)

u010163442 u010163442

05-21 2.5万

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51454685 本文出自:【openXu的博客】 [TOC] 在上一篇博...

自定义View,有这一篇就够了

huachao1001 huachao1001

06-03 5.6万

我的简书同步发布:自定义View,有这一篇就够了 为了扫除学习中的盲点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容并没有什么独特,其他大神...

Android (非常重要)如何实现自定义View

qq_28057541 qq_28057541

08-02 2532

一个设计的好的自定义view,有着丰富的特性和简单的接口。它可以有效的使用cpu和内存。所以一个自定义view必须满足以下几点: 符合Android的规范 提供可以和Android XML 布局相适应...

自定义View(三)---自定义View整个流程的梳理与总结

cjm2484836553 cjm2484836553

04-30 1282

转载请注明出处:From李诗雨—http://blog.csdn.net/cjm2484836553/article/details/71024436 不诗意的女程序猿不是好厨师~ 在自定义Vi...

下载

安卓自定义View

04-05

博客介绍https://blog.csdn.net/jinmie0193/article/details/79824497

自定义View学习-绘制一个简单的圆

wangbin_learn wangbin_learn

04-26 2431

想把平时学到的关于自定义View的一些东西记录下来,从最基本的慢慢往难学吧。这篇是简单的不能再简单的绘制,算是一个入门吧。做了两个,一个是就显示圆。还有一个是绘制的圆根据手指滑动的位置来移动。并且圆的...

Android自定义View的官方套路

yissan yissan

04-12 1.7万

概述Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了。自定义控件对于初学者总是感觉是一种复杂的技术。因为里面涉及到的知识点会比...

安卓自定义view

weixin_37166398 weixin_37166398

07-18 18

安卓的自定义view ,主要分为两种方式: 1.组合控件,类似于 即时通讯中的聊天的titlebar 可以写成一个 自定义的view ,其实就是一些控件的组合 2.自定义的view,继承于view...

鸿洋大神博文Android 自定义View (一)中自定义属性所遇到的坑

qq_21265915 qq_21265915

02-24 730

原因是由于接触安卓也这么久了,但是自定义view这方面一直没怎么了解, 尤其是对于自定义属性的使用。 由于最近app上需要用到自定义View,于是决定把自定义View的坑填上(毕竟安卓中自定义View...

Android自定义View——从零开始实现水波浪进度框

lly347705530 lly347705530

10-17 659

本系列教程博客,我都会将自己实现的思路写下来,带大家一步步从零开始实现我们想要的效果。因为最近在网上看了很多前辈们实现的 水波浪进度框,一时手痒,所以任性地决定这系列的第二篇博客的主角就是它了...

相关热词

浅谈抢红包 浅谈http 后缀数组浅谈 浅谈splay 场景浅谈

安卓面试之=》自定义View

lfc18606951877 lfc18606951877

06-19 992

纯属个人笔记,学习慕课网视频笔记!!!!! 1:自定义属性的声明和获取 分析要需要的属性 在res/values/attrs.xml中进行定义声明,在使用自定义控件xml中使用 在自定义...

安卓自定义view实现彩票刮刮卡效果

qq_27607229 qq_27607229

11-28 288

欢迎来到亮亮的博客我是一名在校大学生,目前学的是软件,今天我的个人微博也算是开通了,那么我要说的第一个就是我自己研究的安卓,在看自定义view这块时,我特意去找了几位大神的博客看了下,有一位是专门研究...

安卓开发自定义权限以及权限的级别

a937896607 a937896607

01-11 1290

在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。如果应用需要执行某些操作,就需要声明使用这个操作对应的权限。 (在manifest...

自定View

zsp_android_com zsp_android_com

08-06 23

简介 xxx 方法 drawRect(float left, float top, float right, float bottom, Paint paint) Draw the s...

Android 中自定义View的初步总结

yuminfeng728 yuminfeng728

06-08 4109

概述在开发过程中,经常会遇到系统中提供的控件无法满足产品的设计需求,这时可能就需要考虑使用自定义的View来实现产品的设计细节了。对于自定义View,可以分为两种,一种是自定义控件(继承View),另...

安卓基础:自定义View

qq_38845493 qq_38845493

06-18 41

一.自定义View分类 View下面有 ImageView ImageButton QuickContactBadge AppCompatImageView ...

手把手教你写一个完整的自定义View

carson_ho carson_ho

03-14 2.9万

前言 自定义View是Android开发者必须了解的基础 今天,我将手把手教你写一个自定义View,并理清自定义View所有应该的注意点 阅读本文前,请先阅读我写的一系列自定义View文章 ...

Android自定义View绘制流程小结

wjw190077 wjw190077

01-24 999

总之一句话,当系统控件满足不了我们的需求时,就需要自定义View来实现,足以表达自定义有多么强大! 通过网上资料和结合自己实践,这篇文章主要用来理解绘制流程的一个具体过程的,绘制流程的起始都是在Vi...

Android自定义View——从零开始实现雪花飘落效果

lly347705530 lly347705530

11-23 1490

转眼已是十一月下旬了,天气慢慢转冷,不知道北方是不是已经开始下雪了呢?本期教程我们就顺应季节主题,一起来实现雪花飘落的效果吧...

Android 自定义View (一)

lmj623565791 lmj623565791

04-21 40.4万

很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章。先总结下自定义View的步骤...

一步一步学自定义View(1.简单入门)

androidxiaogang androidxiaogang

02-23 1046

1、自定义Viewandroid中可能遇到很多需求要求自定义view,一般github上都有各种各样的酷炫效果自定义view,特别是仪表盘,柱状图,饼状图都有,但还是不免遇到一些特别的需求,自定义样式...

Android 通过图片进行自定义View绘制

zhanggang740 zhanggang740

06-30 1472

通过Android自定义图表:ChartView和自定义View实现渲染 我们已经了解了如何简单的去绘制一个自定义View-图表和在如何去对一个自定义View中起部分内容进行渲染。 这次我们来了解...

Android自定义View 一<最简单自定义View>

qq_36209474 qq_36209474

03-19 3629

为什么要自定义Viewandroid提供了很多控件供我们使用 但有些功能是系统所提供的实现不 了的 这时候我们就需要自定义一个View来实现我们所需要的效果. 在Android中所有的控件都直...

Android自定义View(一、初体验自定义TextView

u010163442 u010163442

05-19 2.8万

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51376048 本文出自:【openXu的博客】 继承View重写onDraw...

Android自定义View使用总结

wenzhi20102321 wenzhi20102321

11-29 3149

View是一个Android视图的基础类,这个类是用户接口的基础构件。 View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。...

Android开发-自定义View-AndroidStudio(八)自定义View初体验

iwanghang iwanghang

12-21 1832

转载请注明出处:http://blog.csdn.net/iwanghang/article/details/53783417 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 老规矩,先上效果图,看个...

安卓自定义View实现简单折线图

qq_19560943 qq_19560943

02-21 1341

自定义View实现折线图:运行效果: 少说废话,实现起来还是比较简单的,无非就是使用canvas进行绘图,以及坐标的计算,下面直接贴代码:ChartView.java/** * Created b...

自定义View Layout过程 - 最易懂的自定义View原理系列(3)

carson_ho carson_ho

02-20 1.4万

前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化 等 今天,我将全面总结自定义V...

自定义View基础 - 最易懂的自定义View原理系列(1)

carson_ho carson_ho

02-20 1.7万

前言 自定义View原理是Android开发者必须了解的基础; 在了解自定义View之前,你需要有一定的知识储备; 本文将全面解析关于自定义View中的所有知识基础。 目录1. View的分类视图Vi...

自定义View Measure过程 - 最易懂的自定义View原理系列(2)

carson_ho carson_ho

02-20 1.6万

前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化 等 今天,我将全面总结自定义Vi...

Android自定义View-自定义组件

yilei0033 yilei0033

03-05 136

Android自定义组件 android自定义组件一般有三种实现方式: 一、组合控件:组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。 二、自绘控件:...

Android自定义View的三种实现方式

luckrr luckrr

07-07 227

参考别人的文章,简明易懂,留个笔记  参考原文链接 在毕设项目中多处用到自定义控件,一直打算总结一下自定义控件的实现方式,今天就来总结一下吧。在此之前学习了郭霖大神博客上面关于自定义View的几...

下载

Android自定义View

09-15

*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M *详细原因: 取  消 提  交 Android自定义View 5积...

Android自定义view之自己真正意义上的自定义view

submit66 submit66

04-23 83

      之前的自定义view文章也写了几篇了,但是也一直是局限于搞懂系统API如何使用等,还是没有真正的实践过,今天这篇文章算是自己真正意义上的第一次自定义view,就是做了一个常见的尺子效果的半...

Android自定义view+文字

Startpoupee Startpoupee

12-27 142

MainActivitypackage com.gjl.day03_after;import android.support.v7.app.AppCompatActivity; import andr...

Android自定义View实现不断旋转的圆形图片

Moing557 Moing557

06-18 1924

自定义View是android开发的一个重要技能,用android提供的2/3D绘制相关类可以实现非常多炫酷的效果,需要实打实的编程基础。(吧)。 但是自定义View又是我的弱项,所以最近都在摸索、练...

android自定义view-打造圆形ImageView(一)

SmartIceberg SmartIceberg

03-29 6320

前言: 大家在很多应用不难发现,用户的头像那一块的imageview是圆形的,可是我们并没有现成的圆形ImageView调用,那么最常见的思路就是自己去写一个属于自己的圆形ImageView,基于这样...

Android 自定义View——蒙版擦除效果实现

To_be_Designer To_be_Designer

09-18 5374

在《Android PorterDuff.Mode图形混合处理 》这篇博客中,我们讲解了PorterDuff.Mode对图形混合的处理。这篇我们将通过图形混合的原理,来制作一个手动擦除蒙版显示底层图片...

Android刮刮卡的实现

c1392851600 c1392851600

03-17 330

        做了几年开发以前都是去看书, 看大神的博客, 看别人的文章, 确实收获了不少, 遇到不会的就查, 看到别人写好的第三方控件就拿过来用 , 使用别人制造的轮子感觉灰常好, 还节省时间, ...

CircleImageView用法及源码解析(雷惊风)

liuyonglei1314 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] 我的邮箱是[email protected]

  • android 小米时钟的实现

    qq_41613677:您好 我用这个为什么超出了屏幕,画布太大,只显示一部分,需要加什么属性吗?< com and...

  • 设置图片inSampleSize但...

    wsyizmao:欢迎大家评论啊

联系我们

客服

请扫描二维码联系客服

[email protected]

400-660-0108

QQ客服 客服论坛

关于招聘广告服务 网站地图

©2018 CSDN版权所有 京ICP证09002463号

百度提供搜索支持

经营性网站备案信息

网络110报警服务

中国互联网举报中心

北京互联网违法和不良信息举报中心

CSDN APP

  • 点赞取消点赞

    0

  • 评论

     

  • 收藏
  • 手机看
  • 上一篇
  • 下一篇
  • 更多
    • 上一篇
    • 下一篇

 

 

 

 

你可能感兴趣的:(浅谈安卓自定义view)