旧. -開発日記-

〜とあるプログラマーのつぶやきや開発メモなど〜

Android画像解像度 〜対応表〜

Androidアプリケーション開発で最も(僕的に)やっかいなのが、
端末の画面サイズが様々ということ。
簡単ですが、端末種類を以下にまとめます。


QVGA端末
HVGA端末
WVGA/FWVGA端末


HTC DesireやXperiaなど、そこそこ新しい端末などは
だいたいWVGA/FWVGA端末に該当します。

そしてAndroidはDensity(ピクセル密度)といった考え方で
マルチスクリーン対応していく形になります。
3つのカテゴリに分類し対応します。


Low-Density
Medium-Density
High-Density




Low-Density

100dpi〜140dpiを120dpiとする

Medium-Density

140dpi〜180dpiを160dpiとする

High-Density

190dpi〜250dpiを240dpiとする


また自分がよく忘れがちなDensityとスケーリングを表にしておきます。
mdpiを1とし、それぞれhdpiなら1.5倍、ldpiなら0.75倍させた画像を
用意する形になります。


Densityとスケーリング

端末例 Scale Density Density
Galaxy Nexus 2 xhdpi
HTC Desire HD 1.5 hdpi
HT-03A 1 mdpi
Tattoo 0.75 ldpi

以上、ざっくりとですが少しでも参考になれば幸いです。

DDMS起動方法

DDMSとはAndroidに搭載されているデバッギングツールです。
EclipseのDDMSパースペクティブからでも使用出来ますが、
ターミナルから起動する方法をメモメモ。

ターミナルから起動するにはまず、Android SDK内にあるddms、
こちらのパスを通す必要があります。

export PATH=$PATH:/Applications/android-sdk-mac_x86/tools

自分の環境ではこちらのパスでしたが、SDKの配置場所によってかわりますので
その辺りは各自適当なパスで...。

パスを通せば、毎回
/Applications/android-sdk-mac_x86/toolsまでいってddmsをたたく必要もなく、

$ddms

これで起動してくれます。

警告: Activity not started, its current task has been brought to the front

この前、何これ?ッと思った警告が出たのでメモがてら。
Eclipseでプロジェクトを実行する際、コンソールに赤文字で

ActivityManager: Warning: Activity not started, its current task has been brought to the front

なんど実行しても同じメッセージが出ます。
よくよく調べてみたら、
前回実行時から変更がないのに実行しようとしているため出ている警告、
とのことでした...。

ImageViewの警告について

ImageViewとは画面に画像を表示する際に使用するViewのクラスです。

java.lang.Object
android.view.View
android.widget.ImageView

Bitmapクラスオブジェクトを生成しJavaコードでも作れるんですが、
ここはリソースIDで作る場合を想定します。
画像のリソースは「res/drawable/」に配置するとし、
その画像を使用するためにXMLにImageViewタグを追記します。

 <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:gravity="center_vertical"
        android:scaleType="fitXY"
        android:src="@drawable/imageView">
</ImageView>

で、これなんですが
[Accessibility] Missing contentDescription attribute on image
っていう警告がEclipseで出ちゃいます...。
警告なんで無視してもアプリ自体は起動しますが、何か気持ち悪いですよね。

解決策としては、ImageViewタグ内に、

android:contentDescription="anyStringValue"

と追記してやれば警告が消えてくれます。

アクセスビリティ向上のための警告でしょう。
要は数あるAndroid端末で、画像が表示されない場合
用意してあるテキスト情報で代替してあげましょう、といったもの。

"Waiting for Debugger "

Eclipse上でいつものように作業をしてて、いざ"実行"すると

Waiting for Debugger Application XXXX (XXXX) is waiting for the debugger to attach. 

というアラートが...。

ブログ開設するまでしらばくJavaを触ることもなくて、
本日久々にAndroidで作ってたら初めて遭遇しました...。
前は全くでなかったんですが、たまたまですかね。

そもそも意図的にデバッグモードをたちあげてやるにはAndroidManifest.xml内に

android:debuggable=”true”

を追記してやる必要があって、
自分で無意識に書いてたのかなぁと確認してみても見当たらない...。

で、色々調べたんですがEclipse自体を再起動してやれば出なくなるとか。
ただ再起動後は出なくなったんですが、またしばらくやってるとたまーに再発したり。
詳しい原因理由等がわからないので引き続き調査。

ターミナルからブラウザ起動

私自身、かれこれ10年近くWindowsを使ってたんですが、
今の職場についてからは公私ともにMacを使うようになって
今では完全こちらがメインOSに。
そうなるとやっぱりTerminalをいじる機会が多くなってくるわけでして。



そこでいくつか便利な設定を紹介。

Mac OS X10.2以降のデフォルトシェルはbashで、
自分がどのシェルを利用しているかは以下のコマンドで確認出来ます。

$echo $SHELL
/bin/bash

bashに関する詳細は省きますが、
このシェルプログラムの設定ファイルは「.bashrc」になります。
※ファイルがない場合はターミナル上でvim .bashrcと入力し作成してください。

保存先はホームディレクトリになります。
様々な設定をこの.bashrcに書き込むことで色々と便利になります。



例えばサーバーにsshする際に

ssh -l myserver@domein 

などなど入力するのは面倒じゃないでしょうか。
そこでvimで.bashrcを開き以下のように追記します。

alias ssh_myserver="ssh -l myserver@domein"

これと同じ要領で、
各ブラウザーをターミナルから起動するためのaliasを追記してやります。

alias firefox="open -a Firefox"
alias safari="open -a Safari"
alias chrome="open -a Google\ Chrome"
alias ctags='ctags -R -a -f tags'

またこれらの設定を反映させるにはターミナル上で、

source ~/.bashrc 

と入力する必要があります。
こうすることでターミナル上で、firefox と打つだけでfirefoxが起動してくれます。

ただ毎回、source ~/.bashrc と入力するのもアレなので、
.bash_profile に source ~/.bashrc と追記しておけば
ユーザがログインするたびに実行されるのでsourceを入力する必要がありません。

Android開発環境 〜ADTインストール編〜

Androidを開発する場合、
通常のEclipseにもろもろインストールしなければなりませんが、
ADT(Android Development Tools)のインストールで以前つまずいたので紹介。


インストール自体は簡単で、Eclipse起動後メニューの
「help」> 「Install new Software...」を選択。

アップデートマネージャーが開くので、右側の「Add」をクリックすると
Add Repositoryが開き、「Name」にわかりやすい名前(例:Android Plugin)を、
「Location」に https://dl-ssl.google.com/android/eclipse/ を入力します。

「OK」を押し戻ると、Development Toolsというのが画面真ん中に出るので
チェックをつけて後はインストールするだけです。


ただ、
https://dl-ssl.google.com/android/eclipse/」のリポジトリ
見つからないという場合がたまにあります。

その時は
http://dl-ssl.google.com/android/eclipse/」と、

"s"をとってやります。

それでも見つからない時があるのでその時は直接アーカイブを落としてきて、
そちらからインストールすれば解決します。
方法は同じでAdd Repositoryから「Archive...」をクリックし、
落としてきたZipファイルを直接指定すればOK。