화면 슬라이딩 Scroll

2664 단어 androidscroll
이제 우리는 이러한 효과를 실현할 것이다. 화면이 오른쪽으로 2분의 1을 넘게 미끄러질 때, 손을 놓을 때,activity가 오른쪽에서 미끄러져 나온다.2분의 1이 부족하면 손을 놓고 누르면 activity가 원래의 위치로 돌아갑니다.
우선 OnTouch Event입니다. 안에 간단해요. 모브와 up 하나만.
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_MOVE:
			int moveX = (int) event.getRawX();
			int deltaX = tempX - moveX;
			tempX = moveX;
			if (moveX - downX > mTouchSlop
					&& Math.abs((int) event.getRawY() - downY) < mTouchSlop) {
				Log.e("fc", "ontouch if(move)");
				isSilding = true;
			}
			if (moveX - downX >= 0 && isSilding&&allowslide_flage) {
				mContentView.scrollBy(deltaX, 0);//activity      
			}
			break;
		case MotionEvent.ACTION_UP:
			isSilding = false;
			if (mContentView.getScrollX() <= -viewWidth / 2) {
				isFinish = true;
				scrollRight();
			} else {
				scrollOrigin();

				isFinish = false;
			}
			break;
		}
		return true;
	}

인터페이스 스크롤 및 시작 위치로 스크롤:
4
/**
	 *      
	 */
	private void scrollRight() {
		final int delta = (viewWidth + mContentView.getScrollX());
		Log.e("delta====> ",delta+"");
		//   startScroll            ,   computeScroll()     scrollTo   item
		mScroller.startScroll(mContentView.getScrollX(), 0, -delta + 1, 0,
				Math.abs(delta));
		postInvalidate();
	}

	/**
	 *        
	 */
	private void scrollOrigin() {
		int delta = mContentView.getScrollX();
		Log.e("delta====> ",delta+"");
		mScroller.startScroll(mContentView.getScrollX(), 0, -delta, 0,
				Math.abs(delta));
		postInvalidate();
	}
우리는 컴퓨터 Scroll () 방법을 다시 써야 한다. 이 방법을 다시 쓰지 않으면 activity는 손가락만 따라 움직인다. 손을 놓고 오른쪽으로 미끄러져 나가거나 시작 위치로 굴러가지 않는다. 왜냐하면 위에서 우리는 start Scroll을 했지만 사실은 Scroll이 움직였을 뿐이고 콘텐츠뷰는 그의 발걸음을 따라가지 않고 움직이지 않았기 때문이다.그래서 다음에 컴퓨터 스크롤을 다시 써서 콘텐츠뷰가 스크롤과 함께 미끄러지도록 합니다.
	@Override
	public void computeScroll() {
		//   startScroll   scroller.computeScrollOffset()  true,
		if (mScroller.computeScrollOffset()) {
			mContentView.scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
			Log.e("=============> ",mScroller.getCurrX()+"");
			postInvalidate();

			if (mScroller.isFinished() && isFinish) {
				mActivity.finish();  //     ,    contentview      ,        ,   activity        
			}
		}
	}

computeScroll: 주요 기능은 드래그의 위치 이동량 계산, 배경 업데이트, 표시할 화면 설정(setCurrentScreen(mCurrentScreen);)이다.컴퓨터 스크롤 () 을 다시 쓰는 이유는 startScroll () 를 호출하면 스크롤 효과가 없습니다. 컴퓨터 스크롤 () 에서만 스크롤 상황을 가져옵니다. 스크롤 응답을 하는 컴퓨터 스크롤은 부모 컨트롤에서drawChild를 실행할 때 이 방법을 호출합니다.

좋은 웹페이지 즐겨찾기