photoView控件的使用

photoView:

效果:



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

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

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

<uk.co.senab.photoview.PhotoView
        android:id="@+id/iv_photo"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:src="@drawable/ao"
        />

代码演示: 
使用 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) {

            }
        });

布局文件如下,

<uk.co.senab.photoview.PhotoView
        android:id="@+id/iv_photo"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:src="@drawable/ao"
        />

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




使用:配上ViewPages使用:

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

第二步:

        作为一个条目放入ViewPage中

        

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <uk.co.senab.photoview.PhotoView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/item_detail_photoViewId"/>
</LinearLayout>

第三步:

        初始化一个ViewPage

<?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"
    android:background="@android:color/black"
    >
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/detail_image_load_activity">
    </android.support.v4.view.ViewPager>
</LinearLayout>
public class DetailImageActiviry extends Activity{

    private ViewPager viewPager;
    public static String intentName="image";
    private ArrayList<View> 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<DetailWebImage> images = (ArrayList<DetailWebImage>)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<DetailWebImage> images;
    ArrayList<View> views;
    Context context;
    private DisplayImageOptions options;
    public DetailImageAdapter(ArrayList<DetailWebImage> images, ArrayList<View> 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;
    }
}

有问题可以在下方留言

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35427437/article/details/80317388
文章标签: PhotView.arr
个人分类: Android
上一篇SwipeBackLayout的用法屏幕移动退出
下一篇Android常用网站
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