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アプリで以下のようなレイアウトを組む方法です。 weightSumを使う 上、中央、下のパーツに分けて、上下のパーツは固定、中央のパーツはスクロール可能にします。 最初にLinearLa…続きを読む

Androidアプリを実機で確認する

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

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

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

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

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

Androidアプリ:ボタンやEditTextを角丸にする

Android StudioでボタンやEditTextを配置して、角丸にします。 角丸や色などを指定する場合には、それ専用のxmlファイルを別途用意し、読み込ませるようにします。 ボタンの背景色と角丸…続きを読む

Androidアプリ:ClassNotFoundExceptionエラー

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

Androidアプリ:ボタンやEditTextに背景色・枠線をつける

Android Studioで、ボタンやEditTextに背景色や枠線をつける方法です。 コントロールの見た目の設定をするには、別途専用のxmlファイルを生成して、そこに書いた設定を読み込むようにしま…続きを読む

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

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

Androidアプリ:AndroidXに対応する

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

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…続きを読む