Android中自定义View可以分两种,一种为使用系统提供View来拼成一个想要的View(比如在程序中多次出现同样的view,可以共用,相当于封装吧),另一种为自己直接使用Paint画。
本文是属于第一种,大概可分4个步骤,如果不需要自定义标签属性第一步则可跳过。
代码如下:
1. 写一个attrs:(如果不需要自定义属性则不需要)
<declare-styleable name="MyLayoutView">
<attr format="reference" name="tile" />
<attr format="reference" name="tittle" />
<attr format="reference" name="content" />
</declare-styleable>
2. layout布局(my_layout.xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/my_tile"
android:layout_marginLeft="15dip"
android:orientation="vertical" >
<TextView
android:id="@+id/my_tittle"
style="@style/T7_2_Subhead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dip"
android:includeFontPadding="false"
android:text="" />
<TextView
android:id="@+id/my_description"
style="@style/T7_5_Bodycopy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false" />
</LinearLayout>
<TextView
android:id="@+id/my_tile"
android:layout_width="200dip"
android:layout_height="200dip"
android:layout_alignParentRight="true"
android:scaleType="fitXY" />
</RelativeLayout>
</LinearLayout>
3. 编写MyLayoutView:
packge com.a.b;
public class MyLayoutView extends LinearLayout {
private int tile;
private int tittle;
private int content;
private ImageView tileView;
private TextView tittleView;
private TextView contentView;
private View view;
public MyLayoutView(Context context) {
super(context);
}
public MyLayoutView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.MyLayoutView);
tile = array.getResourceId(R.styleable.MyLayoutView_tile, -1);
tittle = array.getResourceId(R.styleable.MyLayoutView_tittle, -1);
content = array.getResourceId(R.styleable.MyLayoutView_content, -1);
LayoutInflater inflater = LayoutInflater.from(context);
this.view = inflater.inflate(R.layout.my_layout, null);
tileView = (ImageView) view.findViewById(R.id.my_tile);
tittleView = (TextView) view.findViewById(R.id.my_tittle);
contentView = (TextView) view.findViewById(R.id.my_description);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
this.initialize();
}
private void initialize() {
tileView.setImageResource(tile);
tittleView.setText(tittle);
contentView.setText(content);
LinearLayout.LayoutParams activityParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
this.removeView(this.view);
this.addView(this.view, activityParams);
}
}
4. 使用:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my="http://schemas.android.com/apk/res/com.a.b"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.a.b.MyLayoutView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
my:content="@string/my_summary1"
my:tile="@drawablemy_one_image"
my:tittle="@string/my_tittle1" />
</RelativeLayout>
相关推荐
仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...
Android 自定义 View 实现转盘旋转的效果 Android 的自定义 View 为开发者定义和使用个性化的 View 提供了很好的支持,想要使用自己定义的 View,需要继承 View 类,并重写构造函数和 onDraw() 函数。onDraw 函数...
总的来说,这个项目涵盖了Android自定义View的基本流程,以及图形绘制、颜色处理、动态更新等核心知识点,是学习Android自定义组件的一个良好实践。通过学习和研究,开发者不仅可以掌握自定义View的开发技巧,还能...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。"Android 自定义View界面大合集"的主题涵盖了这个领域的广泛知识点,包括但不限于...
这个过程涉及到了Android自定义View的基本原理,包括绘图、触摸事件处理、动画和布局管理等。了解并掌握这些知识,对于提升Android应用的用户体验具有重要意义。想要了解更多关于Android自定义View的内容,可以访问...
方便调用,有示例。 Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View。kotlin编写的一个自定义View。
总结来说,创建Android自定义View模板并实现点击事件的回调,主要包括以下步骤: 1. 定义XML资源文件(如attrs.xml),声明自定义属性。 2. 创建自定义View类,继承自适当的父View类,如`RelativeLayout`。 3. 在...
在Android开发中,自定义View是一项重要的技能,它允许开发者突破系统提供的标准组件限制,创造出独特且富有创意的用户界面。本资源“Android 自定义view 大合集源码”由知名开发者雨松MOMO提供,旨在深入探讨并实践...
Android自定义View,实现画直线、折现,拖动点可以随意移动位置。实现横竖屏切换时,坐标根据分辨率进行转换。
本项目"Android自定义view,实现多画面播放器"就是这样一个实例,它旨在提供一个能够同时展示多个视频流并支持交互操作的视图。 首先,自定义View的基本流程包括: 1. 创建一个新的View类,通常继承自View或已有的...
本篇博文源码聚焦于Android自定义View的基础实例,旨在帮助开发者掌握自定义View的基本步骤和技巧。 首先,自定义View通常涉及到以下几个关键点: 1. **创建新的View类**:开发者需要继承一个已有的View类,如View...
我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能 http://blog.csdn.net/ouyang_peng/article/details/50813419 1、实现歌词同步滚动的功能,即歌曲播放到哪句...
在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的UI元素,提升用户体验。本文将深度剖析如何实现一个名为“水晶/水滴 波浪球”的自定义View,并通过详细步骤讲解,帮助你掌握...
在博客文章“Android自定义View的事件分发机制(一)”中,作者jsonnan详细阐述了这些概念,并可能通过实例代码展示了如何在自定义View中实现自定义的事件分发逻辑。通过阅读这篇文章,开发者可以更深入地理解...
总结,Android自定义View中的原点坐标问题涉及到视图的测量、布局、绘制和事件处理等多个方面。开发者需要深入理解这些概念,才能灵活地创建满足需求的自定义视图。通过源码学习、使用合适的工具以及不断实践,可以...
本项目"Android自定义View之高仿QQ健康"旨在教你如何模仿流行的QQ健康应用,利用谷歌的Material Design风格来设计自定义界面,提供一个既美观又实用的样式。 首先,我们来了解一下Material Design。它是谷歌推出的...
Android自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View...
在Android开发中,自定义View是一项重要的技能,它允许开发者扩展Android系统提供的基本视图组件,以满足项目中独特的需求。本篇文章将深入探讨如何基于鸿洋大神的博客内容,创建一个自定义的验证码View。 验证码的...
在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且富有表现力的用户界面。本篇文章将深入探讨如何实现一个环形带刻度的进度条,这个自定义View适用于各种需要展示进度的情况,比如...