关于如何定制自己的View,查了相关的文档也看了一些例子,现在把自己的理解总结一下,和大家分享。
制定自己的View,一般要继承自某一类的View,然后完成构造方法,以及对onDraw()的重写,构造方法里面涉及到一些自定义的属性,自定义的属性在res/values下新建一个attrs.xml中申明,如下所示:
arrts.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView" >
<attr name="text_color" format="color" />
<attr name="text_size" format="dimension" />
</declare-styleable >
</resources>
在构造方法中属性的引用格式是:属性集合名_属性名,如这里要引用text_color属性,则是R.stylebale.MyView_text_color
接下来的重点就是自定义自己的View,先上代码:
package com.lee.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
private Paint myPaint;//画笔
private static final String BLOG = "http://xueyilee.iteye.com";
public MyView(Context context) {
super(context);
myPaint = new Paint();
}
/*
Constructor that is called when inflating a view from XML. This is called when a view is being constructed from an XML file, supplying attributes that were specified in the XML file. This version uses a default style of 0, so the only attribute values applied are those in the Context's Theme and the given AttributeSet.xml布局文件有该View时就调用此构造方法,属性会传给attrs
*/
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
myPaint = new Paint();
//获得TypedArray接口容器,通过它可以检索自定义的属性
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);
//检索属性值,第二个参数是默认值,如果没有定义则返回默认值
int textColor = ta.getColor(R.styleable.MyView_text_color, 0xff0000);
float textSize = ta.getDimension(R.styleable.MyView_text_size, 30);
myPaint.setColor(textColor);
myPaint.setTextSize(textSize);
ta.recycle();//这个回收方法一定不要忘了
}
/*当View渲染它的内容的时候调用此方法*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
myPaint.setStyle(Style.FILL);//设置填充
myPaint.setAntiAlias(true);//消除锯齿
canvas.drawCircle(50, 50, 30, myPaint);
myPaint.setColor(Color.BLUE);
canvas.drawText(BLOG, 20, 100, myPaint);
}
}
接下来就是布局文件了。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
//这个命名空间部分千万不要忘了,它是自定义属性前缀
xmlns:lee="http://schemas.android.com/apk/res/com.lee.view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.lee.view.MyView
android:layout_width="match_parent"
android:layout_height="wrap_content"
lee:text_color="#00ff00"
lee:text_size="20px"
/>
</LinearLayout>
差不多就这么多了,下面是程序运行后的结果:
- 大小: 12.6 KB
分享到:
相关推荐
Charting Library 是 TradingView 提供的一个开源项目,允许开发者在自己的网站上嵌入与 TradingView 相似的高质量图表。以下是一些基于这个库的重要知识点: 1. **技术指标**:Charting Library 支持上百种技术...
对于开发人员,理解HexView的源码能帮助你定制自己的十六进制查看器。源码中包含了文件读写、内存管理、用户界面交互等多个方面的实现,通过学习可以提升编程技能。 1. **文件读取与缓存** 源码中的文件读取模块...
这个工具包可能包括源代码和预编译的jar包,使得开发者可以直接将PDF查看功能整合到自己的应用中,无需依赖其他大型库,如Adobe Reader。 首先,PDFView的核心功能是加载和渲染PDF文档。在Android应用中,可以调用...
开发者可以利用这个库来在自己的网站上实现与TradingView类似的实时图表功能,让用户能够进行深度的技术分析。 在深入讲解知识点之前,我们需要了解几个关键概念: 1. **技术分析**:这是金融市场上的一种策略,...
对于源码部分,开发者可以通过阅读和理解代码来学习如何实现类似的功能,或者根据自己的需求进行定制。源码通常包含以下几个关键部分: 1. `ViewServer`服务:这是核心组件,负责接收并处理来自调试器的请求,呈现...
PowerView提供了一系列交互式的视图,如表格、图表、地图等,用户可以通过简单的拖放操作创建和定制。这些视图可以帮助用户发现数据中的模式、趋势和异常,从而进行更深入的数据分析。此外,PowerView还支持直接在...
通过这些知识的介绍,用户可以深入理解TradingView Charting Library的工作原理,掌握数据绑定、图表定制、以及交易终端等关键操作,从而更有效地在自己的应用中集成和使用TradingView提供的图表工具。
TradingView中文开发文档是专为中国用户设计的指南,旨在帮助开发者更好地理解和利用其API,创建自定义脚本,以及集成到自己的交易系统中。 在TradingView中,用户可以: 1. **技术分析图表**:利用内置的多种...
3. **命令行参数**:通过命令行参数,用户可以定制显示方式,例如调整缩放比例、旋转图像、翻转图像等。 4. **基本编辑功能**:虽然`aview`主要是一款查看工具,但它也提供了基本的图像操作功能,如裁剪、缩放和...
本课程“Android绘制View(view私人定制的必修课)”将深入探讨这一主题,帮助开发者掌握如何从零开始设计并实现自定义View。 首先,我们从基础开始,理解Android的View体系结构。Android的UI系统基于View和...
6. **命令行参数**:通过命令行参数支持,用户可以定制化启动和控制HexView,例如打开特定文件、设置初始位置、执行预定义的操作等。 7. **性能优化**:考虑到“cmdline亲测支持/csr9”,该版本可能对特定硬件进行...
TradingView是一款金融图表服务,它提供丰富的技术指标库和直接交易功能,广泛应用于金融市场中...文档内容丰富,覆盖了从基础入门到高级定制的各个方面,是开发者使用TradingView进行金融交易系统开发的宝贵参考资料。
总之,PopupWindow是Android开发中的一种强大工具,掌握其基本用法和各种定制技巧,能帮助我们创建出更美观、易用的用户界面。在实现PopupWindow的定位时,关键在于计算合适的偏移量,确保其与目标View的相对位置...
- 高度定制化的安全需求。 - 对性能有较高要求的场景。 #### 二、QlikView Server Small Business Edition (SBE) **概述:** - **目标用户:**为小型部署设计,适合中小型企业使用。 - **特点:** - 只能与命名...
本示例“ios 不规则view定制demo”聚焦于使用Objective-C编程语言实现这样的自定义视图,而Swift开发者也可以参考其原理进行转换。在iOS应用中,自定义视图通常用于创建自定义按钮、形状、图表或其他复杂UI组件。 ...
这意味着用户可以在不依赖TradingView的情况下,在自己的网站或应用中免费使用这一强大的图表工具。 - **特性**: ChartingLibrary提供了一个完全独立且自包含的解决方案,无需依赖外部服务即可运行。 - **安装步骤*...
它不仅简化了调试过程,提高了开发效率,还提供了丰富的定制选项,可以根据个人需求调整和过滤调试信息,对于提升软件质量及优化代码有着显著作用。通过深入理解和熟练运用DebugView,开发者能更好地驾驭复杂的编程...
通过阅读这份文档,开发者可以了解如何将ViewUI集成到自己的项目中,以及如何使用各个组件。通常,文档会介绍如何使用npm或yarn进行安装,以及如何配置项目以引入ViewUI的CSS和JavaScript文件。 "ViewUI-4.7.0...
在本文中,我们将深入探讨如何使用QT库中的QGraphicsView组件来实现一个简单的地图应用。QGraphicsView是QT框架中的一个重要部分,它提供了一个可扩展的2D图形视图,适用于构建各种图形用户界面,包括地图展示。 ...