コントロールの描画オーバーレイがある私のアプリを更新しています。ある時点では、ドラッグアンドドロップ機能が機能しなくなりました(私はそれが最初の実装であったとしても疑問ですが、それでもまだサムスンで動作しています)。 mediaOverlayビューが長く押すとウィンドウマネージャに追加されたビューのドラッグアンドドロップが機能しない
mediaOverlay = new MediaOverlayView(this, getLayoutResource());
mediaOverlay.setOnClickListeners(this);
overlayDropView = new OverlayDropView(this);
overlayDropView.setVisibility(View.INVISIBLE);
windowManager.addView(overlayDropView, new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
));
windowManager.addView(mediaOverlay, layoutParams);
、それはドラッグを開始し、overlayDropViewを示しています:
私は、オーバーレイサービス開始(両方のビューはレイアウトviewgroupsを拡張する)ときに私はウィンドウマネージャに追加する二つのビューを持っていますoverlayDropView.setVisibility(View.VISIBLE);
if(Build.VERSION.SDK_INT < 24) {
//noinspection deprecation
mediaOverlay.startDrag(null, new View.DragShadowBuilder(mediaOverlay), null, 0);
}
else {
mediaOverlay.startDragAndDrop(null, new View.DragShadowBuilder(mediaOverlay), null, 0);
}
私はそれのコンストラクタでoverlayDropViewのドラッグリスナーを設定します。
setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
final int action = event.getAction();
Log.d("Overlay", Integer.toString(action));
if (event.getAction() == DragEvent.ACTION_DROP) {
Log.d("Overlay", "is dropped");
}
return true;
}
});
何もoverlayViewがoverlayDropにドロップされたときに、それから来る終わるん表示します。私は明白な何かを欠いていますか
ありがとうございました。