Translate

BTemplates.com

Powered by Blogger.

2018年2月16日金曜日

2018-02-16 到達点メモ


*Kotlinで開発しています

以下の二つのサイトを参考にして、インストールされているアプリ一覧を表示するようにする

参考サイト:端末にインストールされているアプリを一覧で取得してみる
参考サイト:ListViewに画像サムネイル付きテキストを表示してみる

原因がいまいちわかり切っていないのだが、
別ファイルでコンストラクタ付きのクラスをインポートできない時があった。
今回は一先ず、MainActivityのクラス内に書いて解決した

参考サイト:Kotlinでコンストラクタを書く
参考サイト:Kotlinでunresolved referenceが出ます。

あと、作成中に酷いレイアウト崩れが起きた。
原因は以下のように、理由は二つあり、一つは
ImageViewとTextViewの両方の大きさの設定がwrap_contentだったこと。
二つ目はImageViewとTextViewの両方にandroid:layout_weightを設定したからである

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/app_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@android:drawable/btn_star_big_on"
            android:layout_weight="1"
            tools:padding="2dp" />

        <TextView
            android:id="@+id/app_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="テスト" />
    </LinearLayout>

今回に限って言えば、アイコンの大きさはある程度固定でよいので、
ImageViewの大きさを固定にし、android:layout_weight="1"を削除した。

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/app_icon"
            android:layout_width="64dp"
            android:layout_height="64dp"
            app:srcCompat="@android:drawable/btn_star_big_on"
            tools:padding="2dp" />

        <TextView
            android:id="@+id/app_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="テスト" />
    </LinearLayout>

また、表示するアプリに関してもそのままやるとラベル名がcom.×××.◎◎◎という風になっているのでそれをうまい感じに排除したい。
そこで考えたのが、基本的に使うアプリはプレインストールされていてもアップデートされるので、プレインストールされているアプリの中でもアップデートされるアプリは排除の対象外にすれば行けるのではないかと思って以下のようにやりました
*ApplicationInfoの中にFLAG_UPDATED_SYSTEM_APPというプレインストールされているアプリでアップデートされたアプリというフラグがある


if ((appInfo.flags and ApplicationInfo.FLAG_SYSTEM) ==  ApplicationInfo.FLAG_SYSTEM){
       if ((appInfo.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) !=  ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) continue
}

そうすると以下のような感じになりました。



今日の目標は無事達成できたので、今日はここまで。



0 コメント:

コメントを投稿