[size=medium][/size]有时候Android自带的控件无法满足我们的某些要求,这时就需要我们自定义控件来实现这些功能。比如需要一个TextView里的字倾斜一定的角度,就需要自定义TextView。
下面介绍怎么自定义TextView。
首先新建一个继承自TextView的类,取名为RotateTextView:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.TextView;
public class RotateTextView extends TextView {
private static final String NAMESPACE = “http://www.ywlx.net/apk/res/easymobi”;
private static final String ATTR_ROTATE = “rotate”;
private static final int DEFAULTVALUE_DEGREES = 0;
private int degrees ;
public RotateTextView(Context context, AttributeSet attrs) {
super(context, attrs);
degrees = attrs.getAttributeIntValue(NAMESPACE, ATTR_ROTATE, DEFAULTVALUE_DEGREES);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.rotate(degrees,getMeasuredWidth()/2,getMeasuredHeight()/2);
super.onDraw(canvas);
}
}
一定要有带Context和AttributeSet参数的构造函数,getAttributeIntValue()里第一个参数是命名空间,类似于Android自带的”http://schemas.android.com/apk/res/android”,这里可以自己随便定义。第二个参数是传入的参数的值,这里是旋转地角度。第三个参数是默认值,就是不定义该属性时默认旋转的角度,这里是0度。然后重写onDraw()方法,rotate()作用是以TextView的中心为中点把画布旋转degrees度,这样就实现了字的旋转。
下一步就是在布局文件中使用自定义的TextView:
<cn.easymobi.application.memorytest.RotateTextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”8dip”
android:gravity=”center”
android:id=”@+id/tvBottom_color”
android:textSize=”15dip”
android:textColor=”@color/black”
easymobi:rotate=”10″
android:layout_marginTop=”468dip”
/>
其他属性与普通的TextView相同, easymobi:rotate=”10″指定了旋转10度,但是要注意在头文件加上xmlns:easymobi=”http://www.ywlx.net/apk/res/easymobi”,这个就是RotateTextView中的命名空间的作用。还有一点要注意的就是加上合适的padding,因为这种方法旋转的是TextView里面的字,而不是TextView本身,如果不加padding,有些字就会因为旋转而跑到了TextView外面而不能显示。
用类似的方法还可以实现各种各样你想要的效果。
分享到:
相关推荐
"android 开发进阶 自定义控件 类似 TextView" 这个主题,意味着我们将探讨如何基于TextView创建一个具有特定功能或视觉效果的新控件。TextView是Android系统中最基本且常用的组件之一,用于显示单行或多行文本。...
本文将深入探讨Android自定义控件的概念、重要性以及如何通过重写已有控件来扩展其功能,帮助开发者从初阶迈进高阶。 首先,我们了解什么是自定义控件。在Android系统中,预置了大量的标准控件,如Button、TextView...
在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。本教程主要探讨如何通过继承和组合的方式来自定义控件,适用于已经有一定Android基础的开发者进行进阶学习。 首先,我们来理解自定义...
这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者理解和实践自定义控件的创建过程。下面将详细探讨Android自定义控件的...
本资源"android自定义控件源码"提供了一套详细的自定义控件实现案例,帮助开发者深入理解自定义控件的工作原理和实现方法。配合文章《Android自定义控件深度解析》(文章地址:...
至此,我们完成了一个简单的Android自定义控件,它能展示图片和文字。然而,自定义控件的能力远不止于此。你可以添加更多的功能,如触摸事件处理、动画效果,甚至动态改变内容。通过深入理解Android的绘图API和布局...
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例将深入讲解如何基于Android系统实现一个自定义的Button控件,该控件由一个ImageView和一个TextView组成,并添加了标签功能。以下我们将从...
在Android开发中,自定义控件和框架的运用是提升应用独特性和性能的关键。下面将对"android 自定义控件实现demo收集 及 框架收集"这一主题进行深入探讨。 首先,自定义控件在Android应用开发中扮演着重要角色。它们...
在"Android 自定义控件实例"中,可能包含了一个具体的自定义控件案例,比如一个组合了多个TextView和ImageView的复杂视图。这个实例可能会涉及到以下几个方面: 1. 视图组合:创建一个自定义ViewGroup,将TextView...
在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何根据【标题】"Android自定义...如果你下载并研究这个"自定义组合控件"的示例,相信你会对Android自定义控件有更深入的理解。
"android自定义横向跑马灯TextView"就是一个典型的示例,它允许文字在一个视图内不断滚动,模拟LED显示屏上的跑马灯效果。这种效果通常用于显示通知、提示信息或者标题,即使只有一个字符也能实现滚动。 跑马灯效果...
这份"Android自定义控件开发.rar"压缩包包含了一本名为《Android自定义控件开发入门与实战》的PDF教程,旨在帮助Android开发者深入理解和实践自定义控件的创建。 自定义控件在Android开发中的价值主要体现在以下几...
`android 可折叠TextView` 自定义控件就是为了解决这个问题而设计的。这种控件允许用户点击后展开或收起文本,从而节省屏幕空间,同时保持信息的完整性和易读性。 自定义的可折叠TextView通常是通过继承Android原生...
1. **创建一个新的View类**:自定义控件通常从`View`或其子类(如`TextView`, `Button`等)继承。创建一个新类,如`MyCustomView`,并实现必要的方法,如`onDraw()`,用于绘制视图的内容。 2. **重写onDraw()方法**...
总之,Android自定义控件的开发需要对Android的图形绘制、事件处理和视图生命周期有深入理解。通过自定义控件,开发者可以根据具体需求打造出独特且功能丰富的界面元素,为用户带来更佳的使用体验。在实际开发中,应...
1. **创建新类**:自定义控件通常是继承自Android提供的基础视图类,如`View`、`TextView`、`Button`等。在这个例子中,我们可以假设`TestImgTextButton`是继承自`Button`的。 ```java public class ...
一个炒鸡简单的自定义走马灯TextView,跟原生的滚动方式不同。
本文将详细介绍 Android 自定义 Progress 控件的方法,包括自定义控件的创建、布局设计、属性设置、进度条显示等方面的知识点。 自定义控件的创建 自定义控件是指根据业务需求,使用 Java 语言编写的控件类。...
3.)第三种方式:)第三种方式:自定义组合控件 定义一个继承自ViewGroup的自定义组合控件,将标题栏的所有元素封装到一个自定义控件中。这样每次需要标题栏时,只需要在布局文件中添加该自定义控件即可,无需关心...
1. **创建自定义控件类**:在Mono for Android项目中,你可以通过继承已有的Android控件(如TextView、Button等)来创建新的自定义控件。例如,你可以创建一个名为`MyCustomButton`的类,继承自Android的`Button`类...