使用Glide入门示例,ListView图片浏览器的实现
来源:互联网 发布:mac背光键盘不亮 编辑:程序博客网 时间:2024/04/27 23:55
使用Glide加载ListView示例
图片加载开源库中,看了很多资料对比,结论是在Universal-Image-Loader、Fresco、Picasso和Glide里,Glide表现最优秀:支持动画gif、缓存策略、流畅。以此记录下入门练习:
先上效果图:
1. 添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
- 布局
content_glide.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/content_glide" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.ming.mydrawtest.GlideActivity" tools:showIn="@layout/activity_glide"> <ImageView android:id="@+id/iv_glide" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" /> <ListView android:id="@+id/lv_glide" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="2"></ListView></RelativeLayout>
item_list.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><ImageView android:id="@+id/iv_item" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
- 适配器
package com.ming.mydrawtest.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.ming.mydrawtest.R;import java.util.List;/** * Created by temp on 2016/10/27. */public class MyGlideAdapter extends BaseAdapter { private Context mContext; private List<String> mUrls; private LayoutInflater layoutInflater; public MyGlideAdapter(Context context, List<String> urls) { this.mContext = context; this.mUrls = urls; layoutInflater = LayoutInflater.from(context); } @Override public int getCount() { return mUrls.size(); } @Override public Object getItem(int position) { return mUrls.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { MyViewHold myViewHold=null; if(convertView==null){ convertView = layoutInflater.inflate(R.layout.item_list,null); myViewHold = new MyViewHold(); myViewHold.imageView = (ImageView) convertView.findViewById(R.id.iv_item); convertView.setTag(myViewHold); }else{ myViewHold = (MyViewHold) convertView.getTag(); } Glide.with(mContext).load(mUrls.get(position)).into(myViewHold.imageView); return convertView; }}class MyViewHold { public ImageView imageView;}
- Activity
package com.ming.mydrawtest;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.widget.GridView;import android.widget.ImageView;import android.widget.ListView;import com.bumptech.glide.Glide;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;import com.ming.mydrawtest.adapter.MyGlideAdapter;import java.util.Arrays;import java.util.List;public class GlideActivity extends AppCompatActivity { private Context mContext; private ImageView ivGlide; private MyGlideAdapter adapter; private List<String> mUrls; public static String[] eatFoodyImages = { "http://i.imgur.com/rFLNqWI.jpg", "http://i.imgur.com/C9pBVt7.jpg", "http://i.imgur.com/rT5vXE1.jpg", "http://i.imgur.com/aIy5R2k.jpg", "http://i.imgur.com/MoJs9pT.jpg", "http://i.imgur.com/S963yEM.jpg", "http://i.imgur.com/rLR2cyc.jpg", "http://i.imgur.com/SEPdUIx.jpg", "http://i.imgur.com/aC9OjaM.jpg", "http://i.imgur.com/76Jfv9b.jpg", "http://i.imgur.com/fUX7EIB.jpg", "http://i.imgur.com/syELajx.jpg", "http://i.imgur.com/COzBnru.jpg", "http://i.imgur.com/Z3QjilA.jpg", }; private ListView lvGlide; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_glide); mContext = this; Glide.with(this); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); initView(); initData(); } private void initView() { mUrls = Arrays.asList(eatFoodyImages); ivGlide = (ImageView) findViewById(R.id.iv_glide); lvGlide = (ListView) findViewById(R.id.lv_glide); adapter = new MyGlideAdapter(mContext, mUrls); lvGlide.setAdapter(adapter); } private void initData() { String imageUrl = "http://photocdn.sohu.com/20161025/Img471273295.jpg";// Glide.with(mContext).load("http://photocdn.sohu.com/20161025/Img471273295.jpg").into(ivGlide);// Glide.with(mContext).load("http://photocdn.sohu.com/20161025/Img471273295.jpg").override(300,300).into(ivGlide); Glide.with(this).load(imageUrl).transform(new GlideRoundTransform(mContext)).into(ivGlide); } class GlideRoundTransform extends BitmapTransformation { private float radius = 0f; public GlideRoundTransform(Context context) { this(context, 4); } public GlideRoundTransform(Context context, int dp) { super(context); this.radius = Resources.getSystem().getDisplayMetrics().density * dp; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return roundCrop(pool, toTransform); } private Bitmap roundCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; } @Override public String getId() { return getClass().getName() + Math.round(radius); } }}
0 0
- 使用Glide入门示例,ListView图片浏览器的实现
- android 使用Glide实现listview图片缓存
- 图片加载库Glide的入门使用
- 在GridView或者ListView的Adapter中使用Glide加载图片,图片被拉伸问题
- android开发glide图片加载框架使用示例
- Glide-更多图片变换,glide-transformations的使用(六)
- Glide的图片加载库的使用
- Glide 的图片加载的使用
- listview和listFragment详细版,已解决chebox的复用,Glide实现图片的圆形,以及按钮添加数据
- Glide结合Recyclerview(Listview)实现列表滑动的时候图片不加载,滑动停止的时候加载
- Glide图片加载库的使用
- 39.Glide图片加载框架的使用
- Glide图片加载库的使用
- Glide图片加载库的使用
- Android Glide图片加载库的使用
- Android Glide图片加载库的使用
- 图片加载框架-Glide的使用
- Android Glide图片加载库的使用
- uva11694题解
- 细说JDK动态代理的实现原理
- node.js 小爬虫抓取网页数据
- CGLIB入门
- BZOJ 1031, 字符加密
- 使用Glide入门示例,ListView图片浏览器的实现
- cglib源码学习交流
- 5. React 组件的协同使用 组件嵌套和Mixin
- CGLIB简介
- lwyz&tayz胡策
- Codevs 1281 Xn数列 题解
- 后PC时代突围:英特尔投资问道
- 实战CGLib系列之proxy篇(三):延迟加载LazyLoader
- UVA 10917