1.Glide图片加载和缓存库的基本用法
使用之前需要设置一些内容。添加相应的库,在app/build.gradle中添加如下内容
dependencies { compile 'com.github.bumptech.glide:glide:4.3.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' }
打开另一个build.gradle(项目根目录下的),在allprojects中添加如下内容
allprojects { repositories { mavenCentral() maven { url 'https://maven.google.com' }
jcenter()
}
}
设置完成。展示最基本的用法。
//加载一张图片在imageView上显示。
//with() context 没什么好说的
//load() myUrl 可以是图片的id,网络路径,本地路径 //into() imageView 展示图片的imageview Glide.with(context) .load(myUrl) .into(imageView);
如果现在想直接使用placeholder()等方法是使用不了的,要想直接使用,需要创建类并继承AppGlideModule,然后添加@GlideModule注解,点击Android studio菜单项Build→Rebuild Project,这时就能使用GlideApp类了。
@GlideModule
public final class MyAppGlideModule extends AppGlideModule{
}
//添加一张图片到imageView中,在图片没有加载完成时,使用placeholder()方法中设置的图片。
GlideApp.with(ABCActivity.this).load(url).placeholder(R.drawable.other).into(imageView);
//在图片没有加载完成时,imageView显示25%原图大小的缩略图。
GlideApp.with(ABCActivity.this).load(url).thumbnail(0.25f).into(imageView);
//清除磁盘缓存,需要运行在子线程中
GlideApp.get(ABCActivity.this).clearDiskCache();
//清除内存缓存
GlideApp.get(ABCActivity.this).clearMemory();
在android 6.0 及以上系统使用Glide时,请使用运行时权限。
2.下拉刷新SwipeRefreshLayout
在你需要进行下拉刷新的控件上嵌套SwipeRefreshLayout。我在imageView上嵌套了SwipeRefreshLayout。
android:id="@+id/srl"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal">
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@color/colorPrimary" />
接下来,需要添加一点代码,来监听下拉。
//开一个线程来模拟数据加载,方便看到刷新的过程
srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
//隐藏刷新进度条
srl.setRefreshing(false);
}
});
}
}).start();
}
});
3.全局获取Context
首先,创建一个类并继承Application。
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
然后,在AndroidManifest.xml文件中application下添加如下信息:
android:name="cn.xd.study.pull.MyApplication"
............>
使用。
MyApplication.getContext();
如果同时使用了litePal和自定义的Application,要在MyApplication的onCreate()方法中添加代码。
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
LitePal.initialize(context);
}