Android 드 롭 다운 리 셋 컨트롤 PullToRefresh 인 스 턴 스 분석
8867 단어 Android드 롭 다운 리 셋PullToRefresh
다른 제3자 라 이브 러 리 와 달리 PullToRefresh 의 사용 은 우리 가 하나의 module 를 참조 하여 의존 해 야 합 니 다.
그 다음 에 우리 프로젝트 의 설정 센터 에 들 어 갑 니 다.단축 키 는 ctrl+alt+shift+s 입 니 다.그리고 위아래 로 새로 고침 할 모듈 을 선택 하고 오른쪽 상단 의 플러스 번 호 를 클릭 하여 Module dependency 를 선택 하 십시오.
:
그리고'OK'를 누 르 고 조금 만 기다 리 면 이 라 이브 러 리 를 우리 프로젝트 에 추가 할 수 있 습 니 다.우 리 는 위아래 로 새로 고침 을 사용 할 수 있 습 니 다.
우리 가 도입 한 제3자 라 이브 러 리 의 디 렉 터 리 구 조 는 다음 과 같다.
xml 파일 에서 이 컨트롤 을 사용 할 때 가방 이름 을 사용 하 십시오.클래스 이름 형식 으로 사용 하고 자 하 는 컨트롤 을 참조 하 십시오.이렇게:
com.handmark.pulltorefresh.library.PullToRefreshListView
패키지 이름 은 우리 가 도입 한 라 이브 러 리 의 module 의 AndroidManifest 에서 볼 수 있 습 니 다.디 렉 터 리 에 있 는 자바 폴 더 의 클래스 는 우리 가 사용 할 클래스 입 니 다.여기 서 우 리 는 PullToRefreshListView 를 예 로 들 면 다른 컨트롤 의 사용 방법 은 유사 하 다.아주 징 그 러 운 것 은 컨트롤 안의 속성 에 코드 알림 이 없습니다.코드 알림 이 없습니다.코드 알림 이 없습니다!그래서 나 는 여러 번 대조 해 보 았 는데,내 가 모듈 을 잘못 부 었 다 고 생각 했 는데,결 과 는 코드 알림 이 없 었 기 때문이다.
우 리 는 먼저 몇 가지 비교적 중요 한 방법 을 살 펴 보 자.
//
pullToRefreshListView.getRefreshableView();
/**
* :
* PullToRefreshBase.Mode.BOTH //
* PullToRefreshBase.Mode.PULL_FROM_START //
* PullToRefreshBase.Mode.PULL_FROM_END //
*
*/
pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_END);
//
pullToRefreshListView.setScrollingWhileRefreshingEnabled(true);
getRefreshableView()를 통 해 새로 고침 이 있 는 컨트롤(예 를 들 어 PullToRefreshListView 를 사용 할 때 이 방법 을 사용 하면 ListView 인 스 턴 스 를 되 돌려 줍 니 다)을 얻 을 때 해당 하 는 컨트롤 을 얻 을 수 있 습 니 다.예 를 들 어 ListView 는 listItem 의 클릭 이벤트 나 데이터 가 적당 하면 이 가 져 온 ListView 를 진행 할 수 있 습 니 다.또 하나의 중요 한 방법 은 컨트롤 을 새로 고 칠 때의 감청 을 설정 하 는 것 이다.
pullToRefreshListView.setOnRefreshListener()
그 는 두 개의 매개 변 수 를 전달 할 수 있 는데,하 나 는?
PullToRefreshBase.OnRefreshListener
인터페이스 에 대응 하 는 익명 내부 클래스 형식 입 니 다.네,맛 없어 요.
PullToRefreshBase.OnRefreshListener2
인터페이스 에 대응 하 는 익명 내부 클래스 형식 입 니 다.그 중에서 보통 상하 당 김 새로 고침 과 동시에 사용 할 수 있 을 때 우 리 는 두 번 째 형식 을 선택 합 니 다.
pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
//
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
}
//
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
}
});
물론 PullToRefresh 의 또 다른 중요 한 방법 은 pullToRefreshListView.onRefreshComplete();
이 방법 은 새로 고침 이 완료 되 었 음 을 알 리 고 새로 고침 을 취소 합 니 다.이 문장 을 추가 하지 않 으 면 새로 고침 애니메이션 이 계속 표 시 됩 니 다.여기 서 우 리 는 데 이 터 를 모 의 한 다음 에 드 롭 다운 으로 새로 고침 할 때 스 레 드 를 사용 하여 프로그램 을 2s 자게 한 다음 에 무 작위 로 새 데 이 터 를 불 러 오고 Adapter 에 UI 를 업데이트 하 라 고 알 립 니 다.완성 코드 는 다음 과 같 습 니 다.
package ggcomic.rabbit.lx.pulltorefresh;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.handmark.pulltorefresh.library.LoadingLayoutProxy;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private PullToRefreshListView pullToRefreshListView;
private ListView lv;
private List<String> datas;
private ArrayAdapter<String> adapter;
private Handler handler=new Handler();
private LoadingLayoutProxy llProxy;//
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull);
datas=new ArrayList<>();
for(int i=1;i<=50;i++){
datas.add("item---------"+i);
}
//
lv = pullToRefreshListView.getRefreshableView();
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datas);
lv.setAdapter(adapter);
/**
* :
* PullToRefreshBase.Mode.BOTH //
* PullToRefreshBase.Mode.PULL_FROM_START //
* PullToRefreshBase.Mode.PULL_FROM_END //
*
*/
pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
//
pullToRefreshListView.setScrollingWhileRefreshingEnabled(true);
pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
//
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 2s
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//
datas.add(0,"item-------"+(int)(Math.random()*100+1));
handler.post(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
//
pullToRefreshListView.onRefreshComplete();
}
});
}
}).start();
}
//
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
}
});
}
}
효과 도 는 다음 과 같 습 니 다: 새로 고침 이 완 료 된 후 무 작위 로 항목 아 이 템-39 를 추가 한 것 을 볼 수 있 습 니 다.이렇게 리 셋 하면 완 료 됩 니 다.실제 프로젝트 에서 리 셋 된 감청 이벤트 에서 네트워크 요청 만 완료 하면 됩 니 다.
이 외 에 도 리 셋 컨트롤 스타일 을 정의 할 수 있 습 니 다.다음 과 같이 전역 변수 Loading LayoutProxy 대상 을 정의 합 니 다.
private LoadingLayoutProxy llProxy; //새로 고침 컨트롤 새로 고침 의 텍스트 등 을 설정 하 는 대상
적당 한 위치 에서 예화 하고 사용자 정의 값 을 설정 합 니 다.
layoutProxy = (LoadingLayoutProxy) pullToRefreshListView.getLoadingLayoutProxy(true, false);
//
layoutProxy.setPullLabel(" , !");
//
layoutProxy.setReleaseLabel(" , !");
//
layoutProxy.setRefreshingLabel(" ~");
//
layoutProxy.setLoadingDrawable(getResources().getDrawable(R.drawable.animatorss));
layoutProxy 초기 화 시 두 개의 매개 변 수 는 각각 어디 에 적용 되 는 지,첫 번 째 매개 변 수 는 머리 새로 고침 에 적용 되 는 지,두 번 째 매개 변 수 는 끝 에 적용 되 는 지 를 나 타 냅 니 다. 새로 고침 할 때의 소리 도 정의 할 수 있 습 니 다.
오디 오 파일 을 사용 하려 면 res 자원 파일 아래 raw 폴 더 를 새로 만 들 고 오디 오 파일 을 여기에 두 고 코드 에서 참조 해 야 합 니 다.
SoundPullEventListener<ListView> soundEvend = new SoundPullEventListener<>(this);
// Flag
soundEvend.addSoundEvent(PullToRefreshBase.State.PULL_TO_REFRESH, R.raw.pull_event);
//
soundEvend.addSoundEvent(PullToRefreshBase.State.RESET, R.raw.reset_sound);
//
soundEvend.addSoundEvent(PullToRefreshBase.State.REFRESHING, R.raw.refreshing_sound);
//
pullToRefreshListView.setOnPullEventListener(soundEvend);
이렇게 새로 고침 할 때 소리 도 나 는데 빨리 해 보 세 요~참,PullToRefreshListView 를 사용 할 때 문제 가 발생 한 적 이 있 습 니 다.바로 ListItem 의 클릭 이벤트 의 매번 position 은-1 이 필요 해서 현재 아 이 템 과 대응 합 니 다.드 롭 다운 새로 고침 할 때 ListView 의 맨 위 에 항목 을 추가 한 것 과 같 기 때문에 해당 하 는 클릭 이 벤트 를 설정 할 때 position-1 을 주의해 야 합 니 다.
이것 은 PullToRefresh 의 library 입 니 다.위 에서 말 한 절차 에 따라 가 져 오 면 사용 할 수 있 습 니 다:링크:http://pan.baidu.com/s/1cqp9JS 비밀번호:a12j
이것 은 PullToRefresh 의 공식 데모 입 니 다.특히 관심 이 있 는 분 들 은 다운로드 해서 연구 해 보 세 요.http://pan.baidu.com/s/1ge8gerh
물론 여기 서 우 리 는 PullToRefresh 를 간단하게 사용 할 뿐 리 셋 기능 을 실현 할 수 있 을 뿐 더 많은 맞 춤 형 제작 은 연구 해 야 합 니 다~
그리고 나 는 이 입문 문장 도 괜찮다 고 생각한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.