Android 将图像放大到TouchImageView时禁用垂直视图寻呼机
我正在使用和进行图像放大/缩小。当我放大图像并尝试向下拖动图像(查看图像的底部部分)时,查看页面将滑动到第二个图像。任何帮助都将不胜感激。我需要禁用viewpager我试图更改垂直视图寻呼机的canScroll功能,但没有帮助 以下是我修改的代码:Android 将图像放大到TouchImageView时禁用垂直视图寻呼机,android,android-viewpager,touchimageview,Android,Android Viewpager,Touchimageview,我正在使用和进行图像放大/缩小。当我放大图像并尝试向下拖动图像(查看图像的底部部分)时,查看页面将滑动到第二个图像。任何帮助都将不胜感激。我需要禁用viewpager我试图更改垂直视图寻呼机的canScroll功能,但没有帮助 以下是我修改的代码: protected boolean canScroll(View v, boolean checkV, int dy, int x, int y) { if(v instanceof TouchImageView) { Lo
protected boolean canScroll(View v, boolean checkV, int dy, int x, int y) {
if(v instanceof TouchImageView)
{
Log.d("Here","Here");
if(((TouchImageView) v).getCurrentZoom()!=1)
{
Log.d("Here","HereAgain");
return false;
}
}
else if (v instanceof ViewGroup) {
final ViewGroup group = (ViewGroup) v;
final int scrollX = v.getScrollX();
final int scrollY = v.getScrollY();
final int count = group.getChildCount();
// Count backwards - let topmost views consume scroll distance first.
for (int i = count - 1; i >= 0; i--) {
// TODO: Add versioned support here for transformed views.
// This will not work for transformed views in Honeycomb+
final View child = group.getChildAt(i);
if (y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
canScroll(child, true, dy, x + scrollX - child.getLeft(),
y + scrollY - child.getTop())) {
return true;
}
}
return checkV && ViewCompat.canScrollVertically(v, -dy);
}
return false;
}
protected boolean canScroll(视图v、布尔检查v、整数dy、整数x、整数y){
if(v TouchImageView实例)
{
Log.d(“此处”、“此处”);
如果((TouchImageView)v.getCurrentZoom()!=1)
{
Log.d(“此处”、“再次此处”);
返回false;
}
}
else if(视图组的v实例){
最终视图组=(视图组)v;
final int scrollX=v.getScrollX();
final int scrollY=v.getScrollY();
final int count=group.getChildCount();
//向后计数-让最顶端的视图首先消耗滚动距离。
对于(int i=count-1;i>=0;i--){
//TODO:在此处为转换视图添加版本化支持。
//这不适用于蜂窝中的变换视图+
最终视图child=group.getChildAt(i);
如果(y+scrollY>=child.getTop()&&y+scrollY=child.getLeft()&&x+scrollX
要解决这个问题,请创建一个自定义的VerticalViewPage
类,该类重写滚动事件(onTouchEvent
,onInterceptTouchEvent
),然后根据您是否要滚动,从中返回true
或false
,这将通过预定义的布尔值变量实现:
import android.content.Context;
import android.view.MotionEvent;
public class CustomizongVVP extends VerticalViewPager {
public boolean scroll = true;
public CustomizongVVP(Context context) {
super(context);
}
public CustomizongVVP(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return scroll && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return scroll && super.onInterceptTouchEvent(event);
}
public void setScroll(boolean scroll) {
this.scroll = scroll;
}
}
并界定:
CustomizongVVP custom_vvp = new CustomizongVVP(this);
custom_vvp.setScroll(true); // to allow scrolling
custom_vvp.setScroll(false); // to disable scrolling
因此,您可以随时在
true
和false
之间切换,以允许和禁用使用custom_vvp.setScroll()
方法进行滚动。要解决此问题,请创建一个自定义VerticalViewPage
类,该类覆盖滚动事件(onTouchEvent
,onInterceptTouchEvent
),然后根据您是否要滚动,从中返回true
或false
,这将通过预定义的布尔变量实现:
import android.content.Context;
import android.view.MotionEvent;
public class CustomizongVVP extends VerticalViewPager {
public boolean scroll = true;
public CustomizongVVP(Context context) {
super(context);
}
public CustomizongVVP(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return scroll && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return scroll && super.onInterceptTouchEvent(event);
}
public void setScroll(boolean scroll) {
this.scroll = scroll;
}
}
并界定:
CustomizongVVP custom_vvp = new CustomizongVVP(this);
custom_vvp.setScroll(true); // to allow scrolling
custom_vvp.setScroll(false); // to disable scrolling
因此,您可以随时在
true
和false
之间切换,以允许和禁用使用custom_vvp.setScroll()
方法进行滚动。要解决此问题,请创建一个自定义VerticalViewPage
类,该类覆盖滚动事件(onTouchEvent
,onInterceptTouchEvent
),然后根据您是否要滚动,从中返回true
或false
,这将通过预定义的布尔变量实现:
import android.content.Context;
import android.view.MotionEvent;
public class CustomizongVVP extends VerticalViewPager {
public boolean scroll = true;
public CustomizongVVP(Context context) {
super(context);
}
public CustomizongVVP(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return scroll && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return scroll && super.onInterceptTouchEvent(event);
}
public void setScroll(boolean scroll) {
this.scroll = scroll;
}
}
并界定:
CustomizongVVP custom_vvp = new CustomizongVVP(this);
custom_vvp.setScroll(true); // to allow scrolling
custom_vvp.setScroll(false); // to disable scrolling
因此,您可以随时在
true
和false
之间切换,以允许和禁用使用custom_vvp.setScroll()
方法进行滚动。要解决此问题,请创建一个自定义VerticalViewPage
类,该类覆盖滚动事件(onTouchEvent
,onInterceptTouchEvent
),然后根据您是否要滚动,从中返回true
或false
,这将通过预定义的布尔变量实现:
import android.content.Context;
import android.view.MotionEvent;
public class CustomizongVVP extends VerticalViewPager {
public boolean scroll = true;
public CustomizongVVP(Context context) {
super(context);
}
public CustomizongVVP(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return scroll && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return scroll && super.onInterceptTouchEvent(event);
}
public void setScroll(boolean scroll) {
this.scroll = scroll;
}
}
并界定:
CustomizongVVP custom_vvp = new CustomizongVVP(this);
custom_vvp.setScroll(true); // to allow scrolling
custom_vvp.setScroll(false); // to disable scrolling
因此,您可以随时在
true
和false
之间切换,以允许和禁用使用custom_vvp.setScroll()
方法进行滚动。另一种方法是将TouchImageView子类化并覆盖CanScrollVertical方法,如下所示:
@Override
public boolean canScrollVertically(int direction) {
matrix.getValues(m);
float y = m[Matrix.MTRANS_Y];
if (getImageHeight() < viewHeight) {
return false;
} else if (y >= -1 && direction < 0) {
return false;
} else if (Math.abs(y) + viewHeight + 1 >= getImageHeight() && direction > 0) {
return false;
}
return true;
}
@覆盖
公共布尔值可垂直滚动(整数方向){
矩阵值(m);
浮点y=m[矩阵MTRANS_y];
如果(getImageHeight()=-1&&方向<0)为else{
返回false;
}else if(Math.abs(y)+viewHeight+1>=getImageHeight()&&direction>0){
返回false;
}
返回true;
}
如果图像缩小,则滑动会更改页面。如果图像被放大,则他们可以在不更改页面的情况下在图像周围平移,直到到达缩放图像的顶部或底部,此时下一次滑动将更改页面
希望这会有所帮助另一种方法是将TouchImageView子类化并覆盖CanScrollVertical方法,如下所示:
@Override
public boolean canScrollVertically(int direction) {
matrix.getValues(m);
float y = m[Matrix.MTRANS_Y];
if (getImageHeight() < viewHeight) {
return false;
} else if (y >= -1 && direction < 0) {
return false;
} else if (Math.abs(y) + viewHeight + 1 >= getImageHeight() && direction > 0) {
return false;
}
return true;
}
@覆盖
公共布尔值可垂直滚动(整数方向){
矩阵值(m);
浮点y=m[矩阵MTRANS_y];
如果(getImageHeight()=-1&&方向<0)为else{
返回false;
}else if(Math.abs(y)+viewHeight+1>=getImageHeight()&&direction>0){
返回false;
}
返回true;
}
如果图像缩小,则滑动会更改页面。如果图像被放大,则他们可以在不更改页面的情况下在图像周围平移,直到到达缩放图像的顶部或底部,此时下一次滑动将更改页面
希望这会有所帮助另一种方法是将TouchImageView子类化并覆盖CanScrollVertical方法,如下所示:
@Override
public boolean canScrollVertically(int direction) {
matrix.getValues(m);
float y = m[Matrix.MTRANS_Y];
if (getImageHeight() < viewHeight) {
return false;
} else if (y >= -1 && direction < 0) {
return false;
} else if (Math.abs(y) + viewHeight + 1 >= getImageHeight() && direction > 0) {
return false;
}
return true;
}
@覆盖
公共布尔值可垂直滚动(整数方向){
矩阵值(m);
浮点y=m[矩阵MTRANS_y];
如果(getImageHeight()=-1&&方向<0)为else{
返回false;
}else if(Math.abs(y)+viewHeight+1>=getImageHeight()&&direction>0){
返回false;
}
返回true;
}
如果图像被缩小,则