没有合适的资源?快使用搜索试试~ 我知道了~
android翻页特效
5星 · 超过95%的资源 需积分: 6 103 下载量 40 浏览量
2011-04-19
19:33:54
上传
评论
收藏 115KB DOC 举报
温馨提示
试读
23页
关于android翻页特效的源码~android翻页特效的源码 android翻页特效的源码.android翻页特效的源码.android翻页特效的源码.android翻页特效的源码.android翻页特效的源码
资源推荐
资源详情
资源评论
package com.newBook;
import java.util.Date;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.PorterDuffXfermode;
import android.graphics.Shader;
import android.graphics.PorterDuff.Mode;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
public class eBook extends FrameLayout{
public static final String LOG_TAG = "eBook";
int totalPageNum;
Context mContext;
boolean hasInit = false;
final int defaultWidth = 600 , defaultHeight = 400;
int contentWidth = 0;
int contentHeight = 0;
View leftPage,rightPage,llPage,lrPage,rrPage,rlPage;
LinearLayout invisibleView;
LinearLayout mView;
MidView mMidView;
bookView mBookView;
Handler AniEndHandle;
static boolean closeBook = false;
private enum Corner {
LeftTop,
RightTop,
LeftBottom,
RightBottom,
None
};
private Corner mSelectCorner;
final int clickCornerLen = 250*250; //50dip
float scrollX = 0,scrollY = 0;
int indexPage = 0;
public enum BookState {
ABOUT_TO_ANIMATE,
ANIMATING,
ANIMATE_END,
READY,
TRACKING
};
private BookState mState;
private Point aniStartPos;
private Point aniStopPos;
private Date aniStartTime;
private long aniTime = 800;
private long timeOffset = 10;
Listener mListener;
PageAdapter mPageAdapter;
private GestureDetector mGestureDetector;
private BookOnGestureListener mGestureListener;
public eBook(Context context) {
super(context);
Init(context);
}
public eBook(Context context, AttributeSet attrs) {
super(context, attrs);
Init(context);
}
public eBook(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Init(context);
}
public static interface Listener {
public void onPrevPage();
public void onNextPage();
public void onInit();
}
public static interface PageAdapter{
public View getView(int position);
public int getCount();
}
public void setListener(Listener listener) {
Log.d(LOG_TAG,"setListener");
mListener = listener;
}
public void setPageAdapter(PageAdapter pa){
Log.d(LOG_TAG,"setPageAdapter");
mPageAdapter = pa;
}
public void Init(Context context){
totalPageNum = 0;
mContext = context;
mSelectCorner = Corner.None;
mGestureListener = new BookOnGestureListener();
mGestureDetector = new GestureDetector(mGestureListener);
mGestureDetector.setIsLongpressEnabled(false);
AniEndHandle = new Handler();
this.setOnTouchListener(touchListener);
this.setLongClickable(true);
}
public View getLeftPage(){
return leftPage;
}
public View getRightPage(){
return rightPage;
}
public View getPrevPage1(){
return lrPage;
}
public View getPrevPage2(){
return llPage;
}
public View getNextPage1(){
return rlPage;
}
public View getNextPage2(){
return rrPage;
}
public int getIndexForLeftPage(){
return indexPage;
}
public int getIndexForRightPage(){
return indexPage + 1;
}
public void setIndexForLeftPage(int index){
if(index >= 0 && index < totalPageNum){
if((index % 2) == 0)
indexPage = index;
else
indexPage = index - 1;
}
}
public void updatePageView(){
Log.d(LOG_TAG,"updatePageView");
if(indexPage < 0 || indexPage > totalPageNum - 1){
Log.d(LOG_TAG,"indexPage exceed bound");
return;
}
invisibleView.removeAllViews();
mView.removeAllViews();
leftPage = mPageAdapter.getView(indexPage);
if(leftPage == null)leftPage = new WhiteView(mContext);
leftPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
mView.addView(leftPage);
lrPage = mPageAdapter.getView(indexPage-1);
if(lrPage == null)lrPage = new WhiteView(mContext);
lrPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
invisibleView.addView(lrPage);
llPage = mPageAdapter.getView(indexPage-2);
if(llPage == null)llPage = new WhiteView(mContext);
llPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
invisibleView.addView(llPage);
rightPage = mPageAdapter.getView(indexPage+1);
if(rightPage == null)rightPage = new WhiteView(mContext);
rightPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
mView.addView(rightPage);
rlPage = mPageAdapter.getView(indexPage+2);
if(rlPage == null)rlPage = new WhiteView(mContext);
rlPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
invisibleView.addView(rlPage);
rrPage = mPageAdapter.getView(indexPage+3);
if(rrPage == null)rrPage = new WhiteView(mContext);
rrPage.setLayoutParams(new LayoutParams(contentWidth/2,contentHeight));
invisibleView.addView(rrPage);
Log.d(LOG_TAG,"updatePageView finish");
}
OnTouchListener touchListener = new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.d(LOG_TAG, "onTouch " + " x: " + event.getX() + " y: " + event.getY() +
" mState:" + mState);
mGestureDetector.onTouchEvent(event);
int action = event.getAction();
if (action == MotionEvent.ACTION_UP && mSelectCorner != Corner.None
&& mState == BookState.TRACKING) {
if(mState == BookState.ANIMATING)return false;
if(mSelectCorner == Corner.LeftTop || mSelectCorner == Corner.RightTop){
if(scrollX < contentWidth/2){
aniStopPos = new Point(0,0);
}else{
aniStopPos = new Point(contentWidth,0);
剩余22页未读,继续阅读
qianglulu
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页