Android 中自定义View的应用.

转载 2012年03月31日 10:43:58

来自:http://blog.csdn.net/android_tutor/article/details/5499731

大家好我们今天的教程是在Android教程中自定义View的学习,对于初学着来说,他们习惯了Android传统的页面布局方式,如下代码:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="@string/hello"  
  11.     />  
  12. </LinearLayout>  

 

当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <A>  
  3.     <B></B>  
  4. </A>  
  1. 其中A extends LinerLayout, B extends TextView.  

 

为了帮助大家更容易理解,我写了一个简单的Demo,具体步骤如下:

 

首先新建一个Android 工程 命名为ViewDemo.

 

然后自定义一个View类,命名为MyView(extends View).代码如下:

 

  1. package com.android.tutor;  
  2. import android.content.Context;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.Color;  
  5. import android.graphics.Paint;  
  6. import android.graphics.Rect;  
  7. import android.graphics.Paint.Style;  
  8. import android.util.AttributeSet;  
  9. import android.view.View;  
  10. public class MyView extends View {  
  11.     private Paint mPaint;  
  12.     private Context mContext;  
  13.     private static final String mString = "Welcome to Mr Wei's blog";  
  14.       
  15.     public MyView(Context context) {  
  16.         super(context);  
  17.       
  18.     }  
  19.     public MyView(Context context,AttributeSet attr)  
  20.     {  
  21.         super(context,attr);  
  22.       
  23.     }  
  24.     @Override  
  25.     protected void onDraw(Canvas canvas) {  
  26.         // TODO Auto-generated method stub  
  27.         super.onDraw(canvas);  
  28.           
  29.         mPaint = new Paint();  
  30.           
  31.         //设置画笔颜色  
  32.         mPaint.setColor(Color.RED);  
  33.         //设置填充  
  34.         mPaint.setStyle(Style.FILL);  
  35.           
  36.         //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标  
  37.         canvas.drawRect(new Rect(1010100100), mPaint);  
  38.           
  39.         mPaint.setColor(Color.BLUE);  
  40.         //绘制文字  
  41.         canvas.drawText(mString, 10110, mPaint);  
  42.     }  
  43. }  

 

然后将我们自定义的View加入到main.xml布局文件中,代码如下:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="@string/hello"  
  11.     />  
  12. <com.android.tutor.MyView  
  13.     android:layout_width="fill_parent"   
  14.     android:layout_height="fill_parent"   
  15. />  
  16. </LinearLayout>  

最后执行之,效果如下图:

 

 

 



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

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

Android 中自定义View的初步总结

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

Android--自定义View滑动的六种方法

概述由于移动平台屏幕尺寸大小的限制,为了给用户呈现更好的页面内容,我们需要通过滑动来实现一些页面内容的显示和隐藏操作。自定义View的方法 View.layout()方法 改变view的布局参数Lay...
  • hpk1994
  • hpk1994
  • 2016年04月21日 22:45
  • 667

Android中自定义View和自定义动画

Android FrameWork 层给我们提供了很多界面组件,但是在实际的商业开发中这些组件往往并不能完全满足我们的需求,这时候我们就需要自定义我们自己的视图和动画。 我们要重写系统的View就必...
  • lxq_xsyu
  • lxq_xsyu
  • 2013年12月11日 13:22
  • 6369

android中自定义View设置属性

记录一下,以方便以后用到,再次出错 1.首先需要在values/下面新建一个attrs.xml文件,将一些需要的一些属性填写进去,比如: 2.然后再布局中的xml中,需要填写命名空间, ...
  • u010680097
  • u010680097
  • 2015年09月07日 15:54
  • 937

Android应用自定义View绘制方法手册

这篇迟迟难产的文章算是对2015前半年的一个交代吧,那时候有一哥们要求来一发Android Canvas相关总结,这哥们还打赏了,实在不好意思,可是这事一放就给放忘了,最近群里小伙伴催着说没更新博客,...
  • yanbober
  • yanbober
  • 2016年04月04日 13:09
  • 22196

样式主题与自定义View 浅谈

样式主题与自定义View 样式和主题资源都是用于对Android应用进行美化的。 一、样式: (一)、介绍: 1、概念:Android中的样式和CSS样式作用相似,都是...
  • ElevenDGQ
  • ElevenDGQ
  • 2016年05月24日 15:57
  • 1033

Android自定义View获取自定义属性

首先扯点别的:今晚回家做了一个鱼香肉丝,刚学的,出锅以后,才想起没有放豆瓣酱,也是没谁了。不过吃起来还行,吃了三块煎饼。今天记录一下自定义View的构造函数的使用,以及如何获取自定义属性。先看一下自定...
  • leilifengxingmw
  • leilifengxingmw
  • 2017年04月18日 23:25
  • 1859

Android自定义View的用法总结

本文参考了:http://greenrobot.me/devpost/android-custom-layout/ Android SDK中提供了很多UI组件,如RelativeLayout, L...
  • bigconvience
  • bigconvience
  • 2015年05月23日 15:55
  • 4299

Android使用handler和Runnable结合,自定义View更新UI的Demo

前三周在修改android4.2锁屏UI,刚做android好多知识不会啊,里面有个动画效果是一个jian...
  • canghai1129
  • canghai1129
  • 2014年04月12日 12:07
  • 2248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 中自定义View的应用.
举报原因:
原因补充:

(最多只允许输入30个字)