AndroidのXML奮闘日記
2012/03/06 00:00:00基本プログラムは、
コピペ->コンパイル->期待通りの動きじゃない->検索->コピペ
の繰り返し。ほんと最近はソースがいっぱい落ちてて指先ひとつでダウンロード!
でもたまに他の値と組合すと期待通りの動きにならないことの方が多いでごわす!
で、Android手抜きUI講座として、XMLとImageViewでタップ時とタップ時でない時の画像変更について、書いてみましょう~。
他のブログの方のカスタマイズです。
で、私の場合、ボタン3つをandroid:layout_weight="1"を入れて均等配置したかったので、
そのブログの方のソースを拝借して、以下のように。
まず『res/values/style.xml』として、
で、『res/xml』ディレクトリに
上記のstart.xml~output.xmlを配置。内容は
こんな感じで。
『drawable/***』は画像になります。
なるほど。簡単ですっきり!
自分としては、それぞれのイベント処理も一個にまとめたかったんですが、
それぞれ対応のxmlを置きました。
そんで、main.xmlに以下の文を適当に挿入~。
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/start"
>
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/stop"
>
android:id="@+id/output"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/output"
>
で、出力した結果
お☆し☆い!
いやー実におしい。ほんとあとちょっとだよ!
なんだこれなら簡単にいけるじゃんて夕飯食って、
だらだらやってかれこれ4時間、、、
LinearLayoutの値いじったり、ImageViewの値いじったり、
fill_parentとwrap_content入れ替えたり。
全くかわらね!
で、centerとか指示してても横に伸びたりしてて、これおかしいな~
って思って、style.xmlを
と、したところ
ktkr!
これだよ。私の望んでいたのは!!
つまりbackground指定すると、android:layout_weight="1"で
背景画像も伸びちゃってたのよね。
なるほど。
なので、ImageViewなら、srcでそのまま画像を選択できるので、
backgroundじゃなく、srcにするのがおすすめです。
けっこうbackground指定してる人いるけど、なんでだろ?
画像が伸びるーって検索ワードいれたけどひっかからなかったので、
泣く泣くソースとにらめっこしてた。
ていうかこのxmlが使いづらくて触りたくなかった><
検索でここにたどり着いた方は、参考にしてちょ!ペロペロ
画像をクリックすると下のように『***_on.***』と指定した画像に変わります。
気に入ったら押してね
~こんなアプリ出してます~
Androidアプリを作ってみましょう!
2012/01/09 16:56:00いやほんと1次会で帰る気まんまんだったのに、
気がついたらカラオケにいて、家帰ってきたのが02:00とか…
しかも3次会組もいたな…
今日仕事って言ってた人もいたのに、みんなタフすぎワロタ
ということで、Androidアプリを作ってみましょうでございます。
まず必要なものとして以下を揃えましょう!
1.机
コタツでも可。
2.椅子
座椅子でも可。Aeron Chairなら尚良。
3.パソコン
情強と言われるためにも、i7-2600以上のCPU、16GB以上メモリ、GTX580(SLI)
を最低基準としましょう。
4.モニタ
FPSで勝つる為にも応答速度が速い物かつ、27inc以上にしましょう。
5.インターネッツ
ムフフな動画などを見るためにも、100Mbps以上の最強回線を探しましょう。
6.無線LAN
トイレからもコーディングできるように無線LANを設置しましょう。
7.クレジットカード
Android Marketに登録する際に必要になります。
※企業用アプリや個人でアプリを使う際には、登録は不要です。
ここがiPhoneと大きく違うので、スマートフォンやタブレットを使った
企業用アプリの開発が、大変容易です。
Androidアプリをコンパイルすると、binの中に『xxx.apk』と言うファイルができるので、
それをインターネット上にアップしてダウンロードすればインストールできます。
以前Basic認証をかけたところにアップロードしたのですが、インストールできず、
同様の記事を見かけたことがあります。
8.布団
快適な睡眠がとれるようにしましょう。西川なら尚良。
以上を揃えたら、『Android 開発』でぐぐりましょう。
出てきたサイトをじっくり読み、もろもろをインストールし、準備しましょう。
そしたら、Eclipseを起動して、
File->New->Android Projectを選択します。
すると以下のような画面になるので、
1.Project name
アプリ名ではありませんので、好きな名前を付けて大丈夫です。
2.Build Target
使いたいAPIなどが特に決まってない場合は、『1.6』もしくは『1.5』で大丈夫です。
3.Package name
他の方のブログで結構軽視されてますが、かなり重要です。
Android Marketでこの値が一意となり、アプリを認識するので、
ドメインを持ってる方はドメインを絡めた名前にするのがよろしいです。
Android Marketにて、
https://market.android.com/details?id=xxx
のxxxに当たる名前となります。
4.Finish
以上、1~3までの工程を終えるとクリックできるようになり、プロジェクトが完成します!
お疲れ様でした!
次回はまた気が向いた時に、続きを執筆したいと思う今日この頃ですが、
早めにTwitter4Jのことを書こうかなと。
気に入ったら押してね
~こんなアプリ出してます~
Androidの解像度について
2012/01/09 16:56:00前からAndroidの解像度についてイロイロ調べてて、
ちょっとまとめようと思っていたので、書いていきたいと思います。
なんといいますか、
解像度統一しろや!
もうね。この一言に尽きる。
昔から携帯の開発を
最近dpiって言葉を聞くけど、AppleがiPhoneのネタなくなって、
情弱を騙す為に使ったのがきっかけだと思う。
dpiとは、『dots per inch』で、dotという最小単位が1inchの長さにどれだけ入るかという
単位であり、元々は印刷する時等に使われてた物です。
Androidでのdpiの使われ方がちょっとあれなので、覚えておくとキャバクラとかでもてるよ!
んで、本題に入るぜ!
Androidの解像度と画像の記事でよく見かけるのが、
『このdpiを参照して拡縮するといいよ』
とあるんですが、去年の話なのですが、
IS03でデバッグしてた時に、画像とかが変な風に表示されてました。
その時、AVDでも確認しましたが、
hw.lcd.density: 160
で設定してる時と同じ症状でした。
(現在、検索すると320でAVDを設定してる人もいます。なんでだろう…)
こういうことがあったので、この数値を当てにしない方が良いのかなと。
特に、sharpやsharp、sharp製は怪しい。
では、どうするのか?
3択-一つだけ選びなさい
答え①ハンサムのオレは突如画期的なアイデアがひらめく
答え②仲間がきて助けてくれる
答え③どうにもならない。現実は非情である。
答え③
どうにもなりません。あきらめましょう…
と言いたい所ですが、いくつか方法があります。
良かったですね!
こんなくだらないブログをわざわざ読んで下さった方々の為に、以下の方法を。
①drawable-hdpi、drawable-mdpi、drawable-ldpi等に最適化した画像を用意する
②drawable-nodpiというディレクトリを設定し、画像を放り込む
③dpiを使わない方法
ゲームのように大量に画像がある場合は、①の方法を使うと死にます。
ゲームでドット画を再現したい場合は②を使うのがおすすめ。
(CAT FANTASYでは②を採用しています)
※②を使った場合、解像度が高い携帯では基準にした画像で表示される為小さくなります。
で、今回③の方法を詳しく説明したいと思います。
現在、1024*720というアホな解像度のスマートフォンが出てきたということですが、
自分は800*480を基準とし、それ以上に対応と言う形が無難だと思ってるので、
そのやり方を説明します。
まず画像を全部『drawable-hdpi』に放りこみます。
int PX = 64;
// 画面情報取得
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
// 画像取得
BitmapFactory.Options op = new BitmapFactory.Options();
op.inTargetDensity = DisplayMetrics.DENSITY_HIGH;
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.gazo, op);
// 画像表示
Canvas.drawBitmap(bmp,
new Rect(0, 0, PX, PX),
new Rect(0, 0, PX*width/480, PX*width/480),
null);
解説
64*64の画像を表示する時のロジックです。
8行目の『DisplayMetrics.DENSITY_HIGH』を指定してるのは、『drawable-hdpi』に画像がある為です。
このようなゲーム画像を表示したい時にも対応できます。
多分…
なんか今調べたら、540*960や1024*600という変な解像度がいっぱいある…
せめてアスペクト比を統一して下さい・・・
気に入ったら押してね
~こんなアプリ出してます~
BLOG内検索
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
カテゴリー