Skip to content

Instantly share code, notes, and snippets.

@Nunocky
Nunocky / ExampleViewModel.kt
Last active June 25, 2023 01:41
ViewModelで実行されるコルーチンのテスト。 UIStateの変化を見る
package com.example.myapplication
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
@Nunocky
Nunocky / MainFragment.kt
Created June 25, 2023 00:57
Fragmentの値の保存と復元
package com.example.myapplication
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
@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ファイルを示します。各コンテナのデータはホストに永続化されます。