Articles of 拖放

android 3.x中的拖放导致拖动后的小数字后面的illegalStateException

在Android 3.x上有拖放机制的问题:在做了一些拖动(比如30次拖动)之后会产生exception(参见附件链接) https://groups.google.com/forum/#!msg/android-platform/2APvO248NNY/rKI-5dCT8XcJ (我在日志中收到与该post相同的内容..) android技术人员在那里回答它是API中的错误,并说避免问题的唯一方法是调用垃圾收集器。 我做的。 exception没有被抛出,但过了一段时间(比如更多30-40次拖动)android停止从某种原因调用drop事件。 我试图通过释放所有资源/canvas/绘图缓存/回收位图来“刷新”所有视图并重新创建它们并且它没有帮助(不再抛出exception – 但仍然有一些拖拽掉落事件’工作) “帮助”唯一的事情是关闭活动并重新启动它。 有人以某种方式解决了这个问题,或者有一个简单的替代方案??? (旁边实现我自己的拖放function..) 我想得到解决方案,不会强迫我重新启动或重新创建任何不想要的东西.. 这里是演示错误的示例代码 (没有演示我在使用System.GC后对drop事件的问题所说的部分): public class DragandDropExampleActivity extends Activity { private boolean mIsBeenDragged = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageView imageViewToDRag = (ImageView) findViewById(R.id.image_view_to_drag); imageViewToDRag.setClickable(true); imageViewToDRag.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() […]

如何将Android拖阴影的“目标点”从其“触点”中移开?

我正在开发一个应用程序,可以更好地控制拖动对象的删除位置。 但是使用电容式触摸屏时,用户的手指总是会遮挡掉落目标。 Android允许通过覆盖View.DragShadowBuilder.onProvideShadowMetrics()方法来指定拖动阴影上的“触摸点”。 但似乎没有办法提供一个流离失所的“目标点”。 我想从拖影的触摸点投射一个箭头,可以更精确地操纵到投射目标。 问题:实现这一目标的最简单/最优雅的方法是什么? 我认为我可以在拖动操作期间在屏幕上放置一个不可见的图层,它记录触摸点的坐标,转换它们并将它们发送到实际的拖放目标 – 基本上重新实现拖动事件。 但我想知道是否有更简单的解决方案。 或者如果其他人之前做过类似的事情。 编辑:这是我想要的那种拖影的粗略模型:

android – 如何捕获与RecyclerView一起使用的ItemTouchHelper的Drop动作

