? ? 現(xiàn)在開發(fā)中為了提升開發(fā)的效率和代碼的高效利用,我們更愿意將經(jīng)常用的方法封裝起來戒悠,更方便的服務(wù)開發(fā)過程熬荆,所有今天給大家?guī)硪粋€(gè)Activity封裝,并在具體場景中實(shí)現(xiàn)绸狐!
這里我們進(jìn)行封裝方法:
? ? ?1.自定義toolbar
? ? ?2.Intent啟動
? ? ?3.Toast
? ? ?4. show?ProgressDialog
? ? ?5.hide ProgressDialog
? ? ?6.click menu and event
? ? ? ? .......
下面貼出代碼:
這里我們需要用到j(luò)ava的回收機(jī)制: 主要是用來對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ù)還是需要重新寫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);
}
下面我們就來繼承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);
}
});
}
上面只是貼出大概的代碼寒矿,其他簡單的就不貼出來突琳!