Android のRecyclerViewで子要素を長押しして位置を変えるとか、スワイプして削除するとかって難しいのかなと思ってたのですが、シュッと出来ました。RecyclerView凄い。
参考にしたコードはこれです
書いたコードはこれ
仕事しているのはItemTouchHelperで、子要素に対してmoveだとかswipeだとかそういう動作が起きた時に何をさせるか書いてあげれば動いた。
やってみるまで、難しそうと勝手に思ってたけど、やってみたら全然そうでもなかった。
Android のRecyclerViewで子要素を長押しして位置を変えるとか、スワイプして削除するとかって難しいのかなと思ってたのですが、シュッと出来ました。RecyclerView凄い。
参考にしたコードはこれです
書いたコードはこれ
仕事しているのはItemTouchHelperで、子要素に対してmoveだとかswipeだとかそういう動作が起きた時に何をさせるか書いてあげれば動いた。
やってみるまで、難しそうと勝手に思ってたけど、やってみたら全然そうでもなかった。
Spotifyが好きです。
一応、音楽サービスは Apple Music、Amazon Music、Google Play Music、Line Music、AWAと良さそうのは一通り試してみたのですが、最終的にSpotifyに着地しました。ちなみに家族プランというプランに入っていて、1480円/月で課金しています。
Spotifyって音楽好きのためのサービスだなって思っていて。自分は音楽好きなので、ぴったりハマってるのかなと思います。
そんなSpotifyの好きなところを3つ紹介します。
1. 聴けば聴くほどレコメンドが優秀になる
毎週金曜日に「Release Radar」というのが配信されて、このプレイリストには最近配信された曲と、最近自分が聴いてる曲を学習したオススメの曲を良い感じに合わせて30曲提案してくれます。
30曲も提案されると、毎回大体2曲くらいは新しい発見があります。こんなアーティストいたんだ〜っていう。その発見が楽しい。だからどんどん使ってお気に入りしていく。自分仕様のオススメが提案される、みたいなループです。
2. 再生するまですごく早い
これは触ってみると分かるのですが、上であげたリストを選んで、適当に選択して再生されるまで、びっくりするくらい早いです。最近の具体的な数字が無かったのですが、2011年でも既に中央値で0.265秒だそうです。
Spotifyを使うと海賊行為が不要になる—と言われるのはなぜか | TechCrunch Japan
これ、何が良いかと言うと、私は毎日、良さそうなアーティストを発見するために音楽を聴いて5秒くらい聴いて「あ、これビートが好きじゃ無い」とか「これ、好き。お気に入りしてあとでゆっくり聴く」とかを何曲も繰り返すのですが、再生するまでが早いとめちゃくちゃ捗ります。あと、単純に快適です。
3. アーティストをちょっと深く知れる
単純に最新の曲がリストアップされるんじゃなくて、アーティストが作ったプレイリストなんかも聴けたりするのも気に入っています。
例えば、CHAIのプレイリストとか良かったです。CHAIがまだそんなに世に出てない頃に初めてLIVEで観た時に「これはどの辺のアーティストをルーツにして、何を聴いたらこうなるのだ?君たちは何者だ?」みたいな気持ちになったのですが、プレイリストを聴いてると少しですがルーツが分かったような気になりました。
あとはフレンズのも良かった。シングルとかアルバム順とかじゃなくて、出来た順っていう切り口。曲順に聴いてって音楽性が少しづつ変わっていくのが楽しい。
あと、たまにダイノジのオススメとか聴くのも発見があって面白いです。曲と曲の合間にダイノジ大谷の暑苦しくも愛のある解説が挟まるのもたまに聴くと良かったりする。ラジオで聴いた曲が良く聞こえる理論と一緒かなという感じ。
・・・
とまぁ語り出すとキリがなくて、他にも、友達として繋がっている人が今聴いてる曲が分かったり、何気にPCとスマホで同期再生出来たりとか好きなのですがこの辺にします。
気になった方は無料で試せます(フリーミアムモデル最高!)ので、ぜひ試してみてください。
職場の隣の席に同僚のエンジニアがいる。自分がコードレビューしてて、なんでこうなってるのか分からない事がある時とか実装で分からんなって時はすぐに口頭で聞いてしまう。向こうもそんな感じでフランクの話しかけてきたりするので、周りから見ると結構話してるなって思われてるんだろうなって、思っている。
なんでそんなに話してるかっていうのは過去の自分の記事でも書いているけど、雑に話していると無駄に考えていることとか、自分の考えが整理されたりとかがあって僕は良い感じになるからである。
あと、その同僚のエンジニアが以下の記事を読んでくれた時に「良いっすね!」って言ってくれたので、じゃあガンガン話しかけても大丈夫そうだなって思ったからっていうのがある。
namaninotiteti1026.hatenadiary.jp
それはそれとして良いんだけど、最近レガシーなコードのリファクタリングをしていた時に、「何に使われてるか分からないけど、その部分について自分が1年前くらいに当時の〇〇と会話した記憶がうっすらあるなぁ」というコードにぶち当たってしまった。
その箇所触った時のPull Requestのコメントとか見返しても全然その会話については残ってなくて、「あぁ〜もう!」というモヤモヤした気持ちになった。会話するのも大事だけど、それを何かしらgithub上とかslackに記録として残しておくのも大事かもなぁって思った。
みんなが後で追えるようにgithubかどこかに残した方が良い。「これこれこういう理由でこうなってるんじゃないかな?という話を〇〇さんとした」くらいのコメントでも何でも良いから。少なくとも0よりは良いだろ。と、考えている。
Android 8.0.0でEditTextをタップした時にクラッシュしていた。
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference at android.app.assist.AssistStructure$WindowNode.<init>(AssistStructure.java:484) at android.app.assist.AssistStructure.<init>(AssistStructure.java:1908) at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3038) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1810) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6565) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
これはOS8.0.0で起こるバグで、OS8.0.1にアップデートすれば治るとのこと。原因はAutofillまわりで、qiitaには以下のようにAutofill自体をしないようにしてクラッシュさせない方法があがっていた。
(qiitaから引用しました)
<style name="MyTheme" parent="@style/Nanika"> ... <item name="editTextStyle">@style/EditTextStyle</item> ... </style> <style name="EditTextStyle" parent="@style/Widget.AppCompat.EditText"> <item name="android:importantForAutofill" tools:ignore="NewApi">noExcludeDescendants</item> </style>
ただ、これだとAutofill自体が効かなくなってしまう。なので、issuetrackerにあがっていたもう一つの方法を試してみたらクラッシュしなくなった。
というのも、このクラッシュは以下のようにTextInputLayout
の子要素にEditText
があり、その中でhintを使っている時に起こるようだった。そのhintを親のTextInputLayout
に移せばクラッシュは起きなくなった。
<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint" /> </android.support.design.widget.TextInputLayout>
原因が結局モヤっとしているのだけど、OS8.0.0の全端末でこの事象が起きる訳ではなく一部の端末で起きていて、しかもOSのアップデートで治るのなら根深いんだろうな、と思ってそれ以上は深く掘って調べてない。
Android 8 (Oreo) の EditText をタップするとクラッシュする - Qiita Android O Preview 3 AssistStructure View.getBoundsOnScreen NPE [62834931] - Visible to Public - Issue Tracker
「理科系の作文技術」を読んだ。分かりやすい文章を書くために意識すべきことがまとまっていた。例を挙げる。
・理系の文章には意見と事実、どちらかしか含まれない
・意見と事実を区別する
・段落の頭にトピック・センテンスを書くように意識する
・逆茂木型にならないようにする
・出来るだけ1文を短く書く
この本に書いてあることを意識して、今後は書くようにしたら良さそうだと思った。
あとは「理系の文章は意見ではなく、事実が中心にあるべきだ」と書いてあって、それが印象に残った。それは、作文技術の話でもあるが、同時に理系を志すもののあるべき姿勢だと感じたからだ。"Shut the fuck up and write some code."という言葉とどこか似ている。
そんな感じです。読書感想はまだ慣れてなくて、オチとかつけられないけど、読んだら、何でも良いから書いた方が定着に繋がりそうなので書いていく、ことにした。良さげな本あれば紹介してください。
* ブクログも始めました。良かったらフォローしてください。
最近、実際の仕事のAndroidのアプリにLottieを導入してアニメーションを入れてます。 Lottieを導入する時にチームに「Lottieをやりたい!」ということを伝えるために、issueに書いたのですが、公開します。
目次
Lottieは、Adobe After Effectsで作ったアニメーションを様々なプラットフォーム(web/ iOS / Android...)上で動かすためのライブラリ。
Lottieを使って、ネイティブのプラットフォームにアニメーションを組み込む開発の流れとしては、以下のようになる。
Before
<ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerCrop" android:src="@drawble/your_drawable" />
After
<com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerCrop" app:lottie_fileName="your_animation.json" />
animationView.playAnimation()
でアニメーションを動かすことができます。*1 : ボタンのような1部品のアニメーションであれば、1ファイル10~30kb程度だが、サンプルサイトにあるような画面全体を使うようなアニメーションだと、200kb程度あるものも存在した。)
*2 : 対応表はこれです。 http://airbnb.io/lottie/supported-features.html#
(参考) http://airbnb.io/lottie/ https://github.com/airbnb/lottie-android https://ferret-plus.com/6214 https://airbnb.design/introducing-lottie/ http://tech.starttoday-tech.com/entry/swift-lottie https://inside.pixiv.blog/matsurai/3138