###前提・実現したいこと
OnTouchでの座標の取得
###発生している問題・エラーメッセージ
下記のプログラムをjavaに直接レイアウトを書かずに実現したいです。
どうすればいいでしょうか
###該当のソースコード
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.widget.LinearLayout;
public class MainActivity extends Activity implements OnTouchListener {
float x1=0; float y1=0; float x2=0; float y2=0; float x3=0; float y3=0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // タイトルは無しで。 this.requestWindowFeature(Window.FEATURE_NO_TITLE); // レイアウトを作って設定 LinearLayout layout = new LinearLayout(this); this.setContentView(layout); // テキストボックス表示する // GLSurfaceViewを作る final SurfaceView surfaceView = new SurfaceView(this); surfaceView.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); surfaceView.setOnTouchListener(this); surfaceView.setBackgroundColor(Color.CYAN); layout.addView(surfaceView); } //////////////////////////////////////////////////////////// // タッチされたイベントが全部こっちにくる public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); x1=event.getX(); y1=event.getY(); break; case MotionEvent.ACTION_UP: Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); x2=event.getX(); y2=event.getY(); break; } if(x1>x2){ x3=x1-x2; }else{ x3=x2-x1; } if(y1>y2){ y3=y1-y2; }else{ y3=y2-y1; } Log.d("TouchEvent", "X:" +x3); Log.d("TouchEvent", "Y:" +y3); return true; }
}
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/22 09:58
2017/05/22 12:02
2017/05/22 13:01