Skip to content

Instantly share code, notes, and snippets.

@Nunocky
Nunocky / SavableMutableSaveStateFlow.kt
Created June 22, 2023 05:43
SavedStateHandleで値の保存と復元が可能な MutableStateFlow
// from https://medium.com/mobile-app-development-publication/saving-stateflow-state-in-viewmodel-2ee9ed9b1a83
class SavableMutableSaveStateFlow<T>(
private val savedStateHandle: SavedStateHandle,
private val key: String,
defaultValue: T
) {
private val _state: MutableStateFlow<T> =
MutableStateFlow(
savedStateHandle.get<T>(key) ?: defaultValue)
@Nunocky
Nunocky / MainViewModel.kt
Last active June 22, 2023 07:16
Android ViewModellのテスト。 savedStateHandle で値の保存と復元が行われることを確かめる。
package com.example.myapplication
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

Person

android studioのアプリケーション開発についての質問です。 一つのプロジェクトの中でアプリケーションとカスタムビューの開発を別モジュールで行おうとするとき、アプリケーションモジュールとカスタムビューモジュールで共通のThemeを使用することはできますか?

ChatGPT

はい、アプリケーションモジュールとカスタムビューモジュールで共通のThemeを使用することができます。そのためには、以下の手順に従って設定を行ってください。

  1. まず、プロジェクトレベルのbuild.gradleファイルに、共通のThemeを定義するリソースを含む新しいAndroidライブラリモジュールを追加します。
include ':app', ':customviewmodule', ':common'

Person:

  • android jetpack composeの質問です。 Glideを用いて画像を表示する Compose関数の プレビューを作ることはできますか?

ChatGPT:

  • はい、Jetpack ComposeでGlideを使用して画像を表示し、プレビューを作成することができます。ただし、@Previewアノテーションを使用したプレビューでは、実際の画像は表示されず、代わりにデフォルトの画像が表示されます。これは、プレビュー時にリモート画像をダウンロードできないためです。

以下の例では、Glideを使って画像をロードし、表示する GlideImage コンポーザブル関数を作成します。

Person:

  • Android Jetpack Composeの質問です HorizontalPagerに連動するドットインジケータの実装例を教えて下さい。

ChatGPT:

  • Jetpack Composeを使用して、HorizontalPagerに連動するドットインジケータを実装する方法を以下に示します。この例では、accompanist-pagerライブラリを使用しています。まず、依存関係をGradleファイルに追加してください。

Person

android jetpack composeの質問です。

Composeが画面に表示されている間だけ実行されるコルーチンの実装例を教えて下さい

ChatGPT

Jetpack Composeで、画面に表示されている間だけコルーチンを実行するには、LaunchedEffectDisposableEffect を使います。LaunchedEffect は、Composableが表示されたときにコルーチンを開始し、DisposableEffect は、Composableが画面から削除されるときにコルーチンをキャンセルします。

以下に実装例を示します:

Person

Androidプログラミングの質問です。以下のコードが何をしているか説明してください。

package com.example.yesno.scene.main

import android.app.Application
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
@Nunocky
Nunocky / gist:f968c43219a48e29f7ae719f0afcb262
Last active March 22, 2023 05:26
Jenkins + gitbucketが動作する docker環境の構築

Person:

docker-composeファイルを作成してください。 jenkins, git, gitbucketを内包するものとします。各コンテナのファイルはホストに永続化してください。

ChatGPT:

以下に、jenkins、git、gitbucketを内包するdocker-composeファイルを示します。各コンテナのデータはホストに永続化されます。

@Nunocky
Nunocky / docker-compose.yml
Created March 18, 2023 21:11
git + gitbucket + jenkins
version: "3.9"
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
ports:
- "8080:8080"
- "50000:50000"
volumes:
@Nunocky
Nunocky / PreferenceDataStoreComposables.kt
Created November 14, 2022 12:37
Jetpack DataStore + Compose
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment