使用Swiperefreshlayout
导入依赖:
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_launcher_foreground" />
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
对SwipeRefreshLayout对象设置监听
SwipeRefreshLayout swipeRefreshLayout=findViewById(R.id.swipe_main);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Random random=new Random();
boolean b = random.nextBoolean();
if(b){
Toast.makeText(this,"true",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"false",Toast.LENGTH_SHORT).show();
}
swipeRefreshLayout.setRefreshing(false);
}
});
案例
通过Gilde加载图片,然后下拉刷新随机切换一张图片
权限:
<uses-permission android:name="android.permission.INTERNET"/>
需要依赖:
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
全局变量:
private ImageView imageView;
private String url1;
private String url2;
private SwipeRefreshLayout swipeRefreshLayout;
初始化:
imageView=findViewById(R.id.image_main);
swipeRefreshLayout = findViewById(R.id.swipe_main);
url1 = "https://pixabay.com/get/55e0d340485aa814f1dc846096293e7c143cd9e6554c704f75297bd5964cc250_640.jpg";
url2 = "https://pixabay.com/get/55e1d4404953a414f1dc846096293e7c143cd9e6554c704f75297bd5964cc250_640.jpg";
设置下拉刷新监听:
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh(){
loadImage();
}
});
private void loadImage() {
Random random=new Random();
String url = random.nextBoolean() ? url1 : url2;
Glide.with(this)
.load(url)
.placeholder(R.drawable.ic_launcher_background)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
if(swipeRefreshLayout.isRefreshing()){
swipeRefreshLayout.setRefreshing(false);
}
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
if(swipeRefreshLayout.isRefreshing()){
swipeRefreshLayout.setRefreshing(false);
}
return false;
}
})
.into(imageView);
}