android
ユーザーインターフェイスを作成して、画面上でcomponents
/widgets
を追加して移動させたい場合は、それらを選択してドラッグします。標準のAndroid apisを使用して画面上のコンポーネントを移動することはできますか?
これは標準のAndroid apisを使用して可能ですか?
android
ユーザーインターフェイスを作成して、画面上でcomponents
/widgets
を追加して移動させたい場合は、それらを選択してドラッグします。標準のAndroid apisを使用して画面上のコンポーネントを移動することはできますか?
これは標準のAndroid apisを使用して可能ですか?
はい。それはあなたが達成しようとしているものによって異なります。
それは標準APIを使用してを行うことができますが、この機能は標準APIの一部ではありません。つまり、あなたが書き込まない限り、widget.DragOverHere()
メソッドはありません。
しかし、そうするのはひどく複雑ではないと言われました。少なくとも、Viewのカスタムサブクラスを作成し、onDraw(Canvas c)
とonTouch(MotionEvent e)
という2つのメソッドを実装する必要があります。ラフスケッチ:
class MyView extends View {
int x, y; //the x-y coordinates of the icon (top-left corner)
Bitmap bitmap; //the icon you are dragging around
onDraw(Canvas c) {
canvas.drawBitmap(x, y, bitmap);
}
onTouch(MotionEvent e) {
switch(e.getAction()) {
case MotionEvent.ACTION_DOWN:
//maybe use a different bitmap to indicate 'selected'
break;
case MotionEvent.ACTION_MOVE:
x = (int)e.getX();
y = (int)e.getY();
break;
case MotionEvent.ACTION_UP:
//switch back to 'unselected' bitmap
break;
}
invalidate(); //redraw the view
}
}
ある程度まで。それはあなたにどの程度の自由度を与えたいかによって異なります。頭に浮かぶ1つの解決策は、あらかじめ定義されたセルを持つTableLayoutです。その後、ユーザーはコンポーネントをタップしてドラッグできます。コンポーネントをドラッグするときには、そのイメージをユーザーの指で描画したいだけですが、それらがリリースされると、ViewGroupの追加/削除メソッドを使用して、そのコンポーネントを前の親から削除して新しい親に追加します。
ビューをプログラムでシフトすることはできますが、私が見る限りでは、レイアウトをオンザフライで切り替えることは困難/不可能です。
私はこれを行っている方法は、絶対的なレイアウトを持っており、それがドラッグされると、次にだけ物体の位置を更新することです。あなたは自分でドラッグを実装する必要があります。ウィジェットが自然な順序(ボタンをドラッグできるようにするツールバー)の場合は、ツールバーの上部に絶対レイアウトを積み重ねることができます。ドラッグが開始されると、それを絶対レイアウトに追加し、終了すると、新しい位置に元のレイアウトに戻します。