tande lab.

Archive
Android

またもや、凄く今更なイベント参加メモをアップ。
でも内容的にはまだまだ全然参考になる。

去年 (2013年) の5月に行われた 第39回 HTML5 とか勉強会 #html5j + 日本 Android の会 #jag201305 合同勉強会 で、クックパッドの方 (@kaa さん) がハイブリッドアプリ (OS ネイティブと HTML5 を組み合わせたスマホアプリ) について講演されていて、面白かったのでメモしてたんですけど、その時のメモが発掘されたので、今更ながらのアップです。。

とりあえず、今の世の中には大まかに下記の3種類のスマホアプリがある、というのを頭に入れてから読み進めると良いです。

ネイティブアプリ iOS/Android など OS ネイティブの開発環境で制作されたアプリ
WEBアプリ HTML5 など WEB ベースで制作され主にブラウザ上で動くアプリ
ハイブリッドアプリ OS ネイティブに HTML5 など WEB を組み合わせたアプリ

以下、メモです。

Read More

Android SDK Manager で Package を インストールする際、インストールできる Package の一覧が表示されず、インストールできないことがあります。

前記事 – [Android] Android SDK をインストールしてみた

  • 3. Android SDK Manager を起動する
  • 4. インストールするパッケージを選択

あたりでつまづいた場合、まずは Proxy を疑います。
Proxy 設定を Android SDK Manager の環境設定で登録してやるとうまくいくかもしれません。

Read More

Android アプリのデザインをしているといつも混乱する px と dp の関係。

Android には数種類の解像度があってそれぞれ比率が決まっています。
代表的な解像度4種類の比率を比較してみると

mdpi : hdpi : xhdpi : xxhdpi = 1 : 1.5 : 2 : 3

Photoshop でデザインする時はこの比率を常に意識します。
どの解像度でも px 換算で、小数点がでないように気をつけるんですが、ほんっと面倒くさい!!

それを解決してくれる iPhone アプリがあったー!

Read More

eclipse のプロパティパネルの一番下に
“Deprecated Properties” とまとめられている以下のプロパティは
今後削除される予定のため利用を推奨されていないそうです。

https://lh4.googleusercontent.com/-YK5VsQhDKrs/UWLI77LKCII/AAAAAAABSXk/ZpUnMQ-eGso/s800/130408-0005.png

具体的な記述例で比較すると以下のような感じになるようです。

削除予定プロパティ 代替プロパティ
android:password="true" android:inputType="textPassword"
android:singleLine=”true” android:maxLines="1"
android:capitalize="characters" android:inputType="textCapCharacters"
android:autoText="true" android:inputType="textAutoCorrect"
android:editable="false" android:inputType="none"

こうやってみると "inputType" に色々まとめられたんですね。

Read More

“ellipsize” というパラメータで指定します。

android:ellipsize="end"

https://lh6.googleusercontent.com/-ZvrJhI4kXng/UWLGIvNR2RI/AAAAAAABSXY/SiRPdNFtywM/s800/130408-0002.png

指定できるパラメータは以下の5種類。

Read More

前記事 – [Android] 端末の画面サイズ・解像度まとめ
でも追記したのですが tvdpi という解像度グループが存在するそうです。

他の解像度グループと違って少し特殊なものらしいです。

開発者視点でのブログはいくつか見つけたのですが、tvdpi でデザイナーが困ることを書いてある記事はあまりなかったので私なりに考察してみました。

Yukiの枝折: Android:抽象ドット密度tvdpi

がとても参考になりました。

Read More

ボタンを押したときに画像や色を差し替える仕組みとして selector というものがあります。
shape などと一緒で xml で記述します。

状態変化は最大で 5 種類まで設定できるそうで、順番も以下の通りで書かないとうまく反映されないぽいです。

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- フォーカス時 / focused -->
  <item
    android:state_focused="true"
    android:state_enabled="true"
    android:state_pressed="false"
    android:drawable="@drawable/focused" />
  <!-- 無効状態 かつ フォーカス時 / disabled and focused -->
  <item
    android:state_focused="true"
    android:state_enabled="false"
    android:state_pressed="false"
    android:drawable="@drawable/disabled_and_focused" />
  <!-- 押下状態 / pressed -->
  <item
    android:state_focused="true"
    android:state_enabled="true"
    android:state_pressed="true"
    android:drawable="@drawable/pressed" />
  <!-- 無効状態 / disabled -->
  <item
    android:state_enabled="false"
    android:drawable="@drawable/disabled" />
  <!-- 通常状態 / normal -->
  <item
    android:drawable="@drawable/normal" />
</selector>

<!-- アンカーになってしまうのを防ぐため、@ (アットマーク) を全角文字で記載しています。実際は半角です。-->

xml ファイルの名称は任意ですが、shape も selector も同じ xml ファイルでややこしいので、selector であるということが分かりやすいファイル名称にしておくと良さそうです。

Read More

アプリに埋め込むテキスト情報は “string.xml” で管理しておくと良いです。
そうすると colors.xmldimension.xml と同様、テキスト情報を変数のように扱えます。

ここで登録するテキスト情報は、アプリ内で動的に生成されるものではなく、固定テキストです。

やり方は以下な感じ。

Read More

Android は 16bit での表示前提で設計されているそうなので、
今の時代でも実はフルカラー表示ではないようです。

中間色を擬似的に見せる Dithering という処理をハードウェア側で行って
マッハバンドが出にくいようにする仕組みになっているようなのですが、
中間色がキレイに表示にだせないから Android はグラデが汚いと言われるんですね。納得。

16bitカラー表示のモバイル機器 – beruponの日記

とか

Androidでの画像表示あれこれ – Mlog Memo

によると

Bitmap のオブジェクトとしては 32bit カラーのものが作れるけど、あくまで書き込み先の端末のスクリーンは 16bit を想定している

ということのようです。

年々世の中の端末の解像度は上がってきてるけど、
Android ではなるべくグラデーション表現とかやらない方がいいんですかねー。

どうやら Windows Phone とかも同様で 16bit 表現が前提らしい。
Windows Phone で採用されてる Metro UI がフラットデザインを推しているのって
そういう制約も加味された上でのことなんだろうか。きっとそうなんだろうな。

Read More

色情報を colors.xml で変数のように管理できたように、余白情報も変数のように管理できる仕組みがあるそうです。

こういう仕組みがあると分かってからデザインするのと、分かってないでデザインするのではかなり効率に差がでると思いました。

Read More