編輯:關於android開發
1. 界面重復創建的問題
2. 中間容器每次切換,都會清空容器中的子對象問題
3. 點擊返回鍵的處理
解決重復創建的問題:
傳遞Class字節碼對象,利用泛型來規定對象
判斷界面是否存在,如果存在重復使用,如果不存在,創建;記錄當前正在展示的界面
MainActivity.java
/** * 初始化主體 */ public void initMiddle() { mainContainer=(RelativeLayout) findViewById(R.id.il_main); MiddleManager.getInstance().setMainContainer(mainContainer); MiddleManager.getInstance().loadView(LoginView.class); }
MiddleManager.java
package com.tsh.lottery.views; import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.Map; import android.content.Context; import android.view.View; import android.view.animation.AnimationUtils; import android.widget.RelativeLayout; import com.tsh.lottery.R; public class MiddleManager { private RelativeLayout mainContainer; //單例 private static MiddleManager manager=new MiddleManager(); private MiddleManager(){}; public static MiddleManager getInstance(){ return manager; } public void setMainContainer(RelativeLayout mainContainer) { this.mainContainer = mainContainer; } //界面緩存 private Map<String,BaseView> VIEWCACHE=new HashMap<String,BaseView>(); //當前界面 private BaseView currentView; /** * 加載界面 */ public void loadView(Class<? extends BaseView> baseViewClass) { BaseView baseView=null; //判斷是否存在 String key=baseViewClass.getSimpleName(); if(VIEWCACHE.containsKey(key)){ baseView=VIEWCACHE.get(key); }else{ try { Constructor<? extends BaseView> constructor; constructor = baseViewClass.getConstructor(Context.class); baseView=constructor.newInstance(mainContainer.getContext()); } catch (Exception e) { e.printStackTrace(); } VIEWCACHE.put(key, baseView); } mainContainer.removeAllViews(); // if(currentView!=null){ // SlideUtil.slideOut(currentView.getView(), 2000); // } View child=baseView.getView(); mainContainer.addView(child); //SlideUtil.slideIn(child, 2000); child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right)); currentView=baseView; } }
IndexView.java
package com.tsh.lottery.views; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.TextView; /** * 會員界面 * @author taoshihan * */ public class IndexView extends BaseView{ private TextView textView; /** * 構造函數 * 經過之前的處理,這個構造函數只會執行一次 * @param context */ public IndexView(Context context) { super(context); initView(); } /** * 初始化界面 */ private void initView() { textView=new TextView(context); LayoutParams params=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); textView.setLayoutParams(params); textView.setText("我是會員界面"); } @Override public View getView() { return textView; } }
Android開發錯誤匯總,android開發匯總【錯誤信息】 [2011-01-19 16:39:10 - ApiDemos] WARNING: Application
[android] 標題部分管理,android標題 1.1 普通標題 1.1.1 標題內容管理 1.1.2 幫助和返回的按鈕 1.2 未登錄的標題 1.3
android加固系列—3.加固前先學會破解,靜態修改so,android加固【版權所有,轉載請注明出處。】 項目jni的關鍵代碼(項目地址見文章底部),獲取當前程序的包
Android官方多媒體API Mediacodec翻譯(一),androidmediacodec 本文章為根據Android Mediacodec官方英文版