package com.isomobile.widgets;
import android.app.Activity;
import android.app.ActivityGroup;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainViewManager {
public static String EXTRA_NAME_BUTTON_INDEX = "buton.index";
public final static Class<?>[] sActivityClasses = {
Activity1.class, Activity2.class, Activity3.class, Activity4.class, Activity5.class
};
public final static int[] sResIds = {
R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5
};
public final static String[] sActivityIds = {
"Activity1", "Activity2", "Activity3", "Activity4", "Activity5"
};
private final static int DISTENCE_X = 240, DISTENCE_Y = 0;
private final static int ROTATE_ANIMATION_DURATION = 300;
private int mPreBtnPos, mCurBtnPos = 0;
private RelativeLayout mViewContainer;
private View mPreView;
private View[] mCurView = new View[sResIds.length];
private Button[] mBtns = new Button[sResIds.length];
private static MainViewManager mInstance = new MainViewManager();
private MainViewManager() {
}
public static MainViewManager getInstance() {
return mInstance;
}
public void setupViews(Context context) {
mViewContainer = (RelativeLayout) ((Activity) context).findViewById(R.id.container);
final Button[] btns = mBtns;
for (int i = 0; i < btns.length; i++) {
btns[i] = (Button) ((Activity) context).findViewById(sResIds[i]);
btns[i].setOnClickListener((OnClickListener) context);
}
// 第一次启动时,默认跳转到第一个activity
mCurView[0] = ((ActivityGroup) context).getLocalActivityManager().startActivity(
sActivityIds[0],
new Intent(context, sActivityClasses[0]).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
mViewContainer.addView(mCurView[0]);
mPreView = mCurView[0];
mPreBtnPos = 0;
}
public int getCurButtonIndex(int rid) {
final int length = sResIds.length;
for (int i = 0; i < length; i++) {
if (rid == sResIds[i]) {
return i;
}
}
return 0;
}
public void processViews(Context context, int rid) {
mViewContainer.removeAllViews();
mCurBtnPos = getCurButtonIndex(rid);
final Intent intent = new Intent(context, sActivityClasses[mCurBtnPos]);
intent.putExtra(EXTRA_NAME_BUTTON_INDEX, mCurBtnPos);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mCurView[mCurBtnPos] = ((ActivityGroup) context).getLocalActivityManager().startActivity(
sActivityIds[mCurBtnPos], intent).getDecorView();
}
public void onRotateAnimation(int index) {
if (mPreBtnPos > mCurBtnPos) {
Rotate3d.rightRotate(mPreView, mCurView[index], DISTENCE_X, DISTENCE_Y,
ROTATE_ANIMATION_DURATION, new AnimListener());
} else {
Rotate3d.leftRotate(mPreView, mCurView[index], DISTENCE_X, DISTENCE_Y,
ROTATE_ANIMATION_DURATION, new AnimListener());
}
mPreView = mCurView[index];
mViewContainer.removeAllViews();
mViewContainer.addView(mCurView[index]);
mPreBtnPos = mCurBtnPos;
}
private final static class AnimListener implements Animation.AnimationListener {
public void onAnimationEnd(Animation animation) {
// 可以设置buttons的背景或者状态(是否可点击等)
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
// 可以设置buttons的背景或者状态(是否可点击等)
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
button在底部的多个view切换优化之<实例二3D切换>
共45个文件
class:16个
java:10个
xml:9个
需积分: 9 31 下载量 11 浏览量
2011-09-27
12:57:38
上传
评论
收藏 63KB RAR 举报
温馨提示
1.将View的操作借助一个单实例的MainViewmanager分离开来; 2.实现真正意义上的MVC; 3.继续使用原来的索引也即表驱动的方式来管理view的添加和删除等;
资源推荐
资源详情
资源评论
收起资源包目录
buttons_switcher_3d_optimize.rar (45个子文件)
buttons_switcher
bin
classes.dex 10KB
com
isomobile
widgets
MainActivity.class 1KB
MainViewManager$AnimListener.class 1013B
R$layout.class 641B
Activity2.class 514B
Activity3.class 514B
Rotate3d.class 2KB
R$id.class 567B
R$drawable.class 409B
Activity1.class 514B
R$attr.class 349B
Activity4.class 514B
R.class 552B
Animation3d.class 2KB
R$string.class 436B
Activity5.class 514B
MainViewManager.class 4KB
resources.ap_ 14KB
buttons_switcher.apk 21KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
values
strings.xml 179B
drawable-mdpi
icon.png 3KB
layout
activity1_layout.xml 446B
activity2_layout.xml 411B
activity4_layout.xml 411B
main.xml 473B
bottom_buttons.xml 2KB
activity3_layout.xml 411B
activity5_layout.xml 411B
assets
default.properties 362B
gen
com
isomobile
widgets
R.java 1KB
proguard.cfg 1KB
src
com
isomobile
widgets
Activity1.java 316B
Rotate3d.java 2KB
Activity2.java 316B
Activity5.java 316B
Activity4.java 316B
Activity3.java 316B
MainActivity.java 872B
Animation3d.java 2KB
MainViewManager.java 4KB
.project 852B
.classpath 280B
AndroidManifest.xml 2KB
共 45 条
- 1
资源评论
赵小刚
- 粉丝: 519
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功