如何在 Android 自定义视图中拖动和对齐项目?
Posted
技术标签:
【中文标题】如何在 Android 自定义视图中拖动和对齐项目?【英文标题】:How to drag and align an item in Android custom view? 【发布时间】: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】:对于绘制的对象没有这样的监听器。在onDraw()
之后,圆圈是位图的一部分。此外,您不应在 onDraw()
方法中创建对象。要拖动圆圈,您应该重写onTouchEvent()
方法,该方法为您提供有关触摸事件的各种信息。然后你应该保持你的圆圈的位置,这样你就可以比较接触点和你的圆圈。欲了解更多信息,请查看文档:https://developer.android.com/training/gestures
【讨论】:
以上是关于如何在 Android 自定义视图中拖动和对齐项目?的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 拖动预览的自定义视图