下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中如何使用Glide框架
加载网络图片compile
'com.android.support:recyclerview-v7:25.0.0'compile
'com.github.bumptech.glide:glide:3.7.0'<?xml
version="1.0"
encoding="utf-8"?><android.support.v7.widget.RecyclerView
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_view"></android.support.v7.widget.RecyclerView><?xml
version="1.0"
encoding="utf-8"?><LinearLayout
xmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:id="@+id/image"/></LinearLayout>@Overridepublic
ViewHolder
onCreateViewHolder(ViewGroup
parent,
int
viewType)
{
View
v
=
LayoutInflater.from(mContext).inflate(R.layout.list_item,parent,false);
return
new
ViewHolder(v);
}@Overridepublic
void
onBindViewHolder(ViewHolder
holder,
int
position)
{
final
String
url
=
mItems.get(position);
Log.e("tag","============onBindViewHolder
url:
"+url);
Glide.with(mContext)
.load(url)
.placeholder(R.mipmap.ic_launcher)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.into(holder.image);
holder.image.setOnClickListener(new
View.OnClickListener(){
@Override
public
void
onClick(View
v)
{
Intent
intent
=
new
Intent();
intent.setClass(mContext,PreviewImageActivity.class);
intent.putExtra("url",url);
mContext.startActivity(intent);
}
});
}@Overridepublic
int
getItemCount()
{
return
mItems.size();
}public
class
ViewHolder
extends
RecyclerView.ViewHolder{
ImageView
image;
public
ViewHolder(View
itemView)
{
super(itemView);
image
=
(ImageView)itemView.findViewById(R.id.image);
}
}@Nullable@Overridepublic
View
onCreateView(LayoutInflater
inflater,
@Nullable
ViewGroup
container,
@Nullable
Bundle
savedInstanceState)
{
View
v
=
inflater.inflate(R.layout.fragment_list,container,false);
mClient
=
new
OkHttpClient();
mReyclerView
=
(RecyclerView)
v.findViewById(R.id.recycler_view);
mReyclerView.setLayoutManager(new
StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
mAdapter
=
new
GankAdapter(getActivity(),mUrls);
mReyclerView.setAdapter(mAdapter);
loadApi(index);
mReyclerView.addOnScrollListener(new
RecyclerView.OnScrollListener()
{
@Override
public
void
onScrollStateChanged(RecyclerView
recyclerView,
int
newState)
{
super.onScrollStateChanged(recyclerView,
newState);
}
@Override
public
void
onScrolled(RecyclerView
recyclerView,
int
dx,
int
dy)
{
super.onScrolled(recyclerView,
dx,
dy);
if(isScrollToEnd(mReyclerView)){
Log.e("tag","============scroll
to
end");
index
+=
1;
loadApi(index);
}
}
});
return
v;
}compile
'com.squareup.okhttp3:okhttp:3.4.1'private
void
loadApi(int
page){
Request
request
=
new
Request.Builder().url("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/"+page).build();
mClient.newCall(request).enqueue(new
Callback()
{
@Override
public
void
onFailure(Call
call,
IOException
e)
{
Log.e("tag","loading
failure
");
e.printStackTrace();
}
@Override
public
void
onResponse(Call
call,
Response
response)
throws
IOException
{
if(response.isSuccessful()){
String
result
=
response.body().string();
try
{
JSONObject
json
=
new
JSONObject(result);
JSONArray
array
=
new
JSONArray(json.getString("results"));
for(int
i
=
0;i<array.length();i++){
JSONObject
ob
=
array.getJSONObject(i);
mUrls.add(ob.getString("url"));
Log.e("tag","==========
url:
"+ob.getString("url"));
}
mHandler.sendEmptyMessage(2);
}catch
(JSONException
e){
e.printStackTrace();
}
}
}
});
}https://upload-images.jianshu.io/upload_images/3117364-9be6dad47a327291.png?imageMogr2/auto-orient/strip加载本地图片private
void
loadAlbum(){
AsyncTask<Void,
Void,
Void>
asyncTask
=
new
AsyncTask<Void,
Void,
Void>()
{
@Override
protected
Void
doInBackground(Void...
params)
{
Cursor
c
=
getContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new
String[]{MediaStore.Images.ImageColumns.DATA},null,null,
MediaStore.Images.ImageColumns.DATE_TAKEN+"
desc
");
if(null
!=
c
&&
c.getCount()
>
0
&&
c.moveToFirst()){
while
(c.moveToNext()){
mData.add(c.getString(c.getColumnIndex(MediaStore.Images.ImageColumns.DATA)));
}
}
return
null;
}
@Override
protected
void
onPostExecute(Void
aVoid)
{
mHandler.sendEmptyMessage(2);
}
};
asyncTask.execute();
}https://upload-images.jianshu.io/upload_images/3117364-e5dae1631f65315e.png?imageMogr2/auto-orient/strip添加图像变换compile
'jp.wasabeef:glide-transformations:2.0.1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年普通大学生心理考试题库附答案
- 2026年广东轻工职业技术学院单招职业倾向性考试模拟测试卷附答案
- 2026年江汉艺术职业学院单招职业倾向性考试题库附答案
- 2026浙江黔东南州台江县面向社会补充招录3名政府专职消防员笔试备考题库及答案解析
- 2026年普通电工知识试题及一套参考答案
- 2026年广东机电职业技术学院单招职业适应性测试题库附答案
- 北辰集团2026届校园招聘笔试模拟试题及答案解析
- 2026黑龙江齐齐哈尔市龙沙区湖滨街道公益性岗位招聘1人笔试参考题库及答案解析
- 2025年齐鲁师范学院公开招聘人员(17人)备考题库附答案
- 2025年航天科技控股集团股份有限公司副总经理招聘1人备考题库附答案
- 2025年盐城中考历史试卷及答案
- 2025年郑州工业应用技术学院马克思主义基本原理概论期末考试模拟试卷
- 2026年七年级历史上册期末考试试卷及答案(共六套)
- 2025年六年级上册道德与法治期末测试卷附答案(完整版)
- 附件二;吊斗安全计算书2.16
- 2025年全载录丨Xsignal 全球AI应用行业年度报告-
- 学校食堂改造工程施工组织设计方案
- 资产评估期末试题及答案
- 郑州大学《大学英语》2023-2024学年第一学期期末试卷
- 脑出血诊疗指南2025
- 2025年开放大学化工原理试题库及答案
评论
0/150
提交评论