読者です 読者をやめる 読者になる 読者になる

ここ最近ググったりしたこと

Android

NavigationDrawerの引っ張ったら出てくる奴の背景を白にした時


android - Navigation Drawer semi-transparent over status bar not working - Stack Overflow
StatusBarをtransparentなやつで今流行の
http://material-design.storage.googleapis.com/publish/v_2/material_ext_publish/0Bx4BSt6jniD7eDFoYlp1QzEwUDQ/layout_structure_sidenav1.png

http://material-design.storage.googleapis.com/publish/v_2/material_ext_publish/0Bx4BSt6jniD7SkR5bDYzaFFVVDQ/layout_structure_sidenav2.png
をやろうとした時に引っ張ったら出てくる奴の背景を白にした場合、うまく行かなかった。
他の色にしたりするとうまくいくけど、#ffffffだけは出来なくて...

解決策は上のリンクにあるやつですー。

Picassoのloadに空文字渡すと落ちる

if (!TextUtils.isEmpty(url)) {
        Picasso.with(getApplicationContext()).load(url).into((ImageView) findViewById(R.id.hoge));
}

しないといけない。
驚いたのがloadにnull渡しても落ちないけど、空文字渡すと落ちるっていうのがちょっと辛かった。

View#measureの引数

ViewGroupを拡張したViewで子のViewのmeasureを呼び出すときにdpを指定してた。
で、案の定うまく行かなくて、悩んで、ソース眺めたら引数が

measure(int widthMeasureSpec, int heightMeasureSpec)

MeasureSpecじゃねーか!って。

getChildAt(i).measure(MeasureSpec.makeMeasureSpec(viewWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

これが多分widthが固定、heightがwrapなやつの指定がコレな気がします。

onMeasure内のViewのリサイズ処理

Modeによってリサイズできたり出来なかったりした。
the moon at dawn: カスタムビューを作る際に重要なonMeasure()とは?
参考になった。

Rippleなボタンのdrawable

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:attr/colorControlHighlight">
    <item android:id="@android:id/mask">
        <color android:color="@android:color/white"/>
    </item>
    <item android:drawable="@drawable/hoge"/>
</ripple>

ListViewないのCardViewにデフォルトのRippleを当てる

無理だった。

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:clickable="true"
    android:foreground="?android:attr/selectableItemBackground"
    android:elevation="10dp"
    card_view:cardCornerRadius="8dp">
...
</android.support.v7.widget.CardView>

こんな感じのレイアウトをトップに持ってきてもListViewの1行としてタッチイベントが取られてしまうと角を削った部分にも波が出てしまいダサくなった。
CardViewそのものにbackground付けるんだったら、そもそもCardView使うメリットが見えなくなった。

SimpleDateFormat と DateFormat

[Android]日付のフォーマットにはSimpleDateFormatを使うとよい| 手しごと
Y.A.M の 雑記帳: SimpleDateFormat ではなく android.text.format.DateFormat を使おう

これどっちが正しいのかな。
SimpleDateFormatで引数がStringのみの時にLintさんから黄色いやつ出るって書いてあるんですが、今は出ないし。
うーん。

ググるきっかけとなったのがこれ
f:id:amyu_dev:20150119182501p:plain
特定の端末で時間がHHと表示されてしまい...
これはDateFormatを使ってます。
まだ試してないですが、上の記事を読む限りSimpleDateFormatを使ったらうまくいくのかな?

最後に

まとめる気が...
今いろいろとViewを作ってるのでそのうち公開しますー

ではではー