Android应用界面开发(三)

本文深入探讨Android界面开发,涵盖Inflater的三种实例化方式、自定义控件的创建与监听器设置,Fragment的理解、生命周期、加载方法,以及Handler在多线程中的应用,包括消息机制和相关方法。
摘要由CSDN通过智能技术生成

一、Inflater与自定义控件

书接上回,我们现在来说一说Inflater。Inflater是将xml文件在Java文件中解析成视图的工具。它就相当于一个更大的findViewById,findVIewById是找xml文件中的控件,而Inflater则是找xml文件整个来做视图。

1.Inflater实例化的三种方式

工欲善其事必先利其器,无论我们使用什么工具,第一步都是将其实例化。

 mLayoutInflater = getLayoutInflater();
 mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
 mLayoutInflater = LayoutInflater.from(MainActivity.this);

是不是看起来很眼熟?对,在上一次我们再说listview的时候。就曾经使用过第二个方式来读取视图。那么,还记得我们在实例化之后怎么使用他的么?是的,我们使用了一个视图类型view使用Inflater方法得到了它。

View view = inflater.inflate(R.layout.custom, null);

在这之后,我们就可以使用view的名称.findViewById来找到控件进行操作了。如:

EditText editText = (EditText)view.findViewById(R.id.content);

2.如何自己画一个控件

自定义控件的方式是继承已有的控件、布局或直接继承view。这里以继承View为例

1/创建新的控件class并继承你想要继承的

public class MyLearn extends View{
   
    public MyLearn(Context context) {
        super(context);
    }

    public MyLearn(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyLearn(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

}

在继承后使用快捷键直接构成其构造器,然后在每个里面进行一次初始化。
当然,学过Java的小伙伴们都知道,使用this去调用其他的构造方法是一种重码率更低,更有效的方法。

    public TestRedButton(Context context) {
  this(context, null);}
    public TestRedButton(Context context, AttributeSet attrs) {
  this(context, attrs, 0);}
    public TestRedButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context,attrs, defStyleAttr);
        init(context,attrs);
    }

2/使用onDraw

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 做一个圆形的红色按钮
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值