【Android 应用开发】自定义View 和 ViewGroup(二)

简介: 【Android 应用开发】自定义View 和 ViewGroup(二)

2. xml文件



在这个xml文件中, 引入自定义的布局, 使用完整的类名包名可以引入该自定义View组件;


引入组件后, 充满整个布局;



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <shuliang.han.followball.FollowBallView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>


3. Activity中显示该组件




public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

4. 效果图





三. ViewGroup简介



1.View和ViewGroup关系



UI组件在Android中的位置 : Android中的UI组件大部分都放在android.widget 或者 android.view包中;  View组件 和 ViewGroup组件都在android.view包中;




View 和 ViewGroup关系 :


继承关系 : ViewGroup是View的子类, 因此ViewGroup有View的一切属性, 可以当做View来使用, ViewGroup主要是当做容器使用; View是小控件widget和容器组件ViewGroup的父类, ViewGroup是布局如LinearLayout的基类;


包含关系 : ViewGroup中可以包含View和ViewGroup, ViewGroup可以无限嵌套;




View和ViewGroup关系图解 :




抽象类 : ViewGroup是一个抽象类, 作为容器的类通常是ViewGroup的子类; ViewGroup子类对象有 : LinearLayout, FrameLayout等布局;




2. ViewGroup中的内部类



两个内部类 :


ViewGroup通过Viewgroup.LayoutParams和ViewGroup.MarginLayoutParams来控制容器中的组件;


ViewGroup.LayoutParams支持的XML属性 :


android:layout_height属性(指定布局高度) 和 android:layout_width属性(指定布局宽度), 这两个属性的值可以为 fill_parent, match_parent, wrap_content, 其中充满布局空间推荐使用match_parent;




组件的宽高 与 布局的宽高 : Android的组件的高度和宽度不是其实际的宽度和高度, 组件实际的高度和宽度同样受布局的宽高影响, 例如设置组件的宽度为100px, 如果设置布局宽度(layout_width)为match_parent, 那么组件的实际宽度就会被拉宽到整个布局, 如果设置布局的宽度为wrap_content, 那么组件的实际宽度就是100px;




ViewGroup.MarginLayoutParams支持的XML属性 :


android:layout_marginBottom : 指定该子组件到父容器下边界的距离, 同理android:layout_marginTop, android:layout_marginLeft, android:layout_marginRight,




3. View介绍



View可以有两种方式创建 : 一种是靠XML文件创建, 一种是靠代码创建;




这里只是简单的介绍下, View详细的属性会单独有一篇博客进行总结;




View创建关注的方面 :


(1)设置属性


长宽等属性可以在XML中设置, 也可以在代码中设置;




(2)请求焦点


可以通过函数实现焦点转变, 可以根据不同的焦点设置背景;


焦点类别 : 可获取的焦点, 不可获取的焦点, 可以获取但是正在触摸状态下的焦点;




(3)设置事件监听


View在本身发生变化的时候, 会将信息广播出去, 这边变化例如 : 点击, 焦点改变等;


一个事件的广播到来, 该事件就会传递到相应的View中对应的监听器里, 相当于回调View中的监听器方法;




(4)设置显示与隐藏


View可以在XML或者代码中设置是否显示或者隐藏. 同样也可以设置滚动条等设置;



目录
相关文章
|
8月前
|
XML Java Android开发
Android自定义view之网易云推荐歌单界面
本文详细介绍了如何通过自定义View实现网易云音乐推荐歌单界面的效果。首先,作者自定义了一个圆角图片控件`MellowImageView`,用于绘制圆角矩形图片。接着,通过将布局放入`HorizontalScrollView`中,实现了左右滑动功能,并使用`ViewFlipper`添加图片切换动画效果。文章提供了完整的代码示例,包括XML布局、动画文件和Java代码,最终展示了实现效果。此教程适合想了解自定义View和动画效果的开发者。
398 65
Android自定义view之网易云推荐歌单界面
|
8月前
|
XML 前端开发 Android开发
一篇文章带你走近Android自定义view
这是一篇关于Android自定义View的全面教程,涵盖从基础到进阶的知识点。文章首先讲解了自定义View的必要性及简单实现(如通过三个构造函数解决焦点问题),接着深入探讨Canvas绘图、自定义属性设置、动画实现等内容。还提供了具体案例,如跑马灯、折线图、太极图等。此外,文章详细解析了View绘制流程(measure、layout、draw)和事件分发机制。最后延伸至SurfaceView、GLSurfaceView、SVG动画等高级主题,并附带GitHub案例供实践。适合希望深入理解Android自定义View的开发者学习参考。
754 84
|
8月前
|
前端开发 Android开发 UED
讲讲Android为自定义view提供的SurfaceView
本文详细介绍了Android中自定义View时使用SurfaceView的必要性和实现方式。首先分析了在复杂绘制逻辑和高频界面更新场景下,传统View可能引发卡顿的问题,进而引出SurfaceView作为解决方案。文章通过Android官方Demo展示了SurfaceView的基本用法,包括实现`SurfaceHolder.Callback2`接口、与Activity生命周期绑定、子线程中使用`lockCanvas()`和`unlockCanvasAndPost()`方法完成绘图操作。
252 3
|
Android开发
Android 自定义View 测量控件宽高、自定义viewgroup测量
Android 自定义View 测量控件宽高、自定义viewgroup测量
739 0
|
XML Android开发 数据格式
Android 中自定义ViewGroup实现流式布局的效果
Android 中自定义ViewGroup实现流式布局的效果
214 0
|
XML 前端开发 Android开发
Android自定义View-入门(明白自定义View和自定义ViewGroup)
为什么要自定义View? 主要是Andorid系统内置的View 无法实现我们的 需求,我们需要针对我们的业务需求定制我们想要的 View.
204 0
Android自定义View-入门(明白自定义View和自定义ViewGroup)
|
XML Android开发 数据格式
android自定义View&自定义ViewGroup(下)
本篇来看看自定义ViewGroup
270 0
|
XML 前端开发 Android开发
android自定义View&自定义ViewGroup(上)
自定义View&自定义ViewGroup
229 0
|
XML Android开发 数据格式
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
Android自定义控件(十一)——自定义ViewGroup实现LinearLayout
668 0
|
XML Android开发 数据格式
【Android 应用开发】自定义View 和 ViewGroup(一)
【Android 应用开发】自定义View 和 ViewGroup(一)
222 0

热门文章

最新文章