言いたいことはそれだけか

KotlinとかAndroidとかが好きです。調べたことをメモします。٩( 'ω' )و

Android

ConstraintLayout 2.0でFlexboxLayoutとGridLayoutを代用する

はじめに ConstraintLayout 2.0から導入された Flow を使ってFlexboxLayoutやGridLayoutと同じようなことができるようになる。 androidstudio.googleblog.com developer.android.com こんな感じでできた。 (上がFlexboxLayoutっぽいやつ、下がGridLayoutっ…

Androidのdark theme

Androidのdark themeをさわってみたのでメモを残す。 Dark themeとは? 公式documentはこちら developer.android.com 電池の節約だったり、low visionなuser向けにより良いUIを提供することを目的に、黒背景のthemeがAndroid Q からサポートされた。 アプリ…

Activity Shared Element TransitionでActivityが多重起動されるとAnimationがおかしくなる

はじめに Activity Shared Element TransitionでActivityが多重起動されるとAnimationがおかしくなる現象を見つけて面白かったので調べてみた。 具体的に まずは下記のgifを見てほしい。リストアイテム押下時にわざと1秒のdelayを入れてstartActivity()して…

AppBarLayoutを使う時にlayout_behaviorをFragmentに持たせるとviewが重ねて表示される

困った問題に出会ったのでメモ。 AppBarLayoutがActivityにいて、layout_behaviorつけたscrollableなviewがFragmentにいる場合、AppBarLayoutはちゃんと動くんだけど、scrollするviewの方がAppBarLayoutと同じ高さからlayoutされるので隠れてしまう…みんな同…

Kotlin Bytecodeを読みたいけど、何から勉強したらいいかわからないあなたへ。ASMのドキュメントを読みましょう。

はじめに このblog postは半年以上下書き放置していて自分の中では旬がすぎた話題ではありますが、最近Android系日本語技術podcastであるdex.fmのep.66でbytecodeが話題になったので、勿体無い精神で公開します :pray: それではどうぞ。 Kotlin書いていると…

TabItemをxml layout fileに記述してもview hierarchyからfindViewById()できない理由

TabItem、xml layout fileに書いててもViewHierarchyに追加されないの知らなくて昨日すごく時間を無駄にしたhttps://t.co/hc8WyqfHV2— むーむー/Atsuko FUKUI (@muumuumuumuu) January 31, 2019 Tweetにリンクを貼っている通り、公式ドキュメントによると Ta…

TabLayoutでいい感じにアイコンをつけたい時のメモ

ViewPagerとかと併用してTabLayoutを使う場合に、特定のタブにアイコンを表示する時にどうすればいいかなーという時のメモ。1 今のところは Tab#setCustomView() でcustome layout resourceをセットするのが大体のケースにおいて現実解となりそう。 また、こ…

便利なTextInputLayoutとその内部実装

はじめに Material Designにいつの間にか入っていたTextInputLayoutが便利なのでメモを残す。 TextInputLayout とは 公式ドキュメント によると、TextInputLayout とは「テキストを入力する時にhintを隠す代わりにfloating labelを表示するEditTextをラップ…

RecyclerView in RecyclerViewだとAppBarLayoutがスクロールしないことがある

Nested Scroll(RecyclerView in RecyclerView)とAppBarの組み合わせでうまくいかないことがあったのでメモします。 前提 RecyclerViewが入れ子になってNested Scrollする画面で、 Parent RecyclerViewはvertical scroll Child RecyclerViewはhorizontal scro…

selectableItemBackgroundはBackgroundにセットしないと意図した挙動にならない話

タイトルが意味わからないことになっている はじめに AndroidはAPI Level 21 (Android 5.0 / Lollipop) からRipple Effectがサポートされ、これによりより良いタッチフィードバックをユーザに提供できることができる。ボタンなど、「もともとタップが想定さ…

Shared element transitionでリストの要素を並び替える

やりたいこと Fragmentを切り替えてReordering(要素を並び替え)する shared element transition の記事を見て楽しそうだったからやってみた。 medium.com 全く同じことをやっても楽しくないので、Fragment <-> Activityでやってみる。 できた いきなりだけ…

Android Frameworkのコードにbreakpointを止めるメモ

Android開発をしていると、Frameworkがどういう挙動をしているか調べたくなる時がある。そういう時はFrameworkのコードにbreakpointを置くんだけど、止まってくれたり止まらなかったりすることがあるので困っていた。 完全に理解した!と言いたいけど、ViewR…

StateListAnimatorを使ってXMLだけでAnimationをつける

こちらの記事を読んで「<selector> の中にobject animator埋め込めるの知らなかった!!すげー!!!!」となったので遊んでみたメモ。 android.jlelse.eu StateListAnimator AndroidにはStateListAnimatorというクラスがあって、Viewのdrawable stateによってAnimatio</selector>…

kotlin.concurrent.threadは新規threadが作成されるけどcurrent threadのgroupで動く

[2018.7.15 ご指摘いただき記事の最後に追記しました] あらまし 先日おもしろいTweetを見つけたのでちょっと調べてみたメモ。 別ActivityでUI操作の必要なマルチスレッド処理をしたいとき、runOnUiThreadを使わないとMarshmallowならクラッシュするけど、Ore…

RxTextView#textChanges()でdistinctUntilChangedする時にeventが流れない時がある

みんな大好きRxBinding1 ですが、ちょっとハマることがあったのでメモ。 RxTextView#textChanges() で EditText の入力イベントを監視する。その時に重複した入力をdistinctUntilChanged()で削ろうとしたら以降何もeventが流れない現象に遭遇した。 RxTextVi…

TransitionのShowcaseアプリを作って公開しました

はじめに 先日droid girls meetupに参加し、Animationのハンズオンを楽しんできた。 GoogleのオフィスでGooglerの方(Support libraryを作っている方)が講師というなんとも贅沢な回だった。 droidgirls.connpass.com そういえば業務でがっつりtransitionを…

Toolbarにセットしたheightが無視されるケース

まずはこちらのコード、どのような表示になるか考えながら読んでみてください。 (タイトルでネタバレしている気がするけど気にしないで!)

NestedScrollViewの中のRecyclerViewを配置すると要素全てメモリ上にallocateされて困った話

長いタイトルが全てを表していて、NestedScrollViewの中にRecyclerViewを配置した場合、要素全てメモリ上にallocateされて困った話。そのまんま。 こんな感じでNestedScrollViewの中にRecyclerViewを置いた場合 <NestedScrollView> <RelativeLayout> .... <RecyclerView /> </RelativeLayout> </NestedScrollView> 例えば30個RecyclerViewが表示すべ…

DroidKaigi公式アプリにRTL周りのPull Request出した時にやったことまとめ

DroidKaigiお疲れ様でした!公式アプリでRTL周りのPull Requestを出したので何をしたのか備忘録のメモを残しておきます。 Issue github.com Pull Request github.com やったこと Left / Right をgrepして適切なものに置き換え ConstraintLayout周りとかLint…

AndroidのMVIについて勉強した時のメモ

AndroidのMVIについて勉強した時のメモです。自分用のメモなので雑です。 MVIとは 「MVCを元にして、jsのreduxやreactの思想を取り入れた何か」のようなもの。リアクティブで関数型プログラミングを採用している。 MVCだとViewを操作するのがControllerかも…

[海外対応] AndroidのLocale周りまとめ [多言語対応]

はじめに 複数の国や地域、あるいは言語に対応する場合に避けられないMulti Locale対応ですが、Android Frameworkのバージョンによってできること・しなくてはならないことが変わって来ます。 各APIでの大きな変化を時系列でまとめてご紹介します。 また、実…

Kotlin 1.1以降をAndroidで安全に使いたかった話

はじめに この記事は「Kotlin 1.1以降をAndroidで安全に使いたかった話」です。本当は会社のAdvent Calendar向けに書くはずだったのですが、色々あってお蔵入りになったのでこちらで供養。 ちなみにこれはボツネタ第2弾で、第1弾はこちら。 muumuutech.haten…

小規模もくもく会運営についての知見とポエム

この記事は勉強会運営 Advent Calendar 2017の19日目の記事です adventar.org はじめに 会社でもくもく会を運営しているが今年はついに20回を超え、ありがたいことに他社からも「御社のもくもく会を パクリ 参考にしてうちでももくもく会はじめました 」と言…

Custom View を作るときに気をつけること

Custom Viewの背景画像を変えたいときにちょっとやらかしたのでメモる٩( 'ω' )و 何が起こったか Custom Viewを作って動的に背景画像を変えようとして切り替わらない(ように見える)現象に遭遇。 レイアウトファイルで指定していた背景をコードから動的に切…

KotlinとReduxをAndroidアプリに導入した話をしました。

先日自社のエンジニアイベントで「KotlinとReduxをAndroidに導入したら」という話をしてきました。質疑応答や懇親会でいろんな質問をいただいたのでここに残しておきます。 イベント 登壇したのはこちらのイベント。アプリだけでなくバックエンドやインフラ…

localeに繁體中文を設定してもvalues-zhが選択されない

今回もマニアックなトピックです。 タイトルの通り。ちょっと困ったので調べて見た。 何が起こったか 下記どちらかに当てはまる場合、 端末で繁體中文を言語設定で選択している アプリ独自のlocale設定でzh_HK(中国語-香港)を設定している res 下の values…

Kotlin初心者から抜け出したい?それなら、

Land of Lispを読んだらどうだろう。 (すみません。9割ネタです。) Land of Lisp作者: M.D. ConradBarski,Conrad Barski,川合史朗出版社/メーカー: オライリージャパン発売日: 2013/02/23メディア: 大型本購入: 1人 クリック: 18回この商品を含むブログ (1…

Dexopenerを使ってKotlinで書かれたfinalなclassをmockする話

[2017.7.27 追記あり] 4ヶ月以上前の話の続きです。下書きにずっと眠っていたのですが、諸事情により公開が遅くなってしまった… こちらの記事でAndroidでKotlinのmockつらい〜〜〜 って話をしたら、 muumuutech.hatenablog.com id:tmurakami さんがコメント…

Intentを使って複数枚画像を取得するときのメモ

Intentを使ってPhotoとかいい感じの(=ユーザが選択した)アプリから画像を選択したいときに、1枚なのか複数枚なのかで色々違うのでメモ。 複数枚画像を選択する場合 選択させるアプリを起動するとき ポイントは Intent.EXTRA_ALLOW_MULTIPLE のextraをtrue…

MediaStoreのThumbnailsの罠

先日参加したCA.apk #2 で前川さんが発表されていた「やさしい画像ギャラリー改善tips」がいい感じだったので、試してみた結果と気になった部分のメモ書きです。 発表の概要 画像ギャラリーを作る時に、MediaStore.Images.Media.EXTERNAL_CONTENT_URI だと画…