タグ

ブックマーク / inujirushi123.blog.fc2.com (11)

  • LinearLayout を使って均等割り付け : layout_weight - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Android のレイアウトで均等割付を行うには LinearLayout の android:layout_weight を使います。 この layout_weight は View に対するウェイト(重み)を指定し、余白を割り当てます。 余白を割り当てるため、均等割りを行うのであればサイズ指定を 0dp にする必要があります。 ・ vertical (縦並び)であれば android:layout_height="0dp" ・ horizontal (横並び)であれば android:layout_width="0dp" 割り当てられるサイズは『 余白 × layout_weight ÷ layout_weight の合計 』になります。 layout_weigh が定義されていない、または 0 の時、余白は割り当てられません。 もしサイズ指定を 0dp 以外にした場合、指定したサイズ

    LinearLayout を使って均等割り付け : layout_weight - 戌印-INUJIRUSHI- (Androidあれこれ) -
  • 指定時間に処理を実行する : AlarmManager - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Android では指定された時間、または、一定時間毎に処理を実行するために AlarmManager が用意されています。 例えば、10秒毎にサービスを実行するには以下のように記述します。// 実行するサービスを指定する PendingIntent pendingIntent = PendingIntent.getService(context, 0, new Intent(context, SampleService.class), PendingIntent.FLAG_UPDATE_CURRENT); // 10秒毎にサービスの処理を実行する AlarmManager am = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.ELAPSED_RE

  • 画面回転時の再構築対応 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Androidでは画面を回転させると画面の向きに合わせたレイアウトを読み込もうとしてアクティビティを再構築(onDestory→onCreate)します。 アクティビティが再構築されるとその画面で入力された値などがクリアされてしまうため、対策を行う必要があります。 対策としては以下の4つの方法があります(俺が知る限りでは…) ・アクティビティの設定変化をハンドリング ・画面の向きを固定化 ・Bundleに設定(一時保存) ・SQLiteやPreferenceなどへの保存(永続保存) 最後のSQLiteやPreferenceなどへの保存は画面の回転に限った話ではないので今回は除外します。 以下、その他3つの設定方法です。 参考サイト:ソフトウェア技術ドキュメントを勝手に翻訳 - 7.3 実行時の変化への対処 【アクティビティの設定変化をハンドリング】 アクティビティの設定の変更ハンドリングを

  • 外部領域へのアクセス権限と Android 4.4 KitKat - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Android では外部領域(内部ストレージ/外部ストレージ)へアクセスするためには、アクセスを行うアプリ毎に WRITE_EXTERNAL_STORAGE または READ_EXTERNAL_STORAGE をパーミッションに設定する必要があります。 パーミッションを設定せずに外部領域にアクセスすると SecurityException が発生します。 Android 4.4 (KitKat / API 19) からはこの外部領域における、自身のアプリケーション領域 Context#getExternalFilesDir(String type) へはパーミッションなしでもアクセスできるようになりました。 ただし、このアクセス許可は自身のアプリケーション領域のみを対象としており、全てのアプリケーションが共有する領域 Environment#getExternalStoragePublic

  • 2013年03月 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    以前『ウィジェットにイベントを設定』で Java クラスから onClick イベントを設定する方法を書きました。 今回はレイアウトXMLからの設定方法について。 レイアウトXMLからクリックイベントを設定するには android:onClick="[メソッド名]" を使用します。 android:onClick="[メソッド名]" から呼ぶメソッドは以下の条件を満たす必要があります。 ・メソッドは呼び出した Activity クラスに実装する。 ・Fragment から呼び出す場合もメソッドは Activity クラスに実装する。 ・メソッドは public でなければならない。static 可。 ・引数は View のみ。引数なし、または、他の引数を設定することはできない。 条件を満たさない場合、クリック時に java.lang.NoSuchMethodException が発生します

    2013年03月 - 戌印-INUJIRUSHI- (Androidあれこれ) -
  • 外部ストレージのパスを取得する(Android 2.2~?) - 戌印-INUJIRUSHI- (Androidあれこれ) -

    【関連記事】外部SDカードについてまとめるまえのメモ Androidでは、ストレージ(SDカードなど)のパスを取得するために Environment.getExternalStorageDirectory() が用意されています。 しかし、ストレージが内部ストレージ(取外不可)と外部ストレージ(取外可能)に別れている場合、内部ストレージを取得します。 外部ストレージを取得する Android API は用意されていません。 そこで開発者は色々な方法を使って、外部ストレージのパスを取得しています。 で、私も色々と試しました。こんな感じに。 ×環境変数に登録されているパスを取得する ⇒ 環境変数がバラバラ。そもそもHTC端末など、一部の端末は登録されていない。 ×環境変数と、一部特殊なパスは直書きで対応する ⇒ 種類が多すぎて対応しきれない ×シンボリックリンク参照 ⇒ 設定されていないデバイ

  • タイトルバーの設定 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Activity の上段に表示されるタイトルバーの設定方法です。 ■ 画面イメージ ----------------------------------------------- ■ タイトルバー設定 ------------------------------------------- タイトルバーに表示する文字列と文字色の設定は Javaソースコードで設定できますが 背景色はスタイルからしか設定することができません。 表示・非表示の切り替えは Activity#requestWindowFeature(int featureId) で行えます。 ただし Activity#setContentView の前に呼び出さないとエラーが発生してしまいます。 package jp.inujirushi.sample.activity; import android.app.Activity; i

  • デバイスのDPIを取得 と dip ⇔ px の変換 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    Android ではデバイス毎に画面サイズと解像度が異なるため、デザインする際のサイズ指定に困ります。 そこでレイアウトのサイズ指定では dip/dp を使ってサイズ指定を行います。 dip (Density Independent Pixel) とは、解像度に応じてサイズを変える単位です。 この dip を指定することで画面上のサイズを統一することができます。 ※ dip = dp で、ここでは文字数の少ない dp を使います。 さて、この dip が何 px なのかを計算するには解像度を知る必要があります。 解像度は DIP (Dots Per Inch) と呼ばれ、1インチ幅のドット数を表します。 【Android の解像度 (2/13/02/23 時点)】 ldpi : 120 dpi mdpi : 160 dpi hdpi : 240 dpi xhdpi : 320 dpi xx

  • アクティビティ、アプリの終了方法 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    アクティビティ、または、アプリを終了させるには複数の方法が存在します。 この記事を書くにあたり、てくめも様のSystem.exit() を使ってはいけない理由と、終了方法のまとめを参考にさせて頂きました。 ①Activity#finish() アクティビティをライフサイクルに沿って正しく終了させる唯一の方法。 起動アクティビティの場合は、アプリを終了する(※)。 終了と書いてあるが、Android OSに対して終了通知を送るだけで、呼び出された直後に終了するわけではない。 そのため、finish()以降に処理が記述されていれば記述された処理は実行されてしまう。 なお、Android端末の戻るボタン押下時にも呼ばれている。 ※ここでのアプリ終了はアクティビティが全て閉じられた状態であり、プロセスを完全に終了させるわけではない。プロセス終了のタイミングはAndroidのOSに依存する。 ②Ac

  • SDカードのパス取得:Environment と System.getenv - 戌印-INUJIRUSHI- (Androidあれこれ) -

    ------------------------------------------------------------ (2012/11/27 追記) この記事では外部ストレージのパスは取得しきれませんでした。 最新の『外部ストレージのパスを取得する(Android 2.2~?)』を参照してください。 ------------------------------------------------------------ SDカードのパスは Android API を使って取得することが出来ます。 // Environmentクラスから取得 File file = Environment.getExternalStorageDirectory(); String sdcard = file.getPath(); // 文字列で指定するのはダメ絶対 // String sdcard = "

  • フルスクリーン表示と解除 - 戌印-INUJIRUSHI- (Androidあれこれ) -

    ゲームやカメラを使うようなアプリの場合、ステータスバー(通知領域)が邪魔になるときがあります。 そのときには Window クラスにフラグ追加することでフルスクリーン表示することが可能です。 API Reference: Window, WindowManager.LayoutParams // フルスクリーン表示する getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); // フルスクリーンを解除する getWindow().clearFlags(WindowManager.Layo

  • 1