封裝Activity,并在具體場(chǎng)景中實(shí)現(xiàn)!

? ? 現(xiàn)在開(kāi)發(fā)中為了提升開(kāi)發(fā)的效率和代碼的高效利用,我們更愿意將經(jīng)常用的方法封裝起來(lái),更方便的服務(wù)開(kāi)發(fā)過(guò)程,所有今天給大家?guī)?lái)一個(gè)Activity封裝,并在具體場(chǎng)景中實(shí)現(xiàn)!

這里我們進(jìn)行封裝方法:

? ? ?1.自定義toolbar

? ? ?2.Intent啟動(dòng)

? ? ?3.Toast

? ? ?4. show?ProgressDialog

? ? ?5.hide ProgressDialog

? ? ?6.click menu and event

? ? ? ? .......

下面貼出代碼:


這里我們需要用到j(luò)ava的回收機(jī)制: 主要是用來(lái)對(duì)anctivity的回收

public class ActivityStackManager {

private staticVectoractivityStack=newVector<>();

public static voidadd(BaseActivity activity) {

activityStack.add(activity);

}

public static voidremove(BaseActivity activity) {

activityStack.remove(activity);

}

public static voidclear() {

activityStack.clear();

}

public staticBaseActivitygetLast() {

returnactivityStack.lastElement();

}

public static intgetSize() {

returnactivityStack.size();

}

public static voidexit() {

for(BaseActivity activity :activityStack) {

if(activity !=null) {

activity.finish();

}

}

clear();

}


下面我們具體看看封裝:

public class BaseActivity extends AppCompatActivity {

protected Toolbar mToolbar;

protected TextView toolbar_title;

protected ImageView right_buttom;

protected Toast mToast;

protected ProgressDialog bar;

@Override

protected voidonCreate(@NullableBundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

//這里采用 弱引用

WeakReference weekReferece =newWeakReference<>(this);

ActivityStackManager.add(weekReferece.get());

}

protected ?void init() {

mToolbar= (Toolbar) findViewById(R.id.toolbar);

toolbar_title= (TextView) findViewById(R.id.tv_toolbar_title);

right_buttom= (ImageView) findViewById(R.id.btn_right);

if(mToolbar!=null) {

mToolbar.setNavigationIcon(R.drawable.left_jiantou);

toolbar_title.setText("");

setSupportActionBar(mToolbar);

}

}

@Override

protected voidonResume() {

super.onResume();

MobclickAgent.onResume(this);

}

@Override

protected voidonPause() {

super.onPause();

MobclickAgent.onPause(this);

}

@Override

protected voidonDestroy() {

super.onDestroy();

ActivityStackManager.remove(this);

}

封裝Intent,但是需要攜帶數(shù)據(jù)還是需要重新寫(xiě)intent

public void go(Class cls) {

startActivity(newIntent(this,cls));

}

//String ----> text show

public void showToast(CharSequence text) {

if(mToast==null) {

mToast= Toast.makeText(this,text,Toast.LENGTH_LONG);

}

mToast.setText(text);

mToast.show();

}

//getResources -----> text show

public void showToast(@StringResintres) {

showToast(getResources().getText(res));

}

//show ProgressDialog

public voidshowProgress(String msg) {

if(bar==null) {

bar=newProgressDialog(this);

bar.setMessage(msg);

bar.setIndeterminate(true);

bar.setCancelable(false);

}

if(bar.isShowing()) {

bar.setMessage(msg);

}

bar.show();

}


//hide ProgressDialog

public voiddismissDialog() {

if(bar!=null&&bar.isShowing()) {

bar.setCancelable(false);

bar.dismiss();

}

}

//click menu and event

public booleanonOptionsItemSelected(MenuItem item) {

if(item.getItemId() == android.R.id.home){

finish();

return true;

}

return super.onOptionsItemSelected(item);

}


下面我們就來(lái)繼承BaseActivity,實(shí)現(xiàn)這些封裝的方法

public class StarActivity ?extends BaseActivity {

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_star);

init();

}

@Override

protected voidinit() {

super.init();

toolbar_title.setText("我是一個(gè)toobar title");

right_buttom.setVisibility(View.VISIBLE);

right_buttom.setImageResource(R.drawable.right_hui);

right_buttom.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

showProgress("正在加載中...");

newThread(newRunnable() {

@Override

public voidrun() {

try{

sleep(2000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}).start();

}

});

findViewById(R.id.btn_showToast).setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

showToast("Click Me Show Toast");

}

});

findViewById(R.id.btn_goIntent).setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

go(StarTwoActivity.class);

}

});

}

上面只是貼出大概的代碼,其他簡(jiǎn)單的就不貼出來(lái)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容