【Jetpack Compose】Accompanist から切り替えた Material の PullRefreshIndicator が消えない件

こんな記事を見つけまして。

まだ @ExperimentalMaterialApi になりますが Pull-to-refresh は Accompanist から卒業し、Material Design ライブラリーに追加されました。でも、Accompanist の SwipeRefreshLayout と異なって全体のレイアウトではなくインジケーターだけが追加されました。


var refreshing by remember { mutableStateOf(false) }

val state = rememberPullRefreshState(
    refreshing = refreshing,
    onRefresh = { .. }
)

Box(modifier = Modifier.pullRefresh(state = state)) {
    LazyColumn {
        if (!refreshing) {
            items(..)
        }
    }

    PullRefreshIndicator(
        refreshing = refreshing, 
        state = state, 
        modifier = Modifier.align(Alignment.TopCenter)
    )
}

👉 Jetpack Compose v1.3.0に気になったAPIのまとめ - Goodpatch Tech Blog hatena-bookmark

便利そうなので使ってみました。

 

■ Indicator が消えない!

公式のサンプルを見ながら、


import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState

val refreshScope = rememberCoroutineScope()
var refreshing by remember { mutableStateOf(false) }
var itemCount by remember { mutableStateOf(15) }

fun refresh() = refreshScope.launch {
    refreshing = true
    delay(1500)
    itemCount += 5
    refreshing = false
}

val state = rememberPullRefreshState(refreshing, ::refresh)

Box(Modifier.pullRefresh(state)) {
    LazyColumn(Modifier.fillMaxSize()) {
        if (!refreshing) {
            items(itemCount) {
                ListItem { Text(text = "Item ${itemCount - it}") }
            }
        }
    }

    PullRefreshIndicator(refreshing, state, Modifier.align(Alignment.TopCenter))
}

👉 androidx.compose.material.pullrefresh  |  Android Developers hatena-bookmark

実装してみましたが、引っ張る前から、表示されたまま消えない!! (少し読み込みが長いです。)

PullRefreshIndicator-scale=false

読み込み終了後、Box の範囲からは外れていくんだけども、消えない。

何なんすか。

バグ?

👉 PullRefresh: indicator left visible on screen [248274004] - Visible to Public - Issue Tracker hatena-bookmark

 

■ 対応策

PullRefreshIndicator の scale = true にします。

The default indicator for Compose pull-to-refresh, based on Android's SwipeRefreshLayout.

👉 androidx.compose.material.pullrefresh  |  Android Developers hatena-bookmark

以下のように追加します。


PullRefreshIndicator(
  refreshing = refreshing,
  state = state,
  modifier = Modifier.align(Alignment.TopCenter),
  scale = true // *
)

結果。

PullRefreshIndicator-scale=true

消えました。とりあえず。

上下に移動しながら 拡大 → 縮小 して、消えてるように見えます。

この Indicator て、確か以前は、scale してましたよね?

👉 Jetpack Compose Accompanist — An FAQ. | by Ben Trengrove | Android Developers | Medium hatena-bookmark


macOS Ventura で iPhone を WEBカメラ として使う

iPhone 側で「連携カメラ」をONにしておくと、

Mac側では、カメラを使用したアプリからの選択切り替えができるようになります。

また、以下からも外付けカメラとして切り替えできます。

まずは、試してみましょう!!

 

■ iPhone カメラへの切り替え

👉 Macで外付けカメラを使用する - Apple サポート (日本) hatena-bookmark


設定

 ↓

アクセシビリティ

 ↓

ポインタコントロール

 ↓

ヘッドポインタ の右のオプション(i)

 ↓

カメラオプション

 ↓

カメラ

 ↓

iPhone のカメラを選択




 

■ デスクビュー アプリの起動

Finder から


システム

 ↓

ライブラリ

 ↓

CoreServices

 ↓

Applications

 ↓

デスクビュー

面倒なので、Spotlight から起動すると早いです。

👉 MacのSpotlightで検索する - Apple サポート (日本) hatena-bookmark

👉 AndroidスマホをWEBカメラとして使う【macOS】 hatena-bookmark


最新 Google Pixel 7/7 Pro 端末をお得に購入するための3つのこと。

Google Pixel 7/7 PRO

👉 Google ストアでは Google のデバイスやアクセサリをご購入いただけます hatena-bookmark

世間のスマホの新機種購入意欲は薄れています。

それに対してのキャンペーンでしょう。

 

■ Google ストアクレジット

購入時にクレジットがもらえる
Pixel 7
→ 21000円分

 

■ 下取り

Pixel 7
→ Pixel 4/4a が最も高価に買取ってもらえる。
→ iPhone 11/ 11 Pro が最も高価に買取ってもらえる。(iPhone からの乗り換えは割高)

 

■ メール配信限定割引

プロモーションコードで割引
Pixel 7
→ 10 %引き

 

■ まとめ

購入することがお得な人は、

- Google ストアに購入しようとしていたものがある。
→ Google ストアクレジットで購入。

👉 Google ストア クレジットを使用する - Google ストア ヘルプ hatena-bookmark

- Pixel 4/4 XL, iPhone 11/11 Pro からの乗り換え
→ 下取り高価格。

というところでしょうか。

今後のことも考えて、

「Google ストアの最新ニュースやクーポンの配信」
は登録しておいたほうがいいでしょう。


軽くて小さくて新しいスマホを買いたい iPhone14 vs Pixel7

悩む。

こまごまとした仕様の差はどうでもいい。

カメラもあんまり気にしない。

サイズと重さと価格。

 

■ iPhone14 128GB

x 価格 119,800円
o 重量 172g
o サイズ 146.7x71.5x7.8
x ディスプレイ 6.1インチ
x バッテリー 3,279mAh, MagSafeおよびQiワイヤレス充電

iPhone14
👉 iPhone 14とiPhone 14 Plus - Apple(日本) hatena-bookmark

 

■ Pixel7 128GB

o 価格 82,500円
x 重量 197g
x サイズ 155.6x73.2x8.7
o ディスプレイ 6.3インチ
o バッテリー 4,355 mAh, 急速ワイヤレス充電

Pixel7

👉 Google Pixel 7 の技術仕様 - Google ストア hatena-bookmark

 

■ まとめ

10万円を超えるスマホとかパソコンユーザーはいらなくね?

「iPhone は重い」というイメージが崩れた。

もう少し考えることにします。


【macOS】横長ワイドなディスプレイで使いたいウィンドウマネージャーを探す

Split View で Mac の App を 2 つ並べて表示する
👉 Split View で Mac の App を 2 つ並べて表示する - Apple サポート (日本) hatena-bookmark

macOS 純正「Split View」は、なんとなくツラかったので、

いくつか入れてみました、無料のウィンドウマネージャー。

やりたかったのは、

「すばやくウィンドウを左右半分の大きさにして配置する」

ということです。

 

ShiftIt

インストールするといいかんじです。

Monterey でも問題なく動きます。

ShiftIt Managing window size and position in OSX
👉 fikovnik/ShiftIt: Managing windows size and position in OSX hatena-bookmark

しかし、リポジトリを見ると数年更新されていません。

This project is looking for a new maintainer. Until that transition is completed, there will likely not be further development on this project.

This project is looking for a new maintainer. Until that transition is completed, there will likely not be further development on this project.

今後、更新はされないかもしれない雰囲気です。

 

Spectacle

Move and resize windows with ease
👉 Spectacle hatena-bookmark
👉 eczarny/spectacle: Spectacle allows you to organize your windows without using a mouse. hatena-bookmark

しかし、このアプリもメンテナンス終了っぽいです。

This project is not being actively maintained.

代替として「Rectangle」なるものを推奨しています。

Spectacle users have recommended Rectangle as an open source alternative.

 

Rectangle

Rectangle: Move and resize windows on macOS with keyboard shortcuts and snap areas

当分これを使ってみることにします。

リポジトリも元気ですし、フォークやスターの数も多いです。

Rectangle: Move and resize windows on macOS with keyboard shortcuts and snap areas

👉 rxhanson/Rectangle: Move and resize windows on macOS with keyboard shortcuts and snap areas hatena-bookmark

このアプリも他のウィンドウマネージャーアプリと同様、以下のように

アクセシビリティアプリケーションにMacへのアクセスを許可する

アクセスの許可が必要になります。

👉 アクセシビリティアプリケーションにMacへのアクセスを許可する - Apple サポート (日本) hatena-bookmark

👉 多窓ブラウザは vivaldi が最強 hatena-bookmark