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アプリをAndroid Studioで開発した際に、実際のスマホの画面で動作確認する方法です。 スマホの設定 以下はArrows FX F-02Hの設定方法です(開発者向けオプションを表…続きを読む

Androidアプリ:画面の高さと幅を取得する

Andoroidで、画面の高さと幅を取得する方法です。 MainActivity.java Android端末の画面サイズ(高さと幅)を表示します。 public class QuestionActi…続きを読む

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

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

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

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

Androidアプリ:ClassNotFoundExceptionエラー

Google Play Consoleのクラッシュ報告で、「ClassNotFoundException(ac.loadClass)」というログが表示されていたので、調べました。 恐らくAdmobのS…続きを読む

Androidアプリ:Class ‘Anonymous class derived from OnItemClickListener’…のエラー

Android Studioで開発中に、ListViewを使っていて以下のようなエラーメッセージが出た場合の理由です。 Class ‘Anonymous class derived from OnIt…続きを読む

Androidアプリ:数値型のViewの値がNullか0以下かを判定する

Android Studioで数値型のEditTextのViewを配置して、値を取得した場合に、その値がNull値(空)もしくは0以下であるか否かを判定する方法です。 Null判定にlength()を…続きを読む

Androidアプリ:ボタンを押すとメッセージが入れ替わる

Android StudioでAndroidアプリを試作します。 今回は「ボタンを1回押すとテキストの内容が変わり、もう1回押すと元に戻る」というだけのアプリをつくります。 プロジェクトの生成 And…続きを読む

Androidアプリ:クリックイベントとロングクリックイベントを取得する

Androidアプリで、クリックイベントとロングクリックイベントの2つを取得して処理する方法です。 OnClickListenerとOnLongClickListenerを併記 public clas…続きを読む

Androidアプリ:ボタンの仕様を1つのxmlファイルにまとめる

Android Studioで、ボタンなどの色や形の指定をする際、1つのxmlファイルで、ボタンを押したときと押していないときの状態を指定する方法です。 xmlファイルの指定 Android Stud…続きを読む