5-AVI–Fragment簡單封裝
零、前言
[1].每次寫Fragment要載入佈局,為佈局設定內容,挺麻煩的,搞個基類簡單封裝一下吧
[2].一般封裝基類使用模板方法設計模式
,基類中做一些常用的不變東西,需要拐點彎的邏輯就弄個抽象方法延遲到子類
[3].textView設定文字,ImageView設定圖片兩個經常用的方法也提供一下
一、程式碼實現
1.使用:EVAFragment繼承
public class EVAFragment extends BaseFragment {
@Override
protected void render(View rootView) {
setTextView(R.id.f_tv_title, "封裝Fragment").
setImageView(R.id.f_iv_back, R.mipmap.ic_launcher);
}
@Override
protected int setLayoutId() {
return R.layout.fragment_title;
}
}
2.Activity
getFragmentManager().beginTransaction().add(R.id.fl_title, new EVAFragment()).commit();
3.封裝的基類
/**
* 作者:張風捷特烈<br/>
* 時間:2018/8/29 0029:13:46<br/>
* 郵箱:1981462002@qq.com<br/>
* 說明:Fragment封裝類
*/
public abstract class BaseFragment extends Fragment {
private View mRootView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
//載入佈局
mRootView = inflater.inflate(setLayoutId(), container, false);
render(mRootView);
return mRootView;
}
/**
* 設定佈局裡的控制元件
*
*/
protected abstract void render(View rootView);
/**
* 設定佈局id
* @return 佈局id
*/
protected abstract int setLayoutId();
/**
* 找出對應的控制元件
*
* @param id 控制元件id
* @param <T> 控制元件型別
* @return 控制元件
*/
protected <T extends View> T findViewById(int id) {
return (T) mRootView.findViewById(id);
}
/**
* 為textView設定文字
*
* @param viewId TextView控制元件id
* @param str 控制元件id
* @return BaseFragment
*/
protected BaseFragment setTextView(int viewId, String str) {
TextView textView = findViewById(viewId);
textView.setText(str);
return this;
}
/**
* 通過id設定ImageView圖片
*
* @param viewId 條目內部控制元件的id
* @param o 圖片物件
* @return BaseFragment
*/
public BaseFragment setImageView(int viewId, Object o) {
ImageView view = findViewById(viewId);
if (o instanceof Integer) {
view.setImageResource((Integer) o);
} else if (o instanceof Bitmap) {
view.setImageBitmap((Bitmap) o);
}
return this;
}
}
附錄、佈局檔案:
activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
tools:context=".activity.ActFragmentActivity">
<FrameLayout
android:id="@+id/fl_title"
android:layout_width="match_parent"
android:layout_height="60dp">
</FrameLayout>
</LinearLayout>
fragment_title.xml
<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="60dp"
android:id="@+id/f_rl_root"
android:background="#7383DF">
<ImageView
android:id="@+id/f_iv_back"
android:layout_width="50dp"
android:layout_height="50dp"
android:paddingLeft="15dp"
android:layout_centerVertical="true"
android:src="@drawable/back"/>
<TextView
android:id="@+id/f_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="張風捷特烈"
android:textColor="#fff"
android:layout_centerInParent="true"
android:textSize="26dp"/>
</RelativeLayout>
後記、
1.宣告:
[1]本文由張風捷特烈原創,轉載請註明
[2]歡迎廣大程式設計愛好者共同交流
[3]個人能力有限,如有不正之處歡迎大家批評指證,必定虛心改正
[4]你的喜歡與支援將是我最大的動力
2.連線傳送門:
更多安卓技術歡迎訪問:安卓技術棧
我的github地址:歡迎star
簡書首發,騰訊雲+社群同步更新
張風捷特烈個人網站,程式設計筆記請訪問:http://www.toly1994.com
3.聯絡我
QQ:1981462002
郵箱:1981462002@qq.com
微信:zdl1994328
4.歡迎關注我的微信公眾號,最新精彩文章,及時送達:
相關文章
- Fetch API 簡單封裝API封裝
- Retrofit的簡單封裝封裝
- IQueryable的簡單封裝封裝
- 一個簡單的 Amqp 封裝MQ封裝
- iOS 基於FMDB簡單封裝iOS封裝
- BaseActivity與BaseFragment的簡單封裝Fragment封裝
- ViewPager巢狀fragment簡單使用Viewpager巢狀Fragment
- 基於透明fragment的長流程封裝技巧Fragment封裝
- Golang 對MongoDB的操作簡單封裝GolangMongoDB封裝
- Flutter Dio http簡單封裝與使用FlutterHTTP封裝
- JS棧結構的簡單封裝JS封裝
- 陣列常用方法的簡單封裝陣列封裝
- 一個簡單vue.config.js配置和axios簡單封裝VueJSiOS封裝
- 小程式wx.request()方法簡單封裝封裝
- c# Quartz.net的簡單封裝C#quartz封裝
- 封裝一個簡單的日曆元件封裝元件
- MongoDB Python官方驅動 PyMongo 的簡單封裝MongoDBPython封裝
- python-對requests請求簡單的封裝Python封裝
- Kotlin中Retrofit網路請求簡單封裝Kotlin封裝
- 封裝一個簡單的動畫函式封裝動畫函式
- SqlSugar 多資料來源的簡單封裝SqlSugar封裝
- Flutter 封裝:富文字 RichText 極簡封裝Flutter封裝
- 簡易Dialog封裝封裝
- 簡訊介面封裝封裝
- 微信小程式wx.request的簡單封裝微信小程式封裝
- 我自己封裝的 Laravel 融雲 sdk,簡單好用封裝Laravel
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- web自動化框架—BasePage 類的簡單封裝Web框架封裝
- YII2檔案上傳驗證,簡單封裝封裝
- 微信小程式簡單封裝圖片上傳元件微信小程式封裝元件
- 在 vue-cil 裡封裝一個簡單的 axiosVue封裝iOS
- 程式碼改變世界 | 如何封裝一個簡單的 Koa封裝
- 商城購物車加減控制元件的簡單封裝控制元件封裝
- canvas簡單封裝一個echarts實現不了的餅圖Canvas封裝Echarts
- 基於Vue.js封裝一個簡單的select元件Vue.js封裝元件
- LinkedList重寫(5)LinkedList簡單的封裝和增加泛型封裝泛型
- Flutter 熱門網路請求框架Dio的簡單封裝Flutter框架封裝
- Android--單Activity+多Fragment,玩轉FragmentAndroidFragment