特徴
- コードベースがかなり小さい
- シンプルなインターフェース
見出し通りの内容ですが、Androidは5.0(Api Level 21)でマテリアルデザインが採用されたこともあって見た目に関わるapiが色々増えました
5系対応のサンプルコードはそこそこみてたんですが実際に触ってみないとわからないことも多いし、仕事にそろそろマテリアル対応とかもありそうなので 土日を使って小さなアプリを作りながら色々触れてみることにしました
今回調査したのは、
加えて、最近流行っているRxJavaも気になっていたので、[ネットワーク通信] -> [リストアダプターに流し組む]部分をRxJava(+Retrofit)で実装しました
クルクルする矢印のアイコンはサポートライブラリで提供されていて、
利用するにはappcompat-v7をいれます
compile 'com.android.support:appcompat-v7:21.+'
あとはこんな感じのテンプレコードを書けば動きます。
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.start, R.string.stop); drawerToggle.setDrawerIndicatorEnabled(true); drawerLayout.setDrawerListener(drawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true);
@Override public boolean onOptionsItemSelected(MenuItem item) { return drawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); }
ActionBarDrawerToggleってv4のサポートライブラリの方にもあって、それに気づかないと結構ハマります
リップルエフェクトもデフォルトのものは、SDKが提供してくれていて、
エフェクトを掛けたいviewのbackgroundに指定します
android:background="?android:attr/selectableItemBackground"
実はもう一種類あって
android:background="?android:attr/selectableItemBackgroundBorderless"
こっちはviewを跨いだ波紋が広がるエフェクトになるっぽい? のですが、minSDKが21なのでLollipopにしか使えません。
Adapterを作るのはListViewを同じ、RecyclerView.Adapterの実装は簡略化すると概ねこんな感じ、
public class EntryAdapter extends RecyclerView.Adapter<EntryAdapter.ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // viewをinflateしてViewHolderを作成する View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.cell_xxx, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { // getView相当の処理(view.setText() etc...) } @Override public int getItemViewType(int position) { return // viewTypeを返す; } }
昔のAdapterの実装とほとんど変わんないのですが、新しい概念としてViewTypeというのが追加されてて
複数のviewをレンダリングするタイプのリストを作成したい場合はgetItemViewTypeをOverrideしてよしなに出来る
Activity側はこんな感じ
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); entryAdapter = new EntryAdapter(); recyclerView.setAdapter(entryAdapter);
これは正直ちゃんと調べてないのでわからないですが、少なくとも上の3つはサポートライブラリで対応できました!!
(気になるの他に何かあったかな..)
[ネットワーク通信] -> [リストアダプターに流し組む]はこんな感じに書ける
そこそこ複雑なリストの処理してるけど、とても完結でわかりやすく書ける
学習コスト低いのでコスパ的に考えるとかなりいい気がする 特にRetrofitがRxjava対応していてホント便利だった
使い方は、wikiとサンプル見れば簡単な処理ならすぐ書けそう
category.observable(app) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .doOnSubscribe(() -> { // something.. }) .onErrorReturn(throwable -> { // something.. }) .map(entries -> { // something.. }) .flatMap(Observable::from) .groupBy(entry -> { // something.. }) .subscribe(observable -> { if (observable.getKey() == EntryType.onlyTitle) { observable.subscribe(entryAdapter::add); } else if (observable.getKey() == EntryType.WithImage) { observable .buffer(2) .filter(// something ) .subscribe(entryAdapter::add); } });
5.0用のサンプルアプリ程度の気持ちで作ってたんですが、
やる気が続いたら継続的に開発するつもりです
[結論]
XBA-H3最高すぎるから買った方がいい
昔からいわゆるオーディオオタクで,あれやこれやと色々イヤフォン買ってた
2008年あたりがピークで,当時は価格コムのヘッドフォン・イヤフォンページに常駐して, 情報を集めるのが日課になってた,その頃は学生でバイトもしてなかったのでそれこそ年に一回お年玉を使って高いイヤフォンを買うみたいな感じだったので本当にミスれないという気持ちだったのを覚えてる
今まで買ってきたイヤフォンは列挙すると
少しでも高級イヤフォンの世界に足を踏み込んだことがあればわかると思うんだけど,ほんとに沼にはまっていく感じで徐々に高いのが欲しくなってくる.4,5万の世界になってくるとヘッドフォン買ったほうがいい気もしてくるし,DAP(音楽プレイヤー)選びとかやポータブルアンプも揃えたくなってくる.そうなってくるといよいよ学生にとっては手を出せない価格帯になってくるので2-3年ほとんど高いイヤフォンとかは買わなくなった.
この春から働くようになったんだけど,職場は結構騒がしいので仕事中音楽聞いてる.たまたま僕の周りのエンジニアの方たちがイヤフォンとか詳しい人が多くて,いろいろ話してたらまたイヤフォン熱が高まってきていて,つい一昨日くらいにamazonで final audio designってところのPiano Forte Ⅱっていうのをポチった.
このイヤフォンは3000円くらいでとても良心的な価格なんだけど,めっちゃコスパ高くていい音がする.あと形状がカナル型なんだけどイヤーピースはなしっていう不思議なデザインを採用してて面白い.とはいっても価格相応な部分もあって,ジャンルを選ぶ感じでゴリゴリのライブ風イコライザーがかかっているように聞こえる曲もあったり,ck-9とか好きな人間からすると中音から高音にかけての解像度の低さが気になった(ミサワ顔)
そんな不満を抱えた状態で久しぶりに価格コム見てたら,Sonyの XBA-H3ってのを見つけた レビューとか見てるとどこもかなりいい評価してて,なんかどうしようなく欲しくなってさっき渋谷のビックカメラ行って衝動買いしてきた.
結論から言うとこの機種は本当に素晴らしかった
ダイナミックドライバ一つと2系統のBA(バランスド・アーマチュア)ドライバを備えた超豪華フラグシップモデルだけあって,音の分離が素晴らしくて,とても自然な感じになっている.想像していたよりかなり低音は強かったのでイコライザで多少調節してしまっているけど,音のバランスもかなり好みだった(ミサワ顔) しかもこの機種はコードが交換できるので断線してしまっても安心できるし,共通の規格に準拠はしてないらしいけどSHURE製のコードとかも刺さるらしい. 唯一難点をあげるなら本体がちょっとでかいかなーという気もするけどしょうがない気もする.だいぶ高い買い物だけどイヤフォンの沼をやっと抜けれたと思うとまあいいかなって思う
ちなみにヘッドフォンはUltimate Ears UE 6000 ってやつ使ってて,かなり好みが分かれそうな機種なんだけど高音が綺麗でオススメです.
次は小さいタイプのUSBアンプほしいなー
( gradleはじめて3日目の初心者です.正しいビルド方法をご存知のかた教えて下さい )
リポジトリ : Bearded-Hen/Android-Bootstrap
一言で説明するとtwitter Bootstrapみたいなものをandroidのviewでも使えるようにしようっていうライブラリ
出来たばかりのライブラリなので不自由なところもあるけど,気軽にfont-awesomeが使えるようになったりかなりデザインが楽になるのでエンジニアにとっては嬉しい