화면 슬라이딩 Scroll
우선 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를 실행할 때 이 방법을 호출합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.