我对RecyclerView的 ItemTouchHelper有问题。 我在做一个游戏。 游戏板实际上是RecyclerView。 RecyclerView具有一些跨度计数的GridLayoutManager 。 我想实现拖放 recyclerview的项目。 任何项目都可以拖动所有方向(向上,向下,向左,向右)。 private void initializeLayout() { recyclerView.setHasFixedSize(true); recyclerView.setLayoutFrozen(true); recyclerView.setNestedScrollingEnabled(false); // set layout manager GridLayoutManager layoutManager = new GridLayoutManager(getContext(), BOARD_SIZE, LinearLayoutManager.VERTICAL, true); recyclerView.setLayoutManager(layoutManager); // Extend the Callback class ItemTouchHelper.Callback itemTouchCallback = new ItemTouchHelper.Callback() { public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { Log.w(TAG, “onMove”); return false; } @Override […]

Android中的Tinder appanimation(拖放视图或布局)

我想像拖放一样拖放像Tinder App这样的布局。怎么做? 请回复我。 解决了 步骤2.为MainActivity.java创建拖放视图的活动 package com.example.dragdropviewdemo; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.LinearLayout.LayoutParams; import android.widget.RelativeLayout; public class MainActivity extends Activity { int windowwidth; int screenCenter; int x_cord, y_cord; int Likes = 0; RelativeLayout parentView; float alphaValue = 0; @SuppressWarnings(“deprecation”) @SuppressLint(“NewApi”) @Override public void […]

覆盖onTouchEvent与ScrollView竞争

从简单的概述我有一个自定义视图,其中包含用户可以拖动和resize的一些位图。 我这样做的方式是相当标准的,因为我在我的CustomView中覆盖onTouchEvent并检查用户是否在图像中触摸等。 当我想将这个CustomView放在ScrollView中时,我的问题出现了。 这可行,但ScrollView和CustomView似乎竞争MotionEvents,即当我尝试拖动图像时,它移动缓慢或视图滚动。 我想我可能需要扩展ScrollView,以便我可以覆盖onInterceptTouchEvent并让它知道用户是否在图像的范围内而不是尝试滚动。 但是,因为ScrollView在层次结构中更高,我将如何访问CustomView的当前状态? 有没有更好的办法?

Android拖放ACTION_DRAG_ENDED未触发

我真的有时间搞清楚这个,到目前为止找不到任何有相关经验的朋友。 在我发布我的第一个应用程序之前,这是我非常最后的function,所以它让我疯狂,因为它已经陷入困境,最终即将结束! 如果我将物体放在可接受的区域,我的拖放效果会很好。 但是,如果丢弃在其他地方我没有得到事件,并且在失败的拖放操作后无法清理。 我需要触发ACTION_DRAG_ENDED事件。 但是,如果我使用值为true的ACTION_DRAG_STARTED响应(意味着它可以接受该对象),则仅触发(根据文档)。 问题是ACTION_DRAG_STARTED没有解雇! 所以我认为问题的关键在于我没有得到ACTION_DRAG_STARTED。 我在这里放置了所有相关的拖拽代码(或至少几乎全部): private OnTouchListener onTouchListener = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { Item current = (Item) ((View) v.getTag()).getTag(); //ClipData data = ClipData.newPlainText(“test”, “testText”); View dragView = (View) v.getTag(); DragShadowBuilder shadowBuilder = new ItemDragShadowBuilder(dragView, new Point(v.getWidth()/2, v.getHeight()/2)); dragSource = […]

在Android 2.2中拖放布局

是否可以在gestureOverlay视图中添加布局并将其拖放到android中的所需位置。 我能够添加一个布局但不能拖放它。我想知道是否可以在2.2版本中执行此操作?

View.setVisibility中的java.util.ConcurrentModificationException

我正在为观点实施“拖放”。 当拖动开始时,我将视图的可见性设置为INVISIBLE ,然后,如果拖动被中断 – 返回到VISIBLE : public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { // Skipped some code boolean dragStarted = v.startDrag(data, shadowBuilder, v, 0); if (dragStarted) { v.setVisibility(View.INVISIBLE) } } } 和: if (event.getAction() == DragEvent.ACTION_DRAG_ENDED) { View droppedView = (View) event.getLocalState(); droppedView.setVisibility(View.VISIBLE); } 当调用“Drag ended”事件时,我会遇到exception: E/AndroidRuntime(7118): FATAL EXCEPTION: main […]

在我的自定义Launcher应用程序中使用Android拖放框架

我正在尝试开发自定义启动器应用程序(具有无限数量的主页),我需要在Launcher2(android 4.2)中实现拖放。 所以我发现了两种方法 1) 拖放框架 2)使用android launcher2方式,如实现DragController,DragSource,如此处所述。 但我很难理解为什么Android家伙没有在他们自己的应用程序中使用他们开发的拖放框架。 任何人都可以简要介绍他们的方法背后的可能理由吗?(我的意思是在记忆/表现方面) 提前致谢。

是否可以将项目拖到RecyclerView之外?

当我将一个项目从另一个RecyclerView拖放到它上面时,我需要以某种方式通知RecyclerView 。 可能吗? 或者我应该使用经典的拖放框架 ? 带有蓝色项目的RecyclerView位于一个片段中,带有红色项目的RecyclerView位于另一个片段中。 我也尝试过使用ItemTouchHelper,但是在从RecyclerView外部移动项目时,不会调用ItemTouchHelper.Callback的onMove()方法。 private class CustomItemTouchCallback extends Callback { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { return makeMovementFlags(UP|DOWN|START|END, 0); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { android.util.Log.d(TAG, “Move item from:” + viewHolder.getAdapterPosition() + ” to: ” + target.getAdapterPosition()); return true; } @Override public void onMoved(RecyclerView recyclerView, […]