//子条目的点击监听
xLV.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(getActivity(), SeondActivity.class); intent.putExtra("image",results.get(position-1).getThumbnail_pic_s()); startActivity(intent); } });//导一个jar包 photoView 1.2.4 compile 'com.github.chrisbanes.photoview:library:1.2.4'
//SecondActivity布局文件
<uk.co.senab.photoview.PhotoView android:id="@+id/sec_photoView" android:layout_width="300dp" android:layout_height="200dp" />//SecondActivity中
public class SeondActivity extends AppCompatActivity{ // private ImageView imageView; private PhotoView sec_photoView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); // imageView = (ImageView) findViewById(R.id.sec_image); sec_photoView = (PhotoView) findViewById(R.id.sec_photoView); Intent intent = getIntent(); //path 路径 String image = intent.getStringExtra("image"); //自定义配置 DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//让图片进行内存缓存 .cacheOnDisk(true)//让图片进行sdcard缓存 // .showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误 // .showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片 // .showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片 .build(); //ImageLoader.getInstance().loadImage(path,options,new Ima);//加载图片 //参数1:加载的图片地址 //参数2:将图片设置到那个图片控件上面 //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard) ImageLoader.getInstance().displayImage(image, sec_photoView, options); } /** * 事件分发的方法 ,需要activty把事件传给photoview ,photoview才能接受到我们的触摸事件 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { //activity接受到事件分发之后,我们手动处理触摸事件,只给传给我们自己的onTouchEvent方法; onTouchEvent(ev); return true; } //手指按下的坐标 float downX; float downY; //手指移动前的坐标 float lastX; float lastY; boolean moveble = false; boolean isMorePoint = false; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); //接受多指触控需要用 event.getAction() & MotionEvent.ACTION_MASK 来获得当前的触摸事件 switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: downX = event.getX(); downY = event.getY(); lastX = downX; lastY = downY; if (downX > sec_photoView.getX() && downX < sec_photoView.getX() + sec_photoView.getWidth() && downY > sec_photoView.getY() && downY < sec_photoView.getY() + sec_photoView.getHeight() ) { moveble = true; } else { moveble = false; } break; case MotionEvent.ACTION_MOVE: //当前手指摸出的坐标 float currentX = event.getX(); float currentY = event.getY(); //我手指移动的距离 float gapX = currentX - lastX; float gapY = currentY - lastY; // 如果点击位置不在图片上的话不做任何逻辑处理 moveble ==true 的时候做处理 if (moveble) { if (isMorePoint) { //多指的时候 把事件交给photoview去处理 ,它自己会根据事件去做放大缩小的逻辑 , sec_photoView.dispatchTouchEvent(event); } else { //单指的时候 拖拽的逻辑 设置图片新的位置 == 原来的位置 + 手指移动的距离 sec_photoView.setX(sec_photoView.getX() + gapX); sec_photoView.setY(sec_photoView.getY() + gapY); } } lastX = event.getX(); lastY = event.getY(); break; case MotionEvent.ACTION_UP: break; //除了第一个手指之外别的手指按下时触发 case MotionEvent.ACTION_POINTER_DOWN: isMorePoint = true; break; //除了第一个手指之外别的手指抬起时触发 case MotionEvent.ACTION_POINTER_UP: isMorePoint = false; break; } return true; } }