1.國際慣例先上圖+Github地址
Android多狀態(tài)布局+全局ToolBar-Github地址給個star唄司倚,有問題可以lssues謝謝支持惊完。
test.gif
1.2更新提示
V1.0.1版本更新提示
增加了對Fragment的支持
2.功能概述
2.1 全局標題欄功能簡介
1.自定義XML
2.一行代碼控制標題欄是否添加
3.可在BaseActivity中封裝基礎方法,例如:標題文字朋其、顏色、大小、左側按鈕或文字等颜武。
4.高度自定義封裝,可直接使用商業(yè)項目
2.2 多狀態(tài)布局
1.默認已添加兩種基礎布局拖吼、分別為LoadingLayout和FailLayout頁面鳞上,但需要自己添加頁面、可直接獲取View進行其他操作
2.可獲取布局狀態(tài)
3.一行代碼設置布局狀態(tài)
4.如果你覺得基礎layout不夠用吊档,可自定義添加布局XML顯示
3.使用方法
1. 添加
1.1在全局build.gradle中添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
1.2在app下的build.gradle中添加
dependencies {
implementation 'com.github.luckyfj:BaseToolBar:1.0.0'
}
2.將自己的BaseActivity繼承系統(tǒng)中BaseStateLayout方法可直接使用篙议,下面是我寫的TestBaseActivity,可參考
package com.hackerfj.basetoolbar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.hackerfj.statelayout.BaseStateLayout;
public abstract class BaseActivity extends BaseStateLayout {
/**
* @return 內容布局
*/
protected abstract int contentView();
/**
* 初始化方法
*/
protected abstract void initViews();
/**
* 設置內容布局怠硼,因為這是BaseActivity則將contentView傳至繼承頁面設置
* @return
*/
@Override
protected int setContentLayout() {
return contentView();
}
/**
* 設置是否添加Toolbar設置boolean鬼贱,如果設置為false將setToolbar設置為null即可
* @return
*/
@Override
protected boolean isAddToolBar() {
return true;
}
/**
* 設置標題欄View
* @return
*/
@Override
protected int setToolbar() {
return R.layout.base_tool_bar;
}
/**
* 設置加載中View
* @return
*/
@Override
protected int setLoadingView() {
return R.layout.layout_loading;
}
/**
* 設置加載失敗View
* @return
*/
@Override
protected int setFailView() {
return R.layout.layout_fail;
}
/**
* 設置初始化操作,因為這是BaseActivity則將initView傳至繼承頁面設置
* @return
*/
@Override
public void initView() {
initViews();
}
/**
* 實例:設置標題香璃,你可以用來做更多的操作这难,舉一反三
* @param title
*/
public void setToolbarTitle(String title){
TextView tvTitle = getBaseToolbar().findViewById(R.id.tv_bar_title);
tvTitle.setText(title);
}
/**
* 動態(tài)設置我想顯示的View
* @param view
*/
public void addView(int view){
View myView = View.inflate(this, view, null);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
myView.setLayoutParams(params);
setMyView(myView);
}
}
3.使用Activity示例代碼Kotlin
package com.hackerfj.basetoolbar
import kotlinx.android.synthetic.main.base_tool_bar.*
class TestActivity : BaseActivity() {
override fun contentView(): Int {
return R.layout.activity_main
}
override fun initViews() {
setToolbarTitle("主頁")
tv_bar_title.setOnClickListener {
// 布局切換至加載中
setLayout(com.hackerfj.statelayout.LayoutState.STATE_LOADING)
}
tv_bar_left.setOnClickListener {
// 布局切換至失敗
setLayout(com.hackerfj.statelayout.LayoutState.STATE_FAIL)
}
tv_bar_right.setOnClickListener {
// 布局切換至內容頁面
// setLayout(LayoutState.STATE_SUCCESS)
//動態(tài)設置我想顯示的View
addView(R.layout.layout_my_view)
}
}
}
4.使用Activity示例代碼Java
package com.hackerfj.basetoolbar;
import android.view.View;
public class TestActivity extends BaseActivity {
@Override
protected int contentView() {
return R.layout.activity_main;
}
@Override
protected void initViews() {
setToolbarTitle("主頁");
findViewById(R.id.tv_bar_title).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 布局切換至加載中
setLayout(com.hackerfj.statelayout.LayoutState.STATE_LOADING);
}
});
findViewById(R.id.tv_bar_left).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 布局切換至失敗
setLayout(com.hackerfj.statelayout.LayoutState.STATE_FAIL);
}
});
findViewById(R.id.tv_bar_right).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 布局切換至內容頁面
// setLayout(LayoutState.STATE_SUCCESS)
//動態(tài)設置我想顯示的View
addView(R.layout.layout_my_view);
}
});
}
}