package com.isomobile.widgets;
import android.app.Activity;
import android.app.ActivityGroup;
import android.content.Context;
import android.content.Intent;
import android.view.MotionEvent;
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 {
private static final int FLING_MIN_DISTANCE = 120;
private static final int FLING_MIN_VELOCITY = 200;
private final static int DISTENCE_X = 240, DISTENCE_Y = 0;
private final static int ROTATE_ANIMATION_DURATION = 300;
private final static int DEFAULT_FLING_ANGLE = 30;
public final static Class<?>[] sActivityClasses = new Class[]{
Activity1.class, Activity2.class, Activity3.class, Activity4.class, Activity5.class
};
public final static int[] sResIds = new int[]{
R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5
};
public final static String[] sActivityIds = new String[]{
"Activity1", "Activity2", "Activity3", "Activity4", "Activity5"
};
private int mPreBtnPos = 0, 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 int getCurBtnId(int index) {
return sResIds[index];
}
public void setCurBtnPos(int rid) {
mCurBtnPos = getCurBtnIndex(rid);
}
public View getCurView(int index) {
return mCurView[index];
}
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 getCurBtnIndex(int rid) {
final int length = sResIds.length;
for (int i = 0; i < length; i++) {
if (rid == sResIds[i]) {
return i;
}
}
return 0;
}
public int getCurBtnResid(){
return sResIds[mCurBtnPos];
}
public boolean getMotionState(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
return e1.getX() - e2.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY
&& Math.abs(Math.toDegrees(Math.atan((e1.getY() - e2.getY())
/ (e1.getX() - e2.getX())))) < DEFAULT_FLING_ANGLE;
}
public void processViews(Context context) {
mViewContainer.removeAllViews();
final Intent intent = new Intent(context, sActivityClasses[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个
5星 · 超过95%的资源 需积分: 9 61 下载量 197 浏览量
2011-09-28
14:01:24
上传
评论 1
收藏 76KB RAR 举报
温馨提示
button在底部的多个view切换<实例三触摸和点击实现3D切换> 3d动画
资源推荐
资源详情
资源评论
收起资源包目录
buttons_switcher_V3.rar (45个子文件)
buttons_switcher
.project 852B
proguard.cfg 1KB
src
com
isomobile
widgets
Activity5.java 3KB
Animation3d.java 2KB
Activity3.java 3KB
Rotate3d.java 1KB
MainActivity.java 912B
MainViewManager.java 5KB
Activity1.java 3KB
Activity2.java 3KB
Activity4.java 3KB
AndroidManifest.xml 2KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable-mdpi
icon.png 3KB
layout
activity4_layout.xml 903B
activity2_layout.xml 1002B
activity3_layout.xml 903B
activity5_layout.xml 871B
activity1_layout.xml 1KB
bottom_buttons.xml 2KB
main.xml 473B
values
strings.xml 179B
assets
gen
com
isomobile
widgets
R.java 2KB
default.properties 362B
.classpath 280B
bin
buttons_switcher.apk 23KB
resources.ap_ 14KB
com
isomobile
widgets
R$layout.class 641B
Activity3.class 3KB
R$drawable.class 409B
Activity2.class 3KB
R$attr.class 349B
Rotate3d.class 2KB
Activity5.class 3KB
MainViewManager$AnimListener.class 1013B
R$id.class 826B
Activity1.class 3KB
MainViewManager.class 5KB
Activity4.class 3KB
R.class 552B
R$string.class 436B
Animation3d.class 2KB
MainActivity.class 1KB
classes.dex 15KB
共 45 条
- 1
赵小刚
- 粉丝: 519
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页