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
原创粉丝点击