android开发:Android 中自定义View的应用
大家好我们今天的教程是在Android 教程中自定义View 的学习,对于初学着来说,他们习惯了Android 传统的页面布局方式,如下代码:
- <?xml version="1.0" encoding="utf-8"?>
 - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="fill_parent"
 - >
 - <TextView
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:text="@string/hello"
 - />
 - </LinearLayout>
 
复制代码
当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:
- <?xml version="1.0" encoding="utf-8"?>
 - <A>
 - <B></B>
 - </A>
 
复制代码
其中A extends LinerLayout, B extends TextView.
- package com.android.tutor;
 - import android.content.Context;
 - import android.graphics.Canvas;
 - import android.graphics.Color;
 - import android.graphics.Paint;
 - import android.graphics.Rect;
 - import android.graphics.Paint.Style;
 - import android.util.AttributeSet;
 - import android.view.View;
 - public class MyView extends View {
 - private Paint mPaint;
 - private Context mContext;
 - private static final String mString = "Welcome to Mr Wei's blog";
 - public MyView(Context context) {
 - super(context);
 - }
 - public MyView(Context context,AttributeSet attr)
 - {
 - super(context,attr);
 - }
 - @Override
 - protected void onDraw(Canvas canvas) {
 - // TODO Auto-generated method stub
 - super.onDraw(canvas);
 - mPaint = new Paint();
 - //设置画笔颜色
 - mPaint.setColor(Color.RED);
 - //设置填充
 - mPaint.setStyle(Style.FILL);
 - //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
 - canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);
 - mPaint.setColor(Color.BLUE);
 - //绘制文字
 - canvas.drawText(mString, 10, 110, mPaint);
 - }
 - }
 
复制代码
然后将我们自定义的View 加入到main.xml 布局文件中,代码如下:
- <?xml version="1.0" encoding="utf-8"?>
 - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="fill_parent"
 - >
 - <TextView
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:text="@string/hello"
 - />
 - <com.android.tutor.MyView
 - android:layout_width="fill_parent"
 - android:layout_height="fill_parent"
 - />
 - </LinearLayout>
 
复制代码

android开发:Android 中自定义View的应用的更多相关文章
- Android中自定义View和自定义动画
		
Android FrameWork 层给我们提供了很多界面组件,但是在实际的商业开发中这些组件往往并不能完全满足我们的需求,这时候我们就需要自定义我们自己的视图和动画. 我们要重写系统的View就必须 ...
 - Android开发艺术探索笔记——View(二)
		
Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...
 - Android开发艺术探索笔记—— View(一)
		
Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...
 - Android开发——Android多进程以及使用场景介绍
		
个层级,具体可以查看Android开发--Android进程保活招式大全中1.1部分的内容,这里就不赘述了. 根据进程中当前活动组件的重要程度,Android 会将进程评定为它可能达到的最高级别.例如 ...
 - Android开发-Android Studio问题以及解决记录
		
[Android开发] Android Studio问题以及解决记录 http://blog.csdn.net/niubitianping/article/details/51400721 1.真 ...
 - Android开发——Android M(6.0) 权限解决方案
		
Android开发--Android M(6.0) 权限解决方案 自从Android M(6.0)发布以来,权限管理相比以前有了很大的改变,很多程序员发现之前运行的好好的Android应用在Andro ...
 - Android Studio开发基础之自定义View组件
		
一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类.例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤: 一.创建一个继承自an ...
 - android中自定义view构造函数ContentItemView(Context context, AttributeSet paramAttributeSet)的用处
		
自己定义一个view <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...
 - Android中自定义View的MeasureSpec使用
		
有时,Android系统控件无法满足我们的需求,因此有必要自定义View.具体方法参见官方开发文档:http://developer.android.com/guide/topics/ui/custo ...
 
随机推荐
- EL—表达式
			
El的数据访问操作: 1:获取变量名(四大作用域中的变量?六大作用域?) 只能从这六个区域中拿数据!!! 2:获取对象的属性值 3:获取集合元素 4:执行表达式 1:获取变量名(四大作用域中的变量) ...
 - Servlet—基础
			
什么是Servlet? 1 . jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代 码,Web容器将JSP的代码编译成JVM能够识别 ...
 - 人生苦短之我用Python篇(socket编程)
			
socket模块 实现简单的远程连接: 客户端: import socket client = socket.socket()#声明socket类型,同时生成socke连接t对象 client.con ...
 - 浅谈CDN加速问题
			
(以百度CDN进行分析) 婆说婆有理,公说公有理.是否使用CDN,不同的工程师有不同的意见. 这里呢我来进行一下简单的分析. [正方观点] 1. 提升网站加载速度:CDN通过缓存技术提升网站打开速度, ...
 - uva1330 在一个大的矩阵中寻找面积最大的子矩阵
			
大白书 P50页 #include <algorithm> #include <cstdio> using namespace std; ; int ma[maxn][maxn ...
 - EditPlus 4.3.2502 中文版已经发布(12月5日更新)
			
新的版本修复了在之前某版本中键盘 End 键定位位置错误的问题.
 - jquery ajax基本用法
			
<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script> <s ...
 - 数据仓库原理<3>:数据仓库与ODS
			
1. 引言 本篇主要讲述操作数据存储(ODS)系统产生的背景.定义.特点,以及它与数据仓库的区别. 在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者 ...
 - JS实现仿腾讯微博无刷新删除微博效果代码
			
这里演示JS仿腾讯微博无刷新删除效果,将显示在微博列表里的内容删除,运用AJAX技术,无刷新删除微博的内容,参考性强,希望对初学AJAX的朋友有所帮助. 在线演示地址如下: http://demo.j ...
 - iOS之第三方库以及XCode插件介绍
			
前言 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 ...