1

私はAndroidプログラミングが初めてです...ジェスチャ(具体的にはontouchlistener)を使用してレイアウトに追加された新しく作成されたimageviewを移動しようとしています..imageviewを追加することはできましたが、ontouchlistenerはACTION_DOWNまでしかキャッチしません..ここに私のコードがあります:

package com.calengine;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;

public class coba extends CALEngineActivity implements OnClickListener, OnTouchListener{

    private ImageView movableimage;
    private FrameLayout layout;
    private LayoutParams params;
    int status;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainform2);

        layout = (AbsoluteLayout) findViewById(R.id.absLayoutAction);
        status = 0;
            movableimage = new ImageView(this);
            movableimage.setImageResource(R.drawable.icon_launcher);
            layout.addView(movableimage);
            movableimage.setOnTouchListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        TextView txt = (TextView) findViewById(R.id.textView1);
        LayoutParams layoutParams = (LayoutParams) movableimage.getLayoutParams();
        switch(event.getAction())
        {
        case MotionEvent.ACTION_DOWN:   
            txt.setText("Created");
            break;
        case MotionEvent.ACTION_MOVE:
            txt.setText("Moving");
            int x_cord = (int)event.getRawX();
            int y_cord = (int)event.getRawY();

            layoutParams.leftMargins = x_cord - 25;
            layoutParams.topMargins = y_cord - 75;

            movableimage.setLayoutParams(layoutParams);
            break;
        case MotionEvent.ACTION_UP:
            txt.setText("Up");
            break;
        default:
            break;
        }
        return false;
    }
}

これらのイベントでは、テキストビューに対応するテキストが表示されると思います..しかし、「作成済み」のみが表示され、「移動中」または「上」は表示されません...画像も移動しません...それを修正する方法は?

4

2 に答える 2

1

onTouchメソッドでtrueを返す必要があります。

于 2012-06-06T09:50:35.327 に答える
1

リスナーから false を返すと、(通過する後続のイベントに関連する) 詳細情報が得られなくなると思います。true を返してみて、問題が解決するかどうかを確認してください。率直に言って、根本的に間違っているものは他に何も見当たりません (ただし、ここで行っていることを実行する * 正しい方法については長い講義が必要です。これには AbsoluteLayout は関係ありませんが、描画できる SurfaceView には関係ありません (あなたが望むものは何でも操作します...しかし、それは少し高度です。

ここからはかなり簡単なスタートです。任意のビューでタッチ イベントをキャプチャできることに注意してください。この例では、その機能を追加して、関連する座標に必要なものを描画します。物をドラッグする方法に関するチュートリアルを簡単に見つけることができます。 http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html

于 2012-06-06T09:53:25.910 に答える