Android 開発 キーボード イベント モバイル ミッキーマウス ケース
2022-02-17 21:37:25
MainAcitity.javaファイル
package com.example;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.appcompat.app;
public class MainActivity extends AppCompatActivity {
protected static final int STEP = 10;
private ImageView ivMickey;
private LinearLayout root;
private LinearLayout.LayoutParams layoutParams;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up the user interface using the layout resource file
setContentView(R.layout.activity_main);
//get the control instance by resource index
ivMickey = findViewById(R.id.ivMickey);
root = findViewById(R.id.root);
// set the root layout to be focusable
root.setFocusable(true);
//get the root layout to get the focus
root.requestFocus();
//get the layout parameters of the image control
layoutParams = (LinearLayout.LayoutParams) ivMickey.getLayoutParams();
//register the listener to the root layout
root.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
//modify the layout parameters of the image control according to the key
KEYCODE_DPAD_UP:// Press the upper arrow key
//Upper border collision detection
if (ivMickey.getTop() >= 10) {
layoutParams.topMargin = layoutParams.topMargin - STEP;
} else {
Toast.makeText(MainActivity.this, "Hit the top border", Toast.LENGTH_SHORT).show();
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:// Press the arrow key
if (ivMickey.getBottom() <=root.getHeight()) {
layoutParams.topMargin = layoutParams.topMargin + STEP;
} else {
Toast.makeText(MainActivity.this,"Hit the lower border",Toast.LENGTH_SHORT).show();
}
break;
KEYCODE_DPAD_LEFT:// Press the left arrow key
if (ivMickey.getLeft() >= 9) {
layoutParams.leftMargin = layoutParams.leftMargin - STEP;
}else {
Toast.makeText(MainActivity.this,"Hit the left border",Toast.LENGTH_SHORT).show();
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:// Press the right arrow key
if(ivMickey.getRight() <= root.getWidth()) {
layoutParams.leftMargin = layoutParams.leftMargin + STEP;
} else {
Toast.makeText(MainActivity.this,"Hit the right margin",Toast.LENGTH_SHORT).show();
}
break;
}
//reset the layout parameters of the image control
ivMickey.setLayoutParams(layoutParams);
return false;
}
});
}
}
activity_main.xml ファイル
<?xml version="1.0" encoding="utf-8"? >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root"
android:background="@drawable/background"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/ivMickey"
android:layout_width="100dp"
android:layout_height="100dp"
android:gravity="center"
android:src="@drawable/mickey"/>
</LinearLayout>
関連
-
Androidアップグレード/ブラシ戦略(GoogleネイティブシステムPixel)
-
Android Studioプロジェクトをインポートすると、無効なgradle jdkコンフィギュレーションが見つかったと報告される
-
エラーの解決方法 URIがandroid studioのxmlファイルに登録されていない。
-
テスト、Eclipseは "エラーが発生しました、詳細はエラーログを参照してください。 java.lang.NullPointerException" を報告します。
-
-bash : gradlew コマンドが見つかりません。
-
Android ビューの階層構造
-
Android studioでTextViewのフォントを変更する2つの方法(例:模造歌、公式スクリプト)。
-
AndroidManifest.xml ファイルが見つからない 解決策
-
Android.view.InflateException: バイナリ XML ファイルの行番号 0: クラス <unknown> を展開する際のエラー 解決方法
-
APKのインストール: 失敗 [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン