Android基类Activity的设计
来源:互联网 发布:js滤镜效果 编辑:程序博客网 时间:2024/06/03 19:30
一个好的activity可以更方便的管理app的activity,而且使代码不会写的那么臃肿,更有逻辑性。
public abstract class AbsBaseActivity extends FragmentActivity{ public abstract void initData() throws Exception; public abstract void setLinterner(); public String TAG=this.getClass().getName();; public MyProgressDialog progressDialog; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { initData(); StaticMethod.addActivity(this); } catch (Exception e) { Log.e(TAG,e.getLocalizedMessage()); } setLinterner(); } /** * 提示对话框 * @param value */ public void showToast(String value){ Toast.makeText(this,value,Toast.LENGTH_SHORT).show(); } @Override protected void onResume() { super.onResume(); // umeng MobclickAgent.onResume(this); } @Override protected void onStart() { super.onStart(); // umeng MobclickAgent.onPause(this); } public void finshAll(){ StaticMethod.finshAllActivity(); } //获取屏幕的宽度 public static int getScreenWidth(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getWidth(); } //获取屏幕的高度 public static int getScreenHeight(Context context) { WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); return display.getHeight(); } public void LogI(String value){ Log.i(TAG,value); } public void LogE(String value){ Log.e(TAG,value); } /** * 创建一个公共的intent类 */ public class Builder{ private Intent intent; private boolean isForResult; //是否需要回调 private int requestCode;//请求标记 public Builder(Class<? extends Object> c){ intent=new Intent(AbsBaseActivity.this,c); } /** * 传入bundle * @param key * @param bundle */ public Builder build(String key,Bundle bundle){ getIntent().putExtra(key,bundle); return this; } /** * 传入String类型 * @param key * @param value * @return */ public Builder build(String key,String value){ getIntent().putExtra(key,value); return this; } /** * 传入int类型 * @param key * @param value * @return */ public Builder build(String key,int value){ getIntent().putExtra(key,value); return this; } /** * 传入double类型 * @param key * @param value * @return */ public Builder build(String key,double value){ getIntent().putExtra(key,value); return this; } /** * 传入long类型 * @param key * @param value * @return */ public Builder build(String key,long value){ getIntent().putExtra(key,value); return this; } /** * 传入Serializable类型 * @param key * @param value * @return */ public Builder build(String key,Serializable value){ getIntent().putExtra(key,value); return this; } /** * 传入Parcelable类型 * @param key * @param value * @return */ public Builder build(String key,Parcelable value){ getIntent().putExtra(key,value); return this; } /** * 是否有回调 * @param forResult * @return */ public Builder build(boolean forResult){ isForResult=forResult; return this; } /** * 设置请求参数 * @param requestCode * @return */ public Builder build(int requestCode){ this.requestCode=requestCode; return this; } /** * 开启activity */ public void startActivity(){ if (isForResult){ AbsBaseActivity.this.startActivity(getIntent()); }else { AbsBaseActivity.this.startActivityForResult(getIntent(),requestCode); } } private Intent getIntent(){ return intent; } }}代码比较简单,相信新手都会看得懂。。
这里最主要的Intent跳转的内部类,这里采用的建造者模式。
然后你要使用就可以这样使用
new MainActivity.Builder(AddFriendActivity.class) .startActivity();如果需要传值过去就可以这样
new MainActivity.Builder(AddFriendActivity.class) .build("key","asdf") .build("int",122) .startActivity();而你如果需要回到,只需要设置true和带去requestCode
/** * 是否有回调 * @param forResult * @return */public Builder build(boolean forResult){ isForResult=forResult; return this;}/** * 设置请求参数 * @param requestCode * @return */public Builder build(int requestCode){ this.requestCode=requestCode; return this;}这样就不用像以前要new出一个Intent,如果一步步来。代码简洁很多,也更容易管理
2 0
- Android基类Activity的设计
- Android的设计与实现--Activity Manager
- Activity的架构设计
- Activity的架构设计
- Android UI设计 屏幕底部的菜单栏 动画切换Activity
- Android:如何设计一个完全不可见的Activity?
- Android:如何设计一个完全不可见的Activity?
- android 中activity 设计思路
- Android Activity 和 Task 设计指导
- Android Activity 和 Task 设计指导
- android 之 activity 和 controller 架构设计
- Android activity的生命周期
- Android:Activity的生命周期
- android的activity
- android的Activity转换
- Android Activity的生命周期
- Android的Activity组件
- Android Activity的生命周期
- 驱动级别 进程隐藏pid
- 并查集
- linux配置maven
- Treelist数据能获取但是显示不出来
- stringbuffer与stringbuilder的区别
- Android基类Activity的设计
- Java Web 中使用ffmpeg实现视频转码、视频截图,javaffmpeg
- oracle表分区详解
- android studio关闭启动时indexing
- REDIS学习(3.2)spring boot 使用redis作为缓存
- iOS 微信登录,分享等不执行代理方法 - 遇到的坑
- leetcode题集——spiral-matrix-ii
- Lua和C++交互详解
- Netty高性能并发