Android開発爆笑記

レセプターのソフト&ハード開発備忘録

ImageViewでGifアニメーションを表示 2021.09現在

ImageViewでGifアニメーションを表示は、デフォルトでは出来なかった。

「画像ライブラリGlide」を使うと華麗、綺麗、簡単にImageViewにGifを表示できるとあったので備忘録

 

gradle(:app)にライブラリインポートを2行追加

implementation 'com.github.bumptech.glide:glide:4.11.0'

annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

 

◆gifアニメのファイルを格納

rawフォルダを作る

res/rawにファイルをコピーして格納

 

◆ImageViewをレイアウト.xmlに準備

 <ImageView
            android:id="@+id/gifanime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

 

◆Activityで指定

ImageView imageView = (ImageView) findViewById(R.id.gifanime);
Glide.with(this).load(R.raw.ファイル名).into(imageView);

 

実行すると表示でアニメしていた。

f:id:receptorinc:20210902172558g:plain

Gifは引用しないでね

 

firebase realtime database の ルール

フルアクセス可能ユーザと自身範囲のみアクセス可能ユーザのルール作成

当然データ構造は考慮が必要。

ルール部

{
  "rules": {
  // admin
    ".read": "auth.token.email == 'adminmail@gmail.com'", // メールアドレス指定可能
    ".write": "auth.token.email == 'adminmail@gmail.com'", // メールアドレス指定可能
  // user
    "usernode": {
      "$uid": {
        ".read": "$uid == auth.uid",
        ".write": "$uid == auth.uid"
      }
    }
  }
}

データ部

{

  "param1" : "value"
  "usernode" : {
    "LuqVBertyuidfghjkghjkxc0tG096zYy1" : {
      "item" : "1"
    }
  }
}

備忘録用 「===」厳密等価演算式がまだ使いこなせていない。

Firebase の BOM が理解できるまではあると便利なのかな?

classpath 'com.google.gms:google-services:4.3.3'との組み合わせ

Artifacts released on maven.google.com (出典:Google)

Firebase real time databaseのデータベースの考え方

仮にRDB上で1つのデータベースに2つのテーブルがあるというイメージは

table1

+-----+-----+-----+-----+

|Item1|  A  |  B  |  C  |

+-----+-----+-----+-----+

|Item2|  D  |  E  |  F  |

+-----+-----+-----+-----+

table2

+-----+-----+-----+

|ItemA|  1  |  2  |

+-----+-----+-----+

|ItemB|  3  |  4  |

+-----+-----+-----+

|ItemC|  5  |  6  |

+-----+-----+-----+

がfirebaseだと以下のような表現1つのプロジェクトに2つのデータ

{

    table1:{

        item1:{

             field1:A,

             field2:B,

             field3:C,

        }

        item2:{

             field1:D,

             field2:E,

             field3:F,

        }

    }

    table2:{

        itemA:{

             field1:1,

             field2:2,

        }

        itemB:{

             field1:3,

             field2:4,

        }

        itemC:{

             field1:5,

             field2:6

        }

    }

}

※備忘録用

Firebaseのreal time databaseにデータの書き込みとリスナー読み込みをする

概念は後で説明。

行った事の箇条書き

Googleのサービス一覧からデベロッパー向けを開く

    < developer.google.com/products  >からFirebaseを選ぶ。

・右上の「コンソールへ移動」をクリック

 

【プロジェクトを作成】

・「プロジェクトを追加」をクリックして

    -プロジェクト名を英数文字(スペース可)で入力し[続行]を押す

    -Google アナリティクスは分からなかったので「このプロジェクトで Google アナリティクスを有効にする」は無効にして[プロジェクト作成]を押す→[続行]を押す

    -プロジェクト概要で開始するアプリでAndroidをクリックする

    -・ここでAndroidStudioでStartNewProjectでアプリ作成->EmptyActivity->Name入力+Java+☑UseAndroidx.*->[Finish]を押す

    -「Android アプリに Firebase を追加」画面になりAndroidパッケージにパッケージ名を入れて後は省略して[アプリを登録]を押す

    -「google-services.json」をダウンロードしてAndroid開発の「Android Studio」の左上「Project」にして「/app/」フォルダにカット&ペーストする、[次へ]を押す

    -AndroidStudioでFirebase SDK の追加を<project>/build.gradleは「classpath 'com.google.gms:google-services:4.3.3'」と<app-module>/build.gradleは「apply plugin: 'com.google.gms.google-services'」「implementation 'com.google.firebase:firebase-database:19.1.0'」をする

    -[コンソールに進む]を押す。

    ・AndroidStudioのAndroidManifest.xmlに<uses-permission android:name="android.permission.INTERNET"/>を追加する

https://firebase.google.com/docs/database/android/start?authuser=0 からMainActivity.javaをコピーして内容を自分のアプリに張り付ける

 

【Real Time Databaseを作成】

・Firebaseコンソールの左から「database」をクリックする

・「または Realtime Database を選択」から[データベースを作成]を押す

・「テストモードで開始」を選び[有効にする]を押す

 

ここまでで一連は出来て実験できました。

※備忘録用

com.google.firebase:firebase-coreは不要になった。

Android 端末の画面Pixサイズ取得

画面のPix数を取得
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
Point size =
new Point();
disp.getSize(size);
Log.d("Width=", String.valueOf(size.x));
Log.d("Height=", String.valueOf(size.y));

 

Pix数で設計している際のテキストフォントサイズの指定方法
TextView tv = (TextView) findViewById(R.id.textView);
tv.setTextSize(COMPLEX_UNIT_PX,float値);