HOME技術AndroidAndroidアプリ:画面をタップしたら文字を入れ替える

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」を繰り返します。

関連記事

Androidアプリ:アダプティブアイコンに対応する

AndroidではOS 8.0からAdaptiveアイコン(アダプティブアイコン)というアイコンを用意する必要がでてきました。 これまでの通常のアイコン、ラウンドアイコンに加えて、アダプティブアイコン…続きを読む

Androidアプリ:ポリシー違反の警告への対応(APIレベル)

Google Play Console上で、アプリにポリシー違反の警告が表示されていました。 「お客様のアプリはGoogle Playデベロッパープログラムポリシーを遵守していないため、まもなく措置を…続きを読む

Androidアプリ:ボタンのテキストを変える

Androidでボタンのテキストをプログラム上で変える方法です。 MainActivity.java   Button button = findViewById(R.id.button);…続きを読む

Androidアプリ:Android StudioでデバッグしようとするとPlease select Android SDKと表示される

Android Studioを使っていて、動作確認するために実行(run)をすると、ADVが起動せず、「Error: Please select Android SDK」と表示されてしまった場合の復旧…続きを読む

Androidアプリ:ボタンやEditTextに余白(パディング)を設定する

Android StudioでボタンやEditTextに余白(パディング)を設定します。 余白の設定はレイアウトファイル(activity_main.xml)を編集します。 activity_main…続きを読む

Androidアプリ:アプリを更新する場合の設定

一度リリースしたAndroidアプリを更新してアップロードする場合には、必ずバージョンを更新しなければなりません。 今回はバージョンの更新方法について調べました。 build.gradleの修正 bu…続きを読む

Androidアプリ:ボタンの表示/非表示

Androidでボタンの表示/非表示をプログラム上からコントロールします。 MainActivity.java   Button button = findViewById(R.id.but…続きを読む

Androidアプリ:App is not indexable by Google Search;と表示される

Android Studioで、 App is not indexable by Google Search; consider adding at least one Activity with a…続きを読む

Androidアプリ:動画を再生する

Androidアプリで動画を再生する方法です。 読み込み時は最初の1コマ目をプレビューしている状態で静止しています。 MainActivity.java javaのソースには以下のように記します。 こ…続きを読む

Androidアプリ:Firebaseを利用したAdMobの実装方法

AndroidアプリでFirebaseを利用したAdMobの実装方法を調べました。 なお、FirebaseおよびAdMobには既にユーザ登録済みであることを想定しています。 未登録の場合は先に登録して…続きを読む