photoView控件的使用

photoView:

效果:

 

 

一,先说下photoView 
PhotoView的简介: 
这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小。支持在ViewPager中翻页浏览图片。 
PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件。功能实用和强大。

PhotoView的功能: 
图片浏览查看 
双指缩放 
单点触摸缩放 
图片缩放模式设置

基本用法: 
导入jar包,布局XML里设置PhotoView 
将ImageView传入PhotoViewAttacher 
但是如果要处理点击事件的话,就不能传入PhotoViewAttacher,要在布局作用 
就是用photoView

  •  

代码演示: 
使用 PhotoView进行网络图片和本地图片的加载,缩放和点击事件处理

  iv_photo=(PhotoView) findViewById(R.id.iv_photo);
        //加载本地图片缩放处理
        iv_photo.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Toast.makeText(JkPhotoVIewActivity.this, "图片被长点击了", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
  •  

因为需求是吧图片长按跳出弹窗,实现图片的保存,所以写的是长按的点击事件, 
如果点击的话实现这个方法:

 iv_photo.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
            @Override
            public void onPhotoTap(View view, float x, float y) {

            }
        });
  •  

布局文件如下,

  •  

图片加载出来就已经可以点击放大缩小了,

 

 

 

 

使用:配上ViewPages使用:

第一步:导入一个PhotoView.arr包  下载地址 https://download.csdn.net/download/qq_35427437/10414437

第二步:

        作为一个条目放入ViewPage中

        



    

 

第三步:

 

        初始化一个ViewPage



    
    
public class DetailImageActiviry extends Activity{

    private ViewPager viewPager;
    public static String intentName="image";
    private ArrayList views;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activiry_detail_image);
        viewPager = findViewById(R.id.detail_image_load_activity);
        views=new ArrayList<>();
        //传过来的值
        ArrayList images = (ArrayList)getIntent().getSerializableExtra(intentName);
        if(images!=null){
            for (DetailWebImage item:images){
                View view=View.inflate(this,R.layout.item_detail_image,null);
                views.add(view);
            }
        }
        DetailImageAdapter  adapter = new DetailImageAdapter(images,views,this);
        viewPager.setAdapter(adapter);
        }
}

 

 

第四步:

 

 

Adapter实现

package netease.li.com.wangyiyun.news.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;

import java.util.ArrayList;

import netease.li.com.wangyiyun.R;
import netease.li.com.wangyiyun.news.bean.DetailWebImage;
import uk.co.senab.photoview.PhotoView;

public class DetailImageAdapter extends PagerAdapter {
    ArrayList images;
    ArrayList views;
    Context context;
    private DisplayImageOptions options;
    public DetailImageAdapter(ArrayList images, ArrayList views, Context context){
        this.images=images;
        this.views=views;
        this.context=context;

        表示保存到本地磁盘
        options =  new DisplayImageOptions
                .Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();
    }
    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view=views.get(position);
        PhotoView photoView=view.findViewById(R.id.item_detail_photoViewId);
        ImageLoader.getInstance().displayImage(images.get(position).getSrc(),photoView,options);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View)object);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
}

 

有问题可以在下方留言

你可能感兴趣的:(Android,Android开源框架)