android之代码优化(base类)

来源:互联网 发布:工作室监控软件 编辑:程序博客网 时间:2024/05/20 15:11

在对于开发之中,大多数公司会有自己的成熟框架,你只要按照规则去熟悉,去使用就行了,而对于开发人员来说,去了解一些代码优化有助于自己的代码开发。

而在于框架之中第一个原则:对于多次出现并且有共同点的地方必须抽取出来作为base类

我作为一个小小菜鸟用一个实例帮助自己理解 写下自己的理解 (新闻开发)

第一个 对于Fragment中 有时候开发项目中,你会多次创立界面,和引入数据


package com.example.qianlong.base;import com.example.qianlong.MainActivity;import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;import android.content.Context;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;public abstract class BaseFragment extends Fragment implements OnClickListener  {protected Context ct;     protected SlidingMenu sm;public View rootView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/*Android 新特性的fragment,在其中怎么通过按钮跳转到其他与之无关的activity啊。在fragment中可以getActivity(),用这个就可以了*///自己的想法就是将getactivity引用传给CT 也就是context就可以调用其他Fragmentct = getActivity();}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {//在creatview中 初始化view initview 然后将界面返回rootView  = initView(inflater);return rootView;}/* (non-Javadoc) * 在activit创建时调用的方法 */@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);//Fragment中有一个getActivity()的方法。这个方法会返回当前Fragment所附加的Activity//获取所附加的activity得到slidingmenu    sm = ((MainActivity)getActivity()).getSlidingMenu();    //在activitiy初始化数据initData(savedInstanceState);}public View getRootView(){return rootView;}@Overridepublic void onClick(View arg0) {}protected abstract View initView(LayoutInflater inflater);protected abstract void initData(Bundle savedInstanceState);protected abstract void processClick(View v);}
当然还有 viewpage 也可以优化  当主页面 标题栏没变的话 就可以直接在basepage里初始化 让子类去继承就可以了 唯一不同就是 中间内容 同时因为中间内容是需要判断有无网路 也可以设置进来


package com.example.qianlong.base;import com.example.qianlong.MainActivity;import com.example.qianlong.R;import com.example.qianlong.utils.CommonUtil;import com.example.qianlong.utils.CustomToast;import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;import com.lidroid.xutils.HttpUtils;import com.lidroid.xutils.http.RequestParams;import com.lidroid.xutils.http.callback.RequestCallBack;import com.lidroid.xutils.http.client.HttpRequest;import com.lidroid.xutils.util.LogUtils;import com.lidroid.xutils.view.annotation.ViewInject;import android.content.Context;import android.os.Handler;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public abstract class BasePage implements OnClickListener {protected Context ct;protected View contentView;protected Button leftBtn;protected ImageButton rightBtn;protected ImageButton leftImgBtn;protected ImageButton rightImgBtn;protected TextView titleTv;protected SlidingMenu sm;protected LinearLayout loadfailView;public boolean isLoadSuccess=false;public BasePage(Context context) {ct = context;contentView = initView((LayoutInflater) ct//从服务中获得XML定义的view 传递给VIEW.getSystemService(Context.LAYOUT_INFLATER_SERVICE));//加载中组件loadingView = contentView.findViewById(R.id.loading_view);loadfailView = (LinearLayout) contentView.findViewById(R.id.ll_load_fail);//ct是否是主类的子类   if(ct instanceof MainActivity){sm = ((MainActivity) ct).getSlidingMenu();   }}//初始化标题栏protected void initTitleBar(View view) {leftBtn = (Button) view.findViewById(R.id.btn_left);rightBtn = (ImageButton) view.findViewById(R.id.btn_right);leftImgBtn = (ImageButton) view.findViewById(R.id.imgbtn_left);rightImgBtn = (ImageButton) view.findViewById(R.id.imgbtn_right);leftImgBtn.setImageResource(R.drawable.img_menu);titleTv = (TextView) view.findViewById(R.id.txt_title);leftBtn.setVisibility(View.GONE);rightBtn.setVisibility(View.GONE);if(leftImgBtn!=null)leftImgBtn.setOnClickListener(this);}public View getContentView() {return contentView;}@ViewInject(R.id.loading_view)protected View loadingView;public void dismissLoadingView() {if (loadingView != null)loadingView.setVisibility(View.INVISIBLE);}protected abstract View initView(LayoutInflater inflater);public abstract void initData();protected abstract void processClick(View v);public void onResume() {}public void showToast(String msg) {showToast(msg, 0);}public void showToast(String msg, int time) {CustomToast customToast = new CustomToast(ct, msg, time);customToast.show();}protected void loadData(HttpRequest.HttpMethod method, String url,RequestParams params, RequestCallBack<String> callback) {HttpUtils http = new HttpUtils();http.configCurrentHttpCacheExpiry(1000 * 1);LogUtils.allowD = true;if (params != null) {if (params.getQueryStringParams() != null)LogUtils.d(url + params.getQueryStringParams().toString());} else {params = new RequestParams();}//设备ID//params.addHeader("x-deviceid", app.deviceId);//渠道,统计用//params.addHeader("x-channel", app.channel);if (0 == CommonUtil.isNetworkAvailable(ct)) {showToast("无网络,请检查网络连接!");} else {http.send(method, url, params, callback);}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.imgbtn_left:Handler handler  = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {sm.toggle();}}, 100);break;default:break;}}}



0 0
原创粉丝点击