More Related Content
みゆっき☆Think#3 「androidに触ってみるよ!」 アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer Android Lecture #01 @PRO&BSC Inc. Archive: Android アプリ開発入門(2015/6/19 社内勉強会) Similar to 初めてのAndroid開発 (20)
[ABC2012S]Android2x/3x/4x対応アプリ開発Tips (デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能 2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの?〜 プログラマとデザイナが共有すべきUIに関するAndroidの10の機能 Android Hacks - 合宿 Activity 初めてのAndroid開発
- 12. 0 ディレクトリ構成
プログラムファイル
自動生成ファイル
Google API
リソース(xml, 画像, etc.)
アプリケーションを定義するファイル
- 15. 1-2-1 端末による解像度・dpiの違い
Androidは端末によって解像度やdpiが違います
※dpi = dot per inchの略。ピクセル解像度。
800x480
960x540
854x480
480x320
etc.
端末ごとの違いをどう吸収するか。
もっとも影響を受けるのはレイアウトで
す。
- 16. 1-2-2 解像度・dpi別のリソースの管理
異なる解像度・dpiを吸収するためのもっともシンプ
ルな方法は、それら毎に画像等のリソースを管理す
ることです。
Androidには、複数のリソースを用意することで、そ
の端末のdpiや解像度に合った適切なリソースを自動
で読み込む仕組みがあります。
- 17. 1-2-3 具体的な方法
res/drawable-ldpi 100〜140dpi
res/drawable-mdpi 140〜180dpi
res/drawable-hdpi 190〜250dpi
res/drawable-nodpi DPIに依存しない画像
さらに応用すると・・・
res/drawable-320dpi 320dpi
res/drawble-hdpi- 190〜250dpi
800x480 解像度:800x480
res/drawble-hdpi- 190〜250dpi
854x480 解像度:854x480
res/drawble-hdpi- 190〜250dpi
960x540 解像度:960x540
- 23. 2-1 Android4種の神器
Activity
ユーザー・インタフェース(UI)を持つAndroidのア
プリケーション・プログラム
Service
UIを持たず,連続的に情報を提供し続けるプログラ
ム
BroadcastReciever
外部のイベントに対して何らかの反応を返す
ContentProvider
データベースなど,特定の条件下においてデータを
提供する
- 26. 2-2-3 Activityを作成するには
Activityクラスを継承し、onCreate()メソッドを
Overrideします。
public class SampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState
{
super.onCreate(savedInstanceState);
// ViewをLayoutを定義しているxmlからセット
setContentView(R.layout.main);
}
}
- 27. 2-3-1 Serviceとは
主にバックグラウンドで動作し続けるプログラムを
指します。
例)
タイマー機能
音楽再生
目覚まし機能
etc.
- 29. 2-3-3 ServiceのBind
Serviceは通常、一度起動するとActivityからは停止す
ることしかできません。
Bindという機能を使うと、ActivityからServiceが提供
するメソッドを実行することができます。
- 30. 2-3-4 Serviceを作成するには
Serviceクラスを継承し、onCreate(), onBind()を
Overrideします。
public class SampleService extends Service
{
public void onCreate()
{
super.onCreate();
}
@Override
public IBinder onBind(Intent arg0)
{
// bind機能は使用しないのでnullを返す
return null;
}
}
- 32. 2-4-2 BroadcastRecieverを作成するには
BroadcastRecieverクラスを継承し、onRecieve()を
Overrideします。
public class PgcwSampleReciever extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
}
}
- 33. 2-5 ContentProviderとは
データを保存する際に使用します。
端末内のアプリ専用エリアに作成され、アクセス権
限を定義すれば他のアプリからも使用可能です。
システムのデータもこれで作成されています。
- 35. 3-1 Intentとは
プロセスやスレッドを跨いだ処理を簡単に実現する
ものです。
Activityを起動
Serviceを起動
etc.
- 36. 3-2 明示的Intentと暗黙的Intent
明示的Intent
直接起動したいClassを指定して呼び出す
Intent intent = new Intent(context, class);
暗黙的Intnent
明示的に起動させるClassを指定せずにIntentのパラメー
タに起動するClassをある程度推測できるだけの情報を入
れておくと、該当するClassが呼び出される
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(“http://kayac.com”));
startActivity(intent);
- 38. 4-1 メモリとの戦い
Android開発はメモリとの戦いと言っても過言ではあ
りません。
必ずと言っていいほど、メモリ問題にぶつかりま
す。
そのほとんどの原因が・・・
画像
- 39. 4-2 メモリリーク
Androidはメモリを明示的に開放することはできませ
ん
できないといういい方は正しくないかもしれません。
メソッドは用意されているのですが、あてになりません。
どうするか
来たるべきGCの時に備えて、
とにかく無駄に参照し続けるオブジェクトを持たないことです。
- 40. 4-3 開発に入る前のポイント
DEと相談しましょう
画像を多用しなくてもリッチに見える工夫
画像のダイエット処理
画像をダイエットさせるだけで、とっても効果あります
参考になるURL
http://www.textdrop.net/soft/android-avoiding-memory-
leaks/
http://andbrowser.com/development/knowhow/65/eclipse-
android-memory-leak-mat/
http://tomokey.blogspot.com/2011/05/android.html
- 43. とってもよくできています。
とっつきにくさは感じませんでした。
JAVAを対して知らない僕でもそれなりに開発はでき
ました!