ViewPager滑动后,可移动的Imageview会回到初始化的位置
知乎看到的原文http://www.zhihu.com/question/37398770?sort=created
ViewPager滑动后,可移动的Imageview会回到初始化的位置?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="180dp" />
    <ImageView
        android:id="@+id/image"
        android:layout_width="160dp"
        android:layout_height="160dp"
        android:layout_below="@id/viewpager"
        android:layout_centerHorizontal="true"
        android:src="@mipmap/a" />
</RelativeLayout>
这是我的布局文件,就一个ViewPager一个ImageView
我在代码中监听了imageview的ontouch事件,重写onTouch方法实现imageview的移动:
private View.OnTouchListener movingEventListener = new View.OnTouchListener() {
        int lastX, lastY;
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    lastX = (int) event.getRawX();
                    lastY = (int) event.getRawY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    int dx = (int) event.getRawX() - lastX;
                    int dy = (int) event.getRawY() - lastY;
                    int left = v.getLeft() + dx;
                    int top = v.getTop() + dy;
                    int right = v.getRight() + dx;
                    int bottom = v.getBottom() + dy;
                    // 设置不能出界
                    if (left < 0) {
                        left = 0;
                        right = left + v.getWidth();
                    }
                    if (right > screenWidth) {
                        right = screenWidth;
                        left = right - v.getWidth();
                    }
                    if (top < 0) {
                        top = 0;
                        bottom = top + v.getHeight();
                    }
                    if (bottom > screenHeight) {
                        bottom = screenHeight;
                        top = bottom - v.getHeight();
                    }
                    v.layout(left, top, right, bottom);
                    lastX = (int) event.getRawX();
                    lastY = (int) event.getRawY();
                    break;
                case MotionEvent.ACTION_UP:
                   /* int flag = 0;
                    switch (v.getId()) {
                    }*/
            }
            return true;
        }
    };
运行程序后,imageview可以移动,但是移动之后,滑动ViewPager的话,ImageView就会回到最初的位置,请问一下这是为什么呢?
链接:http://www.zhihu.com/question/37398770/answer/88058631
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
package fmy.qf.com.mancheng.customview; import android.content.Context;
import android.util.AttributeSet; /**
* Created by Administrator on 2016/10/10.
*/
public class MygifView extends pl.droidsonroids.gif.GifImageView { private boolean keepPosition; public MygifView(Context context) {
super(context);
} public MygifView(Context context, AttributeSet attrs) {
super(context, attrs);
} public MygifView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} @Override
public void layout(int l, int t, int r, int b) {
if (!keepPosition) {
super.layout(l, t, r, b);
keepPosition=true;
}
} public void moveTiger(int l, int t, int r, int b) {
super.layout(l, t, r, b);
} public void startKeepPosition() {
keepPosition = true;
}
}
ViewPager滑动后,可移动的Imageview会回到初始化的位置的更多相关文章
- 如何禁止内部viewPager滑动
		众所周知,viewPager是能够滑动的,但有时候我们需要禁止它的滑动(微笑地面对*----*). 情况是这样的: activity中有一个viewPager,viewPager中加入3个Fragme ... 
- ViewPager 滑动页(四)
		需求:在ViewPager 滑动页(三) 基础上,减少界面层级. 效果图: 图层数变更前: 图层数变更后: 主要代码实现: <?xml version="1.0" encod ... 
- ViewPager 滑动页(三)
		需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作,当滑动到最后一页时,结束当前activity,进入下一个activity: 效果图: 实现分析: 1.目录结构: 代码实现: 1.Po ... 
- ViewPager 滑动页(二)
		需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作,并实现页面自动切换: 效果图: 实现分析: 1.目录结构: 代码实现: 1.PosterView.java package com.j ... 
- ViewPager  滑动页(一)
		需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作: 效果图: 实现分析: 1.目录结构: 代码实现: 1.fragment_main.xml <RelativeLayout xm ... 
- 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
		在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ... 
- android开发学习之ViewPager滑动事件讲解
		android ViewPager滑动事件讲解 今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPa ... 
- android 禁止ViewPager滑动
		最近项目中,有个需求就是要禁止ViewPager滑动事件,我们看下360手机助手的界面,风格就类似这样的 大家如果使用过360手机助手就会发现中间内容是不可以滑动的,现在写一个demo,讲下怎么禁止V ... 
- PullToRefreshListView中嵌套ViewPager滑动冲突的解决
		PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部 ... 
随机推荐
- vue中实现全选功能
			<!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue ... 
- linux内核源码分析 - nvme设备的初始化
			本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文基于3.18.3内核的分析,nvme设备为pcie接口的ssd,其驱动名称为nvme.ko,驱动代码在dri ... 
- javascript实现有限状态机
			1.状态机描述 简单说,有限状态机是一种模型,模型都用来模拟事物,能够被有限状态机这种模型模拟的事物,一般都有以下特点: 1)可以用状态来描述事物,并且任一时刻,事物总是处于一种状态: 2)事物拥有的 ... 
- Numpy&Pandas
			Numpy & Pandas 简介 此篇笔记参考来源为<莫烦Python> 运算速度快:numpy 和 pandas 都是采用 C 语言编写, pandas 又是基于 numpy, ... 
- [LeetCode] Construct Binary Tree from String 从字符串创建二叉树
			You need to construct a binary tree from a string consisting of parenthesis and integers. The whole ... 
- PHP观察者模式与Yii2.0事件
			1.先看PHP观察者模式的实现: 想要使用事件.必须实现事件的基类.统一的addObserver和trigger方法 定义统一接口.所有的观察者都要实现此接口 //事件的基类 abstract cla ... 
- jQuery动画使用总结
			jQuery动画我用的比较多的仅仅只有show和hide,但是作为一个被我们大多数人所熟知的框架,相信他的动画功能还是比较多样的,这里做个小总结. 1.jQuery animate(),用于创建自定义 ... 
- 《linux 网络日志分析与流量监控》记录
			mac中有个本机连接vpn的日志,/private/var/log/ppp.log 消除日志(echo "" >/private/var/log/ppp.log ) li ... 
- [ Java学习基础 ] Java对象的创建和销毁
			类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性.一个对象的生命周期包括三个阶段:创建.使用和销毁. 创建对象 创建对象包括两个步骤:声明和实例化. 声明 声明对象与声明普通变量没有区别 ... 
- Java集合详解一
			在学习集合之前,我们需要思考的是为什么要有集合?集合有什么用? 我们知道,在java中有数组的概念,数组可以用来存放一组数据.但是,数组是固定长度的,这样在使用的时候就会有很多的不方便,比如说资源的浪 ... 
