package android.source.tuangou;
import android.app.ActivityGroup;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.source.tuangou.framework.util.StringUtil;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ViewFlipper;
import java.util.UUID;
/*
*
*
* ActivityGroup--可用于activity之间切换
* ActivityGroup里面有个非常重要的成员,它是负责subActivity管理的——LocalActivityManager,
* 可以通过getLocalActivityManager()来获的
*
* */
public class ActivityContainer extends ActivityGroup{
//ViewFlipper对象
ViewFlipper container;
//动画
Animation leftIn;
Animation leftOut;
Animation rightIn;
Animation rightOut;
//activity的堆栈list
ActivityStack stack;
public ActivityContainer(){
}
private void openStack(ActivityStack activitystack){
setStack(activitystack);
HeaderWebActivity headerwebactivity = activitystack.getTop();
if (headerwebactivity != null){
container.setInAnimation(null);
container.setOutAnimation(null);
container.removeAllViews();
View view = headerwebactivity.getWindow().getDecorView();
showView(view, 2, "");
}
}
//显示view
private void showView(View view){
showView(view, 0, null);
}
//显示view
private void showView(View view, int i, String s){
//添加view
container.addView(view);
android.widget.FrameLayout.LayoutParams layoutparams = new android.widget.
FrameLayout.LayoutParams(-1, -1);
view.setLayoutParams(layoutparams);
//显示下一个
container.showNext();
((HeaderWebActivity)view.getContext()).triggerJavascript(i, s);
}
public void back(String s){
if (stack.size() != 1){
ViewFlipper viewflipper = container;
Animation animation = rightIn;
viewflipper.setInAnimation(animation);
ViewFlipper viewflipper1 = container;
Animation animation1 = rightOut;
viewflipper1.setOutAnimation(animation1);
container.removeAllViews();
HeaderWebActivity headerwebactivity = stack.pop();
View view = stack.getTop().getWindow().getDecorView();
showView(view, 1, s);
LocalActivityManager localactivitymanager = getLocalActivityManager();
String s1 = headerwebactivity.getId();
Window window = localactivitymanager.destroyActivity(s1, true);
}
}
//返回到最顶层,如果是最后一个返回false
public boolean backToStackBottom(){
boolean flag;
//判断是否已经是最顶层
if (stack.size() <= 1){
flag = false;
} else{
//返回到最顶层的activty
container.setInAnimation(rightIn);
container.setOutAnimation(rightOut);
container.removeAllViews();
HeaderWebActivity headerwebactivity = stack.pop();
View view = stack.popToBottom().getWindow().getDecorView();
showView(view, 1, null);
LocalActivityManager localactivitymanager = getLocalActivityManager();
String s = headerwebactivity.getId();
Window window = localactivitymanager.destroyActivity(s, true);
flag = true;
}
return flag;
}
//构造函数
public void onCreate(Bundle bundle){
super.onCreate(bundle);
//动画
rightIn = AnimationUtils.loadAnimation(this, R.anim.right_in);
rightOut = AnimationUtils.loadAnimation(this, R.anim.right_out);
leftIn = AnimationUtils.loadAnimation(this, R.anim.left_in);
leftOut = AnimationUtils.loadAnimation(this, R.anim.left_out);
//创建ViewFlipper对象
android.widget.FrameLayout.LayoutParams layoutparams = new android.widget.
FrameLayout.LayoutParams(-1, -1);
container = new ViewFlipper(this);
container.setLayoutParams(layoutparams);
setContentView(container);
if (getIntent().getExtras() == null);
}
//打开stack或初始化
public void openStackOrInit(ActivityStack activitystack, String s, String s1){
//设置当前的activitystack
setStack(activitystack);
//销毁所有的subActivity
getLocalActivityManager().removeAllActivities();
//判断activitystack是否为0
if (activitystack.size() == 0 && !StringUtil.isEmpty(s).booleanValue()){
System.out.println("openUrl");
openUrl(s, s1, true);
}
else{
System.out.println("openStack");
openStack(activitystack);
}
}
public void openUrl(String s, String s1){
openUrl(s, s1, false);
}
//打开Url
public void openUrl(String s, String s1, boolean flag){
Bundle bundle = new Bundle();
bundle.putString("url", s);
bundle.putString("ui_title", s1);
openWebActivity(bundle, flag);
}
//打开WebActivity
public void openWebActivity(Bundle bundle){
//调用具体打开webActivity的方法
openWebActivity(bundle, false);
}
//打开webActivity
public void openWebActivity(Bundle bundle, boolean flag){
container.setInAnimation(leftIn);
container.setOutAnimation(leftOut);
bundle.putBoolean("isFirst", flag);
Intent intent = new Intent(this, HeaderWebActivity.class);
Intent intent1 = intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
Intent intent2 = intent.putExtras(bundle);
String s = UUID.randomUUID().toString();
Window window = getLocalActivityManager().startActivity(s, intent);
View view = window.getDecorView();
//保存到stack堆栈中
if (bundle != null){
String s1 = bundle.getString("not_in_stack");
if (!"true".equalsIgnoreCase(s1))
{
HeaderWebActivity headerwebactivity = (HeaderWebActivity)window.getContext();
headerwebactivity.setId(s);
//保存到stack堆栈中
stack.push(headerwebactivity);
}
}
showView(view);
}
//设置
public void setStack(ActivityStack activitystack){
stack = activitystack;
}
}