編輯:關於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開發匯總
Android開發錯誤匯總,android開發匯總【錯誤信息】 [2011-01-19 16:39:10 - ApiDemos] WARNING: Application
[android] 標題部分管理,android標題
[android] 標題部分管理,android標題 1.1 普通標題 1.1.1 標題內容管理 1.1.2 幫助和返回的按鈕 1.2 未登錄的標題 1.3
android加固系列—3.加固前先學會破解,靜態修改so,android加固
android加固系列—3.加固前先學會破解,靜態修改so,android加固【版權所有,轉載請注明出處。】 項目jni的關鍵代碼(項目地址見文章底部),獲取當前程序的包
Android官方多媒體API Mediacodec翻譯(一),androidmediacodec
Android官方多媒體API Mediacodec翻譯(一),androidmediacodec 本文章為根據Android Mediacodec官方英文版