版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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年中国计算机研究所招聘面试
- 2026年青年科技人才薪酬激励政策问答手册
- 汽车安全环境培训课件
- 2026年会计面试热点财务报表分析的实务操作
- 镇江市2026烟草专卖局招聘考试-行测-专业知识题库(含答案)
- 2026年上海对外经贸大学辅导员招聘笔试模拟试题及答案解析
- 南通市医疗机构主要运行指标定期公布工作实施方案
- 四川三江招商集团有限公司2026年3月公开招聘工作人员考试参考试题及答案解析
- 【励志教育】主题班会:《张雪机车夺冠》从山村少年到世界冠军的缔造者【课件】
- AI赋能地理教学的应用实践研究-初中-地理-论文
- 浙江省杭州山海联盟2024-2025学年度七年级英语下册期中试题卷(含答案)
- 2026山东青岛海上综合试验场有限公司招聘38人备考题库含完整答案详解(历年真题)
- 湖北省武汉市2026高三下学期3月调研考试化学试题 含答案
- (新教材)2026年部编人教版三年级下册语文 语文园地三 课件
- 护理团队建设与沟通技巧
评论
0/150
提交评论