【问题标题】:How to drag and align an item in Android custom view?如何在 Android 自定义视图中拖动和对齐项目?
【发布时间】:2016-07-26 22:57:57
【问题描述】:

我创建了这个自定义视图来在应用顶部添加一个图层

视图中有一个可拖动的圆圈

public class LockView extends View {

    public LockView(Context context) {
        super(context);
        setClickable(true);
        setBackgroundColor(0x55ff0000);
        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                ((ViewGroup) getParent()).removeView(LockView.this);
            }
        });
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        ShapeDrawable circle=new ShapeDrawable(new OvalShape());
        circle.setBounds(10,10,100,100);
        circle.getPaint().setARGB(0xff,0,0xff,0);
        circle.draw(canvas);
    }
}

用法:

LockView lockView = new LockView(this);
WindowManager.LayoutParams baseParams = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
addContentView(lockView, baseParams);

问题是:

  1. 如何使圆圈可拖动?我找不到任何将监听器设置为圆形的方法。

  2. 如何将圆对齐到右下角?

【问题讨论】:

    标签: android drag-and-drop android-view draggable android-custom-view


    【解决方案1】:

    对于绘制的对象没有这样的监听器。在onDraw() 之后,圆圈是位图的一部分。此外,您不应在 onDraw() 方法中创建对象。要拖动圆圈,您应该重写onTouchEvent() 方法,该方法为您提供有关触摸事件的各种信息。然后你应该保持你的圆圈的位置,这样你就可以比较接触点和你的圆圈。欲了解更多信息,请查看文档:https://developer.android.com/training/gestures

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多