Android进阶之路
来源:互联网 发布:python中syntax error 编辑:程序博客网 时间:2024/05/21 10:05
在当前的Android开发中,我们除去以前使用的Imageload之外,可能用的较多的就是picasso或是glide,当然这俩款图片加载方式,我都写了简单的使用与自封工具,需要使用的话,直接copy出Util就可以直接进行使用了,下面进入正题
优缺点(Demo中的gif图,在手机上运行是不会卡的,只是此gif图帧的问题):
picasso:加载稍微慢一点,质量高,与okhttp嵌合较好,context为APPContext(可通过以下网址学习)
http://blog.csdn.net/qq_20451879/article/details/70217425
glide:加载较快,但是质量稍微低了一点,占用较大控件用语缓存,可加载gif图片,context可以对应activity
与fragment
效果图:
AndroidManifest(清单文件-添加权限):
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
build.gradle添加依赖(如不使用butterknife,可不添加):
compile 'com.jakewharton:butterknife:6.1.0' compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.android.support:support-v4:24.0.0'
MainActivity:
package com.example.glide;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.bumptech.glide.Glide;import butterknife.ButterKnife;import butterknife.InjectView;import butterknife.OnClick;public class MainActivity extends AppCompatActivity { String url_one = "http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png"; String url_two = "http://hsp-static-file.oss-cn-shanghai.aliyuncs.com/app/icon/thirdparty/guessing_competition.png"; @InjectView(R.id.iv) ImageView mIv; @InjectView(R.id.tv) TextView mTv; @InjectView(R.id.tv_2) TextView mTv2; @InjectView(R.id.iv_2) ImageView mIv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); } @OnClick({R.id.tv, R.id.tv_2}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.tv: Glide.with(getApplicationContext()).load(url_one).into(mIv); Toast.makeText(getApplication(), "普通触发", Toast.LENGTH_LONG).show(); break; case R.id.tv_2: GlideUtil.glideAdvanced(getApplicationContext(), url_two, R.drawable.camera_icon , R.drawable.close_icon, mIv2); Toast.makeText(getApplication(), "工具触发", Toast.LENGTH_LONG).show(); break; } }}
MainActivity Xml :
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.glide.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv" android:padding="5dp" android:gravity="center" android:text="Glide" /> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/iv" android:layout_weight="1" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_2" android:padding="5dp" android:gravity="center" android:text="GlideUtil" /> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/iv_2" android:layout_weight="1" /></LinearLayout>
GlideUtil:
package com.example.glide;import android.content.Context;import android.net.Uri;import android.widget.ImageView;import com.bumptech.glide.DrawableTypeRequest;import com.bumptech.glide.Glide;import com.bumptech.glide.Priority;import com.bumptech.glide.load.engine.DiskCacheStrategy;import java.io.File;public class GlideUtil { /*适合自己的才是最好的*/ //基础使用 - 网络加载 - 推荐 public static void glidePrimary(Context context,String loadUrl, ImageView imageView){ Glide.with(context).load(loadUrl).into(imageView); } //显错使用 - 网络加载 - 推荐 public static void glideIntermediate(Context context, String loadUrl, int errorImageView, ImageView imageView) { Glide.with(context).load(loadUrl).error(errorImageView).into(imageView); } //站位使用 - 加载中显示的图片 - 推荐 public static void glide(Context context, String loadUrl, int placeImageView, ImageView imageView) { Glide.with(context).load(loadUrl).placeholder(placeImageView).into(imageView); } //站位使用 - 网络加载 - 推荐 public static void glideAdvanced(Context context, String loadUrl, int placeImageView, int errorImageView, ImageView imageView) { Glide.with(context).load(loadUrl).placeholder(placeImageView).error(errorImageView).into(imageView); } //限制使用(如图片本身较小,依旧会吧ImageView的width,height拉伸) - 网络加载 public static void glideCrop(Context context, String loadUrl, ImageView imageView) { Glide.with(context).load(loadUrl).centerCrop().into(imageView); } //限制使用(图片缩放,ImageView显示小于等于ImageView大小,但是不会填充满当前的ImageView) - 网络加载 public static void glideFit(Context context, String loadUrl, ImageView imageView) { Glide.with(context).load(loadUrl).fitCenter().into(imageView); } //限制使用(glideCrop-glideFit)俩者测试-以后者的方法为主要显示处理 - 网络加载 public static void glideCrop_Fit(Context context, String loadUrl, ImageView imageView) { Glide.with(context).load(loadUrl).fitCenter().centerCrop().into(imageView); } //资源加载 public static void glideResource(Context context, int resource, ImageView imageView) { Glide.with(context).load(resource).into(imageView); } //本地加载 - 可显示图片 public static void glideFile(Context context, String file, ImageView imageView) { Glide.with(context).load(new File(file)).into(imageView); } //本地加载 - 可显示视频 public static void glideVideo(Context context, String path, ImageView imageView) { Glide.with(context).load(Uri.fromFile(new File(path))).into(imageView); } //显示Gif动画 public static void glideIsGif(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).asGif().into(imageView); } //跳过内存缓存 public static void glideSkipCache(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).skipMemoryCache(true).into(imageView); } //跳过磁盘缓存 public static void glideDiskCache(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).diskCacheStrategy(DiskCacheStrategy.NONE).into(imageView); } /** DiskCacheStrategy.NONE 什么都不缓存 DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像 DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的) DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为) * */ //跳过缓存 public static void glideDiskCachex(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).diskCacheStrategy(DiskCacheStrategy.NONE).into(imageView); Glide.with(context).load(loadUrl).skipMemoryCache(true).into(imageView); } //清除内存缓存 public static void glideClear(Context context){ Glide.get(context).clearMemory(); } //优先加载 public static void glidePriority_high(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).priority(Priority.priority.HIGH).into(imageView); } //优后加载 public static void glidePriority_low(Context context,String loadUrl,ImageView imageView){ Glide.with(context).load(loadUrl).priority(Priority.priority.LOW).into(imageView); } //用原图的比例作为缩略图 - 如无法使用请在比例之后后缀 - f public static void glideBreviary(Context context,String loadUrl,float ratio,ImageView imageView){ Glide.with(context).load(loadUrl).thumbnail(ratio).into(imageView); } //用其他图片做位缩略图 public static void glideBreviary_others(Context context,int resource,String loadUrl,float ratio,ImageView imageView) { DrawableTypeRequest<Integer> covering = Glide.with(context).load(resource); Glide.with(context).load(loadUrl).thumbnail(covering).into(imageView); } /** * 图形处理需要导入相关依赖: * compile 'jp.wasabeef:glide-transformations:2.0.0' * 库: * wasabeef/glide-transformations * 建议: * 涉及的圆形头像,可以在into的imageview处使用CircleImageVIew * * 因当前项目并没有导入这个依赖,所以只是进行了封装,如需使用这项功能,自行导入依赖,解开注释即可 * */ //图形裁剪 public static void glidePicture_Tailor(Context context,String loadUrl,ImageView imageView){// Glide.with(context).load(loadUrl) .bitmapTransform(new CropCircleTransformation(context)).into(imageView); } //圆角处理 public static void glidePicture_Circular(Context context,String loadUrl,int width,int height,ImageView imageView){// Glide.with(context).load(loadUrl).bitmapTransform(new RoundedCornersTransformation(context,width,height,RoundedCornersTransformation.CornerType.ALL)).into(imageView); } //灰度处理 public static void glidePicture_Color(Context context,String loadUrl,ImageView imageView){// Glide.with(context).load(loadUrl).bitmapTransform(new GrayscaleTransformation(context)); }}
1 0
- Android进阶之路
- android进阶之路
- Android 进阶之路
- Android 进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- Android进阶之路
- 简单讲述关于C#的线程,任务,同步
- CCCC-GPLT L3-014. 周游世界 团体程序设计天梯赛
- 【SSH网上商城项目实战21】从Demo中看易宝支付的流程
- Android基础控件ListView的使用与焦点冲突解决
- 宝宝小爬虫Selenium自动获取网页cookie+Curl数据查询
- Android进阶之路
- 使用Qt编写模块化插件式应用程序
- LayoutInflater 分析
- 类的加载机制
- 原生JS查找同辈元素
- 你说看到的那些技术问题
- jQuery.parseJSON() 函数详解
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式等)介绍
- 浅谈node.js Express框架