Android布局加载-使用模版方法设计模式

*

一.安卓布局加载之使用模版方法设计模式进行布局加载

Android开发中一般我们进行一个activity页面布局加载是在活动的生命周期函数onCreate()方法中进行。代码如下:

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

通常我们的思路就是创建一个activity就重写他的onCreate()方法,虽然这种方式能实现但是对于一个稍有经验的安卓开发工程师来说做法有点low,而且不符合Java开发的宗旨之一——消除冗余代码。故今天本文就介绍利用Java模版方法的设计模式来提升代码的逼格。

  1. 首先新建一个基类BaseActivity并继承Activity,重写onCreate()方法加载父布局,代码如下:
public abstract  class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
    }

布局文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ViewStub
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</LinearLayout>

这里使用到了一个控件ViewStub,就是利用该控件实现布局的加载,详情看后面。
2. 在BaseActivity中利用findViewById获取到ViewStub空间的实例
3. 在BaseActivity中申明一个抽象方法:

public abstract int  getlayoutResourceId();

用于返回布局文件的id ,返回值是int类型,并将BaseActivity申明为抽象类
4.在BaseActivity的onCreate()方法中给ViewStub控件设置布局文件并将布局inflate出来,代码如下:

 viewStub.setLayoutResource(getlayoutResourceId);
        viewStub.inflate()

5.之后任何一个的子Activity只要继承父布局,不需要重写onCreate()方法只需要在子Activity中重写完父类的抽象方法,在该方法中返回子Activity的布局文件ID即可,即

 public int getlayoutResourceId() {
        return R.layout.activity_main;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值