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アプリ:ボタンやEditTextに余白(パディング)を設定する

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

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

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

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

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

Androidアプリ:ボタンをタップして別画面に遷移する

ボタンをタップしたら別画面に遷移させる方法です。 以下の例では、メイン画面の「ボタン」をクリックすると、サブ画面に移動し、サブ画面の「終了」ボタンを押すとメイン画面に戻ってきます。 メイン画面 act…続きを読む

Androidアプリ:入力された数値を足して表示する

2つのテキストボックスに入力した数値を受け取り、それぞれを足した結果を表示するアプリをつくります。 ここではレイアウト定義ファイルを「activity_main.xml」、 プログラムファイルを「Ma…続きを読む

Google広告でポリシー違反「句読点と記号」に対応する

モバイルアプリのGoogle広告のキャンペーンを設定しましたが、「ポリシー違反1件」と表示されました。 ポリシー違反「句読点と記号」 ポリシー違反の詳細を見ると、「句読点と記号」というヒントが表示され…続きを読む

Androidアプリ:AndroidXに対応する

2018年に、AndroidのSupportLibraryは、AndroidXに移行することが発表されました。 AndroidXとは Support Libraryとは簡単に言うと、Androidアプ…続きを読む

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

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

Androidアプリ:内部テスト版をリリースする

Androidアプリで完成したものをすぐに公開する前に、内部テスト版としてリリースして動作確認をする方法です。 内部テスト版リリース方法 Google Play Consoleにログインして、「すべて…続きを読む

Androidアプリ:ライブラリの更新とエラーの修正

Androidアプリを開発していて、Build.gradle(app)の、dependenciesの項目内でハイライト表示されたり、赤い下線が引かれたりすることがあります。 ハイライトはライブラリを更…続きを読む