原文链接:http://blog.csdn.net/qq_26643421/article/details/50386374
复用的布局文件
在一些APP中 ,需要复用一些通用的布局文件 , 为了避免重复写布局文件 , 重复实例化控件 , 重复设置监听方法 . 可以把该部分代码抽取出来 , 单独封装, 利用接口回调 , 把整个代码封装起来 , 在activity 中只需要一行代码就可以实例化该部分代码 .
common_bottom_layout.xml
<?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="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
android:orientation="horizontal"
android:padding="6dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/common_bottom_media"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_media"
android:text="采集" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/common_bottom_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_report"
android:text="上报" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/common_bottom_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_cancle"
android:text="取消" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
复用布局文件的实例化部分
CommonBottom.java
package com.depart.deqing.view;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import com.depart.deqing.R;
/**
* Created by yx on 2015/12/21.
*/
public class CommonBottom implements View.OnClickListener {
Context mContext;
OnCommonBottomClick listener;
public CommonBottom(Context context) {
this.mContext = context;
}
@Override
public void onClick(View v) {
if (listener == null) return;
switch (v.getId()) {
case R.id.common_bottom_media:
listener.onMediaClick(v);
break;
case R.id.common_bottom_report:
listener.onReportClick();
break;
case R.id.common_bottom_cancle:
listener.onCancleClick();
break;
}
}
public interface OnCommonBottomClick {
public void onMediaClick(View v);
public void onReportClick();
public void onCancleClick();
}
public void setListener(OnCommonBottomClick listener) {
this.listener = listener;
}
public CommonBottom init() {
Button media = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_media);
Button report = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_report);
Button cancle = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_cancle);
media.setOnClickListener(this);
report.setOnClickListener(this);
cancle.setOnClickListener(this);
return this;
}
}
使用该复用 布局块的部分
<?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"
android:orientation="vertical">
<include layout="@layout/common_tool" />
<RelativeLayout
android:layout_margin="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</RelativeLayout>
<!-- 在布局文件中引用复用的布局文件 -->
<include layout="@layout/common_botton_layout" />
</LinearLayout>
在Activity中使用该部分代码
TestActivity.java
package com.depart.deqing.activitys;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.MotionEvent;
import android.view.View;
import com.depart.deqing.R;
import com.depart.deqing.base.BaseActivity;
import com.depart.deqing.view.CommonBottom;
import com.depart.deqing.view.CommonMediaPop;
/**
* Created by yx on 2015/12/22.
*/
public class TestActivityextends AppcompateActivity implements CommonBottom.OnCommonBottomClick {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onwatch_layout);
//在这里实例化布局文件, 并实现监听接口方法
//只需要一行代码就可以直接完成复用代码块的实例化
new CommonBottom(this).init().setListener(this);
}
@Override
public void onMediaClick(View v) {
//在这里实现对应点击事件的方法
}
@Override
public void onReportClick() {
//在这里实现对应点击事件的方法
}
@Override
public void onCancleClick() {
//在这里实现对应点击事件的方法
finish();
}
}