Android复杂页面代码拆分方法

本文介绍了一种将Android中复杂页面拆分的方法,通过自定义View和容器类,将交互逻辑移出MainActivity,实现代码的简洁和维护性提升。在XML布局中引用自定义组件,使得主界面代码更为精简。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

项目中有时候会遇到很复杂的页面,比如在同个Activity或者Fragment中要实现两个界面,本文介绍一种比较简单的拆分方法。


先上效果图:
总体效果图

第一个界面和第二个界面,两个Button都是在自定义的View中实现

点击后的效果图

点击的操做没有在主界面的Activity中实现,而是抽到第一个界面的自定义View的类中实现了。


代码解析:

  • 自定义一个容器类,重写onFinishInflate的回调方法,在此处实现用户交互的代码。
public class MySecondView extends FrameLayout{
    public MySecondView(Context context) {
        super(context);
    }

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

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

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public MySecondView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        Button mButton = (Button) this.findViewById(R.id.bt_second);
        mButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "这是在MySecondView中实现的操作", Toast.LENGTH_LONG).show();
            }
        });
    }

}
  • 在xml文件中引入,作为容器;
<?xml version="1.0" encoding="utf-8"?>
<com.ryan.gdin.myapplication.MyFirstView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/bt_first"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="@string/first"/>
</com.ryan.gdin.myapplication.MyFirstView>
  • 在MainActivity的布局文件中include进来:
 <include
        android:id="@+id/first"
        layout="@layout/my_first_layout"/>

第二个界面的做法一样,这样处理后,在MainActivty中代码就很精简了:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

这样处理,本来一个界面的东西分成三部分,对于不复杂的界面就没必要这样处理啦,但是对于复杂的绝对是神器,方便代码维护!

此至,抛砖引玉,献丑啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值