zoukankan      html  css  js  c++  java
  • Android图片处理--缩放

    PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。上一篇文章介绍了图片的全景效果查看,今天介绍一个图片缩放,我们如果有时间的话,可以自己写一个属于自己的库,里面会用到view的按压、事件分发、手势等一些知识,如果没有时间或者不会其他的方法,不妨来看看这个PhotoView。这是一个图片缩放库,对于这样的还有GitView等,下面我就介绍一些用法。

    功能:

    • 正常加载图片
    • 双击放大
    • 手势随意缩放
    • 随意拖动查看图片每一个角落
    • 结合其他设置可实现翻转

    效果图

    1:本地图片加载

    <ImageView
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:id="@+id/id_loc"
            android:scaleType="fitXY"
            />
    <uk.co.senab.photoview.PhotoView
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:src="@mipmap/ic_launcher"
            android:id="@+id/id_myimg"/>

    第一种方法:

     //本地加载方法一
            // 设置图片
            Drawable bitmap = getResources().getDrawable(R.mipmap.ic_launcher);
            loc.setImageDrawable(bitmap);
    
            // 连接在photoview中
            PhotoViewAttacher mAttacher = new PhotoViewAttacher(loc);
            mAttacher.update();//更新

     第二种

    //本地方法加载二
            PhotoViewAttacher mAttacher;
           mAttacher = new PhotoViewAttacher(loc);
           iv.setImageBitmap(bitmap);
            Glide.with(this).load(R.mipmap.ic_launcher).asBitmap().into(loc);
            mAttacher.update();

    2:网络图片加载

    对于网络也是可以用ImageView和PhotoView两种

    把ImageView或者PhotoView的对象名直接添加到display中就OK 了。

            //加载网络图片
            ImageLoader loader= ImageLoader.getInstance();
            loader.init(ImageLoaderConfiguration.createDefault(ImageTest.this));//loader初始化
            loader.displayImage("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1529211252&di=1414331e22239ecb5730cbbd0f3793eb&src=http://pic154.nipic.com/file/20180114/26629113_090329120799_2.jpg",loc);//展示图片

     下面我们可以看一下源码,其实他也是继承了ImageView

    /**
         * Adds display image task to execution pool. Image will be set to ImageView when it's turn. <br/>
         * Default {@linkplain DisplayImageOptions display image options} from {@linkplain ImageLoaderConfiguration
         * configuration} will be used.<br />
         * <b>NOTE:</b> {@link #init(ImageLoaderConfiguration)} method must be called before this method call
         *
         * @param uri       Image URI (i.e. "http://site.com/image.png", "file:///mnt/sdcard/image.png")
         * @param imageView {@link ImageView} which should display image
         * @throws IllegalStateException    if {@link #init(ImageLoaderConfiguration)} method wasn't called before
         * @throws IllegalArgumentException if passed <b>imageView</b> is null
         */
        public void displayImage(String uri, ImageView imageView) {
            displayImage(uri, new ImageViewAware(imageView), null, null, null);
        }

     完

  • 相关阅读:
    爬虫代理及ssl验证
    python3编程基础之一:量的表示
    python3编程基础之一:标识符
    python3编程基础之一:关键字
    dell如何安装Win10/Ubuntu双系统
    linux修改用户名和密码
    cmake入门之内部构建
    入门cmake,窥探编译过程
    数据结构交作业代码的仓库名称
    手动制作BIOS和EFI多启动U盘
  • 原文地址:https://www.cnblogs.com/cmusketeer/p/9192687.html
Copyright © 2011-2022 走看看