Androidアプリ:画面をタップしたら文字を入れ替える
画面をタップしたら文字を入れ替えるアプリをつくります。
今回はタッチイベントを取得する方法を調べました。
ここではレイアウト定義ファイルを「activity_main.xml」、
プログラムファイルを「MainActivity.java」とします。
部品の配置

「activity_main.xml」を「Design」タブで開き、Palletから「TextView」を1つドラッグします。
TextViewのIDを「textView」にして、画面の中央に表示するため、「Center Horizontally」と「Center Vertically」を指定します。
ソースコード

今回は、TextViewを扱うのと同時に、タッチイベントも扱います。
そのため、最初にimport文で、以下の2文を追加します。
import android.view.MotionEvent;
import android.widget.TextView;
なお、import文は、TextViewやMotionEventを入力した際に、Altキー+Enterを押すと自動的に挿入されます。
後は、public class MainActivity extends AppCompatActivity {}内にコードを書いていきます。
まず変数を先に設定しておきます。
String str;
String str2;
private TextView textView;
strは後述しますが、タップされた後に表示させる、「Touched!」という文字列を格納します。
str2は、現在画面に表示されている文字列を取得し格納します。
textViewは、画面上のテキストへの参照です。
public boolean onTouchEvent(MotionEvent event){
TextView textView = (TextView)findViewById(R.id.textView);
String tv = textView.getText().toString();
str=”Touched!”;
if (tv == str){
str2=”UnTouched…”;
}
else{
str2=str;
}
switch (event.getAction()){
case MotionEvent.ACTION_UP:
textView.setText(str2);
}
return false;
}
public boolean onTouchEvent(MotionEvent event){}
とは、boolean型(ブーリアン型)を返すという意味です。
boolean型とは、True又はFalseのいずれかの値を返す型になります。
TextView textView = (TextView)findViewById(R.id.textView);
では、画面上のtextViewへの参照を設定しています。
String tv = textView.getText().toString();
では、tvにtextViewに書かれている内容を文字列として格納しています。
if (tv == str){
str2=”UnTouched…”;
}
else{
str2=str;
}
では、textViewの内容が「Touched!」であれば、str2の内容を「Untouched…」に変更します。
そうでなければ「Touched!」にします。
switch (event.getAction()){
case MotionEvent.ACTION_UP:
textView.setText(str2);
}
では、タッチイベントのうち、タッチした指が上がったときに発生するイベントを指定しています。
タッチイベントにはこのほか、触っている時に発生するものやタッチしたまま移動したときに発生するものなど、様々なものがありますが、今回はタッチした指が上がったとき以外のイベントは不要なので書いていません。
return false;
boolean型は必ずtrueかfalseで値を戻さなければなりません。
実際の動作

最初は「TextView」と表示されています。
画面をタップすると…

「Touched!」に変わります。
さらにタップすると…

「UnTouched…」に変わります。
以降はタップするごとに「Touched」と「UnTouched」を繰り返します。
関連記事