안 드 로 이 드 모방 시 나 웨 이 보/QQ 공간 슬라이딩 자동 재생 영상 기능
키 코드
1.스크롤 이벤트 감청
우선
listview
에 감청setOnScrollListener
을 추가 해 야 한다.이 감청 은recyclerView
에addOnScrollListener
,즉 아래 코드 가 동시에 지원recyclerView
되 는 것 을 주의해 야 한다.
public int firstVisible=0,visibleCount=0, totalCount=0;
videoList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
Log.e("videoTest", "SCROLL_STATE_FLING");
break;
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
Log.e("videoTest", "SCROLL_STATE_IDLE");
autoPlayVideo(view);
break;
case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
Log.e("videoTest", "SCROLL_STATE_TOUCH_SCROLL");
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// firstVisibleItem item
// visibleItemCount item
if (firstVisible == firstVisibleItem) {
return;
}
firstVisible = firstVisibleItem;
visibleCount = visibleItemCount;
totalCount = totalItemCount;
}
});
감청 에는 두 가지 방법 이 있 을 것 이다.우 리 는onScroll
방법 으로 현재 첫 번 째 로 보 이 는Item
과 보 이 는Item
총 수 를 기록 하고onScrollStateChanged
로 손 이 화면 을 미 끄 러 뜨리 는 전체 과정 을 감청 한다.onScrollStateChanged
의scrollState
필드 값 이SCROLL_STATE_IDLE
와 같 을 때 이번 미끄럼 이 끝나 고 스크롤 을 멈 추 는 것 을 의미 합 니 다.🙄관심 있 는 친 구 는 바 이 두 의 다른 두 가지 매개 변 수 를 스스로 바 이 두 라 는 뜻 으로 당신 의 수요 에 도움 이 될 수 있 습 니 다.🙄。2.비디오 논리 처리
void autoPlayVideo(AbsListView view){
Log.e("videoTest", "firstVisiblePos = " + firstVisible + "visibleItemCount = " + visibleCount);
for (int i = 0; i < visibleCount; i++) {
if (view!=null&&view.getChildAt(i)!=null&&view.getChildAt(i).findViewById(R.id.videoplayer) != null) {
JCVideoPlayerStandard videoPlayerStandard1 = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.videoplayer);
Rect rect = new Rect();
videoPlayerStandard1.getLocalVisibleRect(rect);
int videoheight3 = videoPlayerStandard1.getHeight();
Log.e("videoTest","i="+i+"==="+"videoheight3:"+videoheight3+"==="+"rect.top:"+rect.top+"==="+"rect.bottom:"+rect.bottom);
if (rect.top==0&&rect.bottom==videoheight3)
{
if (videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) {
Log.e("videoTest", videoPlayerStandard1.currentState + "======================performClick======================");
videoPlayerStandard1.startButton.performClick();
VPApplication.instance.VideoPlaying=videoPlayerStandard1;
}
return;
}
}
}
Log.e("videoTest", "======================releaseAllVideos=====================");
JCVideoPlayer.releaseAllVideos();
VPApplication.instance.VideoPlaying=null;
}
우선 총 순환 에 따라Item
동 영상 이 있 는 지,재 활용Rect
클래스 가 있 으 면 화면 좌표 에 보 이 는 시각 영역 을 가 져 옵 니 다.작은 매듭
자,기본 핵심 코드 는 이상 의 것 입 니 다.간단 하지 않 습 니까?관심 있 는 분 들 은 빨리 직접 조작 하 세 요.이 글 이 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.