android – 如何水平拖动视图?

android – 如何水平拖动视图?,第1张

概述在ListView和Gallery等控件中,您可以在垂直或水平方向上拖动项目. 我有一个TextView,我成功地拖动它.但是我想把它向水平方向移动.我该如何实现它? 谢谢, 我的代码: public class MyDragShadowBuilder extends View.DragShadowBuilder { private static View view; publi 在ListVIEw和gallery等控件中,您可以在垂直或水平方向上拖动项目.

我有一个TextVIEw,我成功地拖动它.但是我想把它向水平方向移动.我该如何实现它?

谢谢,

我的代码:

public class MyDragShadowBuilder extends VIEw.DragShadowBuilder {    private static VIEw vIEw;    public MyDragShadowBuilder(VIEw v) {        super(v);        vIEw = v;    }    @OverrIDe    public voID onProvIDeShadowMetrics(Point size,Point touch) {        wIDth = getVIEw().getWIDth();        height = getVIEw().getHeight();        size.set(wIDth,height);        touch.set(wIDth / 2,height / 2);    }    private int wIDth,height;    @OverrIDe    public voID onDrawShadow(Canvas canvas) {        vIEw.draw(canvas);    }}

在我的活动中:

tv.setonLongClickListener(new OnLongClickListener() {        @OverrIDe        public boolean onLongClick(VIEw v) {            ClipData data = ClipData.newPlainText("dot","Dot : " + v.toString());            VIEw.DragShadowBuilder myShadow = new MyDragShadowBuilder(v);            v.startDrag(data,myShadow,(Object) v,0);            return false;            }        });

我想模拟一个画廊.我有10000张照片要显示出来.我的画廊可以显示10张照片.我想拖动我的图库的linearLayout水平包含图库的内容,当linearLayout像SlIDingDrawer一样到达窗口的末尾时,更改其内容并显示接下来的10张照片. SlIDingDrawer是一个很好的解决方案,但它有一些局限性.将整个linearLayout设置为其句柄时,无法单击它.为其设置单独的句柄时,无法确定句柄相对于内容的位置.

解决方法 从Bluefalcon的建议开始,我想出了类似的东西:

// in onCreate of the containing vIEwdragbutton.setontouchListener(new DragExperimenttouchListener(dragbutton.getX(),dragbutton.getY()));

public class DragExperimenttouchListener implements VIEw.OntouchListener {    public DragExperimenttouchListener(float initalX,float initialY) {        lastX = initalX;        lastY = initialY;    }    boolean isDragging = false;    float lastX;    float lastY;    float deltaX;    @OverrIDe    public boolean ontouch(VIEw arg0,MotionEvent arg1) {        int action = arg1.getAction();        if (action == MotionEvent.ACTION_DOWN && !isDragging) {            isDragging = true;             deltaX = arg1.getX();            return true;        } else if (isDragging) {            if (action == MotionEvent.ACTION_MOVE) {                arg0.setX(arg0.getX() + arg1.getX() - deltaX);                arg0.setY(arg0.getY());                return true;            } else if (action == MotionEvent.ACTION_UP) {                isDragging = false;                lastX = arg1.getX();                lastY = arg1.getY();                return true;            } else if (action == MotionEvent.ACTION_CANCEL) {                arg0.setX(lastX);                arg0.setY(lastY);                isDragging = false;                return true;            }        }        return false;    }}
总结

以上是内存溢出为你收集整理的android – 如何水平拖动视图?全部内容,希望文章能够帮你解决android – 如何水平拖动视图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1123057.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存