タグ

ブックマーク / y-anz-m.blogspot.com (27)

  • ConstraintSet を使って Activity を再生成せずにレイアウトを切り替える

    自分で縦横レイアウトを切り替えるので Manifest に設定を追加 <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"> ... </activity> 縦画面用のレイアウトと、横画面用のレイアウトを用意する。 例としてここでは縦画面では上部に 16:9 で配置し、横画面では全画面に配置している。 縦画面用 res/layout/activity_main_port.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.an

    ConstraintSet を使って Activity を再生成せずにレイアウトを切り替える
    bigchu
    bigchu 2020/11/10
    layout/activity/だいなみーーっく!
  • Kotlin でスプレット演算子を使うと enum の values() に値を追加したリストを簡単に作れる

    以下のような Rank クラスがあるとして、 enum class Rank { GOLD, SILVER, BRONZE } ランクなしという意味の null を含むリストを作りたいとします。 ↓ 作りたいリスト val list: List<Rank?> = ... println(list) // [null, GOLD, SILVER, BRONZE] Rank の一覧は Rank.values() で取れるので val ranks: Array<Rank> = Rank.values() println(ranks.joinToString()) // GOLD, SILVER, BRONZE listOf(null) で null だけのリストを作って + で ranks と合わせたリストを作ることもできますが、 val list: List<Rank?> = listOf(n

    bigchu
    bigchu 2020/09/10
    listOf(null, *ranks) で無駄省く
  • アプリ内から Google Play にレビューを投稿できるようになりました。

    In-App Review APIJava/Kotlin のほか、native code と Unity からも使えます。 In-App Review API のガイドラインを確認して利用しましょう。 例えば レビューのUI(ドキュメントではカードと呼んでいる)を出す前に "Do you like the app?" のような意見を聞く質問を出してはいけない。 カードに変更を加えたり、上や周りにオーバーレイを出したり、カードを勝手に消してはいけない。 過度に出してはいけない。quotaがあり、超えるとカードが出なくなる。 などがあります。 In-App Review API を使うには Google Play Core Library を追加します。 dependencies { ... implementation "com.google.android.play:core-ktx

  • Scroller を使う

    Scroller というのは、スクロール時のアニメーションを実現するための x,y 位置を計算してくれるクラスです。 Scroller と OverScroller が用意されています。 OverScroller は行き過ぎて戻ってくるようなアニメーションができます。 Scroller にはアニメーションを開始するメソッドとして fling startScroll() が用意されています。 使い方はこんな感じです。 1. scroller.forceFinished() でアニメーションを止める 2. scroller.fling() または scroller.startScroll() でアニメーションを開始する 3. View.postInvalidateOnAnimation() を呼ぶ。これを呼ぶと View.computeScroll() が呼ばれる 4. View.comput

    Scroller を使う
  • Dagger に Fragment と FragmentFactory の生成をまかせる

    Master of Dagger の改定版にも入れる予定です。ただいま鋭意執筆中です。もう少々お待ちください。 ViewModelFactory と同じような感じで FragmentFactory および Fragment の生成をまかせることができます。 オブジェクトグラフに MyApi があるとします。 @Module object AppModule { @Provides fun provideMyApi(): MyApi { ... } } これを引数にとる Fragment があります。Dagger に生成をまかせたいのでコンストラクタに @Inject をつけます。 class MainFragment @Inject constructor(private val api: MyApi) : Fragment() { ... } Fragment の Map Multibi

    bigchu
    bigchu 2020/05/28
    Dagger
  • 給与の額面から手取りを計算してみよう。

    このエントリは Fintalk Advent Calendar の10日目です。 給与の話をするときそれが額面なのか手取りなのかで随分と話(金額も)が変わってきます。 サラリーマンだと手取りの計算は会社の経理が行なってくれるので、給与明細を見る時ぐらいしか気にしないかもしれません。 私は自分で自分の手取り(=支給額)を計算しているので、いかにたくさん年金やら税金やらに取られているか知っています。とてもつらくなります... このつらさをみんなと分かち合いたいので、額面から手取りがどう計算されているのかを解説したいと思います。 賞与の場合はこちら → 「賞与の額面から手取りを計算してみよう。」 基給(給) 手取りを計算する上での出発点は「基給(給)」です。 みなさんの給与明細で基給とか給と書かれている項目です。 時給×時間とか日給×日数とか月給とかがこれです。 この基給に残業代や

    給与の額面から手取りを計算してみよう。
  • Android 4.0 Platform

    Android 4.0 Platformを意訳しました。訳が正しくない可能性もあります。正確な内容を理解するには原文を参照してください。 --- API Level: 14 Android 4.0 へようこそ! Android 4.0 はユーザーと開発者むけの新しい機能を追加したメジャープラットフォームリリースです。 以下で議論される新しい機能と API に加え、Android 3.x からの API セットと Holographic テーマを小さい画面向けにも拡張した Android 4.0 は重要なプラットフォームリリースです。つまり、アプリ開発者として、Android 4.0 (API Level 14) 以上で動作する ハンドセット、タブレット、その他デバイスにおいて、それぞれに最適化されたユーザー体験を提供する単一の APK を開発し公開するための、1つのプラットフォームと単一の

    bigchu
    bigchu 2016/10/09
    : VPN
  • Migrate from Retrofit to Retrofit2 (Retrofit から Retrofit2 に移行する)

    Migrate from Retrofit to Retrofit2 (Retrofit から Retrofit2 に移行する) retrofit2 が正式リリースされました。 retrofit/CHANGELOG.md at master · square/retrofit retrofit との後方互換性はありません。そのため maven の group id が com.squareup.retrofit2 になっています。 compile 'com.squareup.retrofit2:retrofit:2.0.0' Converter GSON などの Converter は別のモジュールに分割されました。 retrofit new RestAdapter.Builder() .setConverter(new GsonConverter(gson)) ... retrofit2

    bigchu
    bigchu 2016/05/31
    retrofit / okhttp
  • 「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。

    異なるActionのIntentそれぞれに対応するアプリを、1つのchooserで選択できるようにする方法です。 例えば、ギャラリーから画像を選択するときは Intent.ACTION_GET_CONTENT を使いますが、 カメラを起動して撮影した画像を取得するときは MediaStore.ACTION_IMAGE_CAPTURE を使います。 そのため、まず「ギャラリーから選択」と「カメラで撮影」のどちらかを選ぶためのダイアログを用意する例をよく見ます。 *ドキュメントプロバイダーが追加されたからか、ACTION_GET_CONTENT でギャラリーが出てこなくなり、代わりにドキュメントがでてきます。ここではギャラリーの方がわかりやすいので、ギャラリーとします。 Intent.EXTRA_INITIAL_INTENTSを使えば、1つのchooserダイアログに両方入れることができます。

    「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。
    bigchu
    bigchu 2016/05/24
    : 写真選択の dialog
  • Android Material Design な TabHost + ViewPager に移行する

    前回のエントリ「Android Material Design のタブの仕様まとめ」で紹介した Material Design の Fixed Tabs full-screen width を TabHost で実装してみます。 Activity 生成ウィザードの Tabbed Activity で Swipe Views(ViewPager)を選択して作成される Activity に付け足していきます。 *以下の例は minSdkVersion = 21 としています。 0. テーマに色をセット メインカラーとアクセントカラーをセットしておきます res/values-v21/styles.xml <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="android:Theme.

    Android Material Design な TabHost + ViewPager に移行する
    bigchu
    bigchu 2016/04/30
    materialdesign / Tabhost
  • Android Activity Transitions を実装する

    Activity Transitions のドキュメントを読んだのですが、よくわからなかったので実際に試してみました。 1. window content transitions を有効にする Activity Transitions を使うには、window content transitions を有効にする必要があります。 コードで有効にする場合 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); テーマで有効にする場合 <style name="BaseAppTheme" parent="android:Theme.Material"> <item name="android:windowContentTransitions">true</item> </style> 2. transition を指定する

    bigchu
    bigchu 2016/03/12
    : Activity Transitions
  • Android FragmentTransaction のまとめ

    add / remove add(int containerViewId, Fragment fragment, String tag) ・Activity の状態に fragment を追加 ・fragment がすでに Activity に追加されている場合なにも起こらない(detach したインスタンスを add しても表示されない) ・containerViewId が 0 ではない場合、fragment の onCreateView() が null でなければそれを containerViewId の ViewGroup に追加 onAttach() → onCreate() → onCreateView() → onActivityCreated() → onStart() → onResume() * remove() 後に detach() された後の場合は onAtta

    bigchu
    bigchu 2014/11/03
    : Life Cycle
  • Fragment in Fragment 時の注意点

    Android 4.2 で Fragment in Fragment 用の API が用意されました。 NestedFragments : Android 4.2 また、Support Library でも同様の機能が提供されています。 今回、この API を使ってちょっとはまったのでメモしておきます。 構成としては Activity の ActionBar の Tab | Fragment(A) の ViewPager | Fragment(B) のようになっています。 Fragment(A)では、getChildFragmentManager() をつかって素直に ViewPager に Adapter をセットしているだけです。 Fragment(A) public class TabFragment3 extends SherlockFragment { ViewPager mPa

    bigchu
    bigchu 2014/09/11
    : Fragment in Fragment やっていいのかな。やってみる!
  • Android 端までスクロールしたときのエフェクトを消す

    ListViewやScrollView、ViewPagerなどで端までスクロールすると、水色(KitKat以前)や灰色(KitKat以後)のエフェクトが表示されます。 これを表示しないようにするには、View.setOverScrollMode()で、OVER_SCROLL_NEVERを指定します。(デフォルトでは、OVER_SCROLL_ALWAYSになっています。) listView.setOverScrollMode(View.OVER_SCROLL_NEVER); setOverScrollMode()はAPI Level 9からなので、ViewPagerをAPI Level 9未満でも使う場合は、ViewCompat.setOverScrollMode()を使います。 ViewCompat.setOverScrollMode(viewPager, ViewCompat.OVER_

    Android 端までスクロールしたときのエフェクトを消す
  • Android ICS のキーストアアクセスの一元化

    元記事 Unifying Key Store Access in ICS Android 4.0 (ICS) では、人々がパーソナルな Android デバイスを仕事に使えるようにするための多くの機能拡張が追加されています。ここでは、キーストア機能について取り上げます。 Android 1.6 (Donut) で VPN を利用するためにシステムキーストアが追加されました。のちに WiFi 認証のサポートにも拡張されましたが、アプリケーションがアクセスすることはできない状態でした。 これまで、セキュアなSSLウェブサーバーの認証や、クライアント証明書を介してサーバーにユーザー認証する必要がある場合、アプリにとって自身のキーストア管理は共通の課題でした。このための処理では、メールやブラウザなどのいくつかのアプリに渡って複数の証明書が共有されるようなエンタープライズ向けの環境では、管理上の問題

    bigchu
    bigchu 2014/08/28
    : KeyChain
  • Android ImageViewの領域を角丸にする方法

    1. ImageViewを継承したクラスを用意する public class RoundImageView extends ImageView { ... } 2. 角丸の黒い9patch画像もしくはshapeを用意する res/drawable/mask.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="32dp" /> <solid android:color="#000000" /> </shape> 3. onDraw()で SRC_ATOP を使ってくりぬく public class RoundImageView extends ImageView { Pain

    Android ImageViewの領域を角丸にする方法
    bigchu
    bigchu 2014/08/28
    : ImageView / Custome / 角丸 / RoundImageView
  • Android Expandable List で group を開いたときに自動でスクロールする

    この状態で一番したの「夏目漱石」をタップすると、 child は下に隠れて見えなくなってしまう 勝手にスクロールして、child が見えるようになってくれる ようにするには、 public void smoothScrollToPosition (int position) を使う 注: API Level 8 ExpandableListView el = getExpandableListView(); el.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { ((ExpandableList

    Android Expandable List で group を開いたときに自動でスクロールする
    bigchu
    bigchu 2013/01/22
    : Expandable を自動スクロール / listview
  • 「よりよいコードを求めて命名について頭をひねる会」のログ

    http://www.zusaar.com/event/438105 アプリケーションを作る英語 の著者の西野さんを交えて、クラス名とかメソッド名とか変数名とか命名で困っている課題を1つ以上持ち寄りみんなで一緒に検討する勉強会をしました。 「アプリケーションを作る英語電子書籍 http://tatsu-zine.com/books/english4app 紙 http://www.amazon.co.jp/gp/product/4844332848/ はじめに:西野さんからちょっとお話 The Art of Readable Code から第2章と第3章 第2章:名前に情報を詰め込むようにする どういう情報をつめこむか。 明確な言葉を選ぶ get は不明確らしい getPage(url) -> FetchPage(url) や DownloadPage(url) 特色のある(color

    「よりよいコードを求めて命名について頭をひねる会」のログ
    bigchu
    bigchu 2012/11/17
    : う、おれは簡単にしすぎるからな。
  • Android Cloud to Device Message - C2DM - 2

    ■ C2DMに必要なもの ・Mobile Device (デバイス) ・Marketアプリがインストールされている ・2.2以上のAndroidが走っている ・Googleアカウントと紐付いている ・C2DMを利用するAndroidアプリをインストールする ・Third-Party Application Server (アプリケーションサーバ) ・開発者が用意 ・デバイス上のAndroidアプリに、C2DM Server経由でデータを送る ・C2DM Servers (C2DMサーバ) ・Third-Party Application Serverからメッセージを取り出し、 それをデバイスに送る役割を果たすGoogleのサーバ ■ C2DMの認証に必要なもの ・Sender ID (Android app用) ・アプリの開発者にひもづいたemailアカウント ・デバイスにメッセージを送る

    bigchu
    bigchu 2011/11/16
  • Android Parcelable を使ってクラスのメンバを一時保存

    さて、前回のエントリで、Bundle で状態を保存する方法を 書きました。 Android Bundle で状態を保存 ここでは、Bundle の Method (例えば putString と getString) を使ってパラメータを保存する方法を紹介しました。 しかーし、ここで問題が発生 「独自にデータクラスを用意していて、このクラスのメンバごと保存したいんだけど…」 さぁ、この場合どうする? ここで登場するのが Parcelable さんです。 Parcelable はリファレンス http://developer.android.com/intl/ja/reference/android/os/Parcelable.html に書いてあるように、Parcel にデータを書き/読みするためのインタフェースです。 "Interface for classes whose instan

    bigchu
    bigchu 2011/09/27
    : Parcelable だな。おっし。 / activity