所有的布局类和视图类都是继承View类。
当Android系统提供的一些View子类不能满足需求的时候,就需要自定义个View子类。
方法1: 直接继承View类
方法2: 继承View类的一个子类,例如:如果需要一个带有图像的TextView类,自定义类就可以直接去继承TextView类。
MyView类
package com.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View{
private static final String namespace = "http://schemas.android.com/apk/res/android";
private String mText;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
mText = attrs.getAttributeValue(namespace, "text");
if(mText == null) {
mText="";
}
}
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setColor(Color.WHITE);
p.setTextSize(30);
canvas.drawText(mText, 100, 100,p);
super.onDraw(canvas);
}
public String getmText() {
return mText;
}
public void setmText(String mText) {
this.mText = mText;
}
}
View类有三个构造方法,这里只实现了其中的一个带2个参数的构造,因为当在程序中,使用findViewById(id)获得组件实例的时候,调用的是带有2个参数的构造方法。
使用第二个参数的一些方法,可以在自定义类设定自己的属性,去XML文件里面定义的属性去找。
namespace为命名空间不多解释。
使用命名空间和不使用命名空间的区别:
mText = attrs.getAttributeValue(namespace, "text");
这里使用了命名空间,则在给mText赋值的时候,相对应于xml中的 android:text="呵呵呵呵"
mText = attrs.getAttributeValue(null, "texttext");
如果未使用命名空间,相对应xml中的 texttext="呵呵呵呵"
补上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"
>
<com.view.MyView
android:id="@+id/mtext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="呵呵呵呵"
/>
</LinearLayout>
分享到:
相关推荐
吴恩达(Andrew)老师,斯坦福大学,Couresra,机器学习课程的课件1-4
吴恩达课程作业和代码,整合了别人的思路,再加上自己的理解修改过的,希望能帮助到一些有需要的人!
Andrew.S著,潘爱民译,计算机网络权威著作,历经多年教学实践检验,内容全面,语言简洁流畅,深入浅出。
通过Github及官方等渠道获取的练习数据中发现普遍存在第七次练习ex_7主成分分析的内容缺失不全数据无法正常解压的问题,特此花费不菲积分换购CSDN资源整理压缩后重新上传,以飨诸公!
Andrew S. Tanenbaum - Distributed Operating Systems
Coursera-ML-AndrewNg-Notes markdown.rar 总结的很不错,电脑需要安装看markdown的工具,配合Coursera课程,深度学习
吴恩达 大师的 机器学习笔记,完整清晰版pdf文件及markdown源文件
吴恩达(Andrew)老师,斯坦福大学,Couresra,机器学习课程的课件5-6
GitHub上下载的开源资料,和大家分享。
Coursera NG吴恩达机器学习课程作业,以及题解Python版本。
主要包括:线性回归、Logistic回归、决策树、支持向量机、朴素贝叶斯、K均值聚类、K近邻、PCA
IOS应用源码之andrew0-cocoshop-v0.1.4-0-gd759ffd.zip
Andrew-improove-css-skills项目 教育项目 :rocket: :collision: :full_moon:
machine-learning-andrew-ng:Andrew-Ng提供的Coursera机器学习课程的代码
Andrew Ng What's Next in AI 迈向 AI 的关键下一步 演讲PPT
Coursera—machine learning(Andrew Ng)编程作业ex1-ex8,已完成课程,提交成功,供入门参考。
Andrew-Ng-ML 吴恩达机器学习 编程作业;If you are using Octave (>=3.8.0), or have an existing installation of MATLAB (), download this week’s programming assignment here. This ZIP-file contains the ...
Andrew-Ng-Machine-learning-ex 吴恩达Coursera机器学习编程练习满分答案,可供参考 使用matlab完成,部分代码注释待完善,哪天有空了加 Exercise 1 Linear Regression Exercise 2 Logistic Regression Exercise 3 ...
Octave语言 斯坦福机器学习课程作业答案 Coursera-机器学习(吴恩达)第二周 week2 编程作业答案
Andrew.Ng-ML-Study 吴恩达机器学习,深度学习。学习笔记和代码 coursera上也有吴恩达机器学习和深度学习对应课程。如果想写课后编程作业,强烈建议免费申请或购买对应的课程。 当初免费申请了coursera:深度学习...