Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Androidのライブ壁紙について

on

  • 18,796 views

 

Statistics

Views

Total Views
18,796
Views on SlideShare
18,555
Embed Views
241

Actions

Likes
3
Downloads
26
Comments
0

2 Embeds 241

http://yoropan.com 238
https://twimg0-a.akamaihd.net 3

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Androidのライブ壁紙について Androidのライブ壁紙について Presentation Transcript

  • Androidのライブ壁紙について
  • ライブ壁紙の仕様Android:OS2.1以上バックグラウンドの「サービス」として動く。他のアプリがアクティブになるとお休みします。ネイティブ描画、OpenGL描画が使えます。今のところFlashは使えないようですがBitmap、Matrixなど似た様なクラスがありTimerで廻っているビューに描いていく感じ。設定画面を作ってパラメータをいじったり、通信させて共有なんてことも出来ます。なので、ネイティブ描画だけでも結構遊べると思います。まとめサイト:LiveWallpapers.orghttp://www.livewallpapers.org/Free Android 2D OpenGL Game Engine :AndEnginehttp://www.andengine.org/blog/list-of-andengine-apps-and-games/
  • ライブ壁紙のサンプルソース Android SDK | Android Developers http://developer.android.com/intl/ja/sdk/index.html SDK sample CubeLiveWallpaper android-sdk-windowsdocsresourcessamples2.8 CubeLiveWallpaper - ライブ壁紙 - ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/resources/samples/samples-index/cubelivewallpaper-index
  • ライブ壁紙のサンプルソース サンプルプロジェクトを読み込む手順 1.Eclipseでファイル>新規>AndroidProject 2.Createprojectfromexistingsampleを選択 3.ターゲット「Android2.1-update1」を選択 4.プルダウンからCubeLiveWallpaperを選択 5.終了を押す。以上。
  • 解像度 public class DispToPixel { DispToPixel() { } public static int Convert(Context mContext, float pixel) { // Convert the dips to pixels final float scale = mContext.getResources().getDisplayMetrics().density; return (int) (pixel * scale + 0.5f); } }指定したいピクセル数をdip (端末の解像度におけるピクセル)への変換する2.複数画面のサポート-ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/android/practices/screens_support#screen-independence
  • 画面のピクセルサイズWindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);Display disp = wm.getDefaultDisplay();int width = disp.getWidth();int height = disp.getHeight();端末の回転に応じて動きをつけるもの以外基本、向きは固定なので横長なのか縦長なのかが分かる。あとは描くだけ。Let’sdrawing!画面サイズを取得する-TechBoosterhttp://techbooster.jpn.org/ui/921/
  • 設定画面設定画面は専用のクラスやレイアウト、保存の仕組みがセットで用意されている。自分が作りたいUIと合わない場合、データの取り回しやUIとの兼ね合いを図りながら、ゴリゴリ作ります。例)右図の「背景色の変更」はボタンをレイアウトに色数分newして押したボタンの色を文字列で保存しています。データを簡単に保存する方法(Preference編)-TechBoosterhttp://techbooster.jpn.org/application/468/Taosoftware:AndroidPreference(プリファレンス)一覧http://www.taosoftware.co.jp/blog/2009/04/android_preference_1.html
  • 設定の保存|SharedPreferences public static SharedPreferences sp; 感覚的にはASでいうところの sp=getSharedPreferences(”settings”, 0); SharedObjectに似ている。 Editor ed = sp.edit(); //背景色 ed.putInt(”bgcol”,TypographyWallpaper.bgcol); 値は端末にXMLファイルとして //カラーテーマの色の値 保存される。 ed.putString(”kuler”,color_sp); //保存を実行 ed.commit();setting.xml
  • 設定の保存|SharedPreferences エミュレーターで設定ファイルを 確認できる。 /data/data/パッケージ名 /shared_prefs/setting.xml保存ファイルの設計を予めやっておく。あとから変えるとアプリの再インストールが必要になる。
  • 設定画面のカスタマイズビットマップ画像は解像度ごとに作成が必要。ボタンなどの簡易なグラフィックはShapeDrawableで表現すると解像度ごとに作らなくてよい。形状:四角、角丸四角、丸、リング塗り:ベタ、グラデ(線形、放射、sweep)その他:レイヤー、クリップ、回転(45度毎)、アニメーション難点は確認が面倒な点。(何らかのツールが必要?3.5.3 Drawable リソース - ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/android/guide/resources/available-resources/drawable-resource3.5.1 アニメーションリソース - ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/android/guide/resources/available-resources/animation-resource
  • 設定画面のカスタマイズ|リソースAndroidのdrawabl<?xml version=”1.0” encoding=”utf-8”?><layer-listxmlns:android=”http://schemas.android.com/apk/res/android”><item><shape android:shape=”rectangle” > <padding android:left=”0dip” android:top=”5dip” android:right=”0dip” android:bottom=”5dip” /> <solid android:color=”#00000000”/> <size android:width=”32dp” android:height=”32dp” /> </shape></item><item>....</layer-list>
  • ユーザーの解析|Google Analytics Googleが提供しているライブラリを 使う。 ページビュー、イベントトラッキング などを設定できる。public static GoogleAnalyticsTracker tracker; 数時間後から結果が得られる。tracker = GoogleAnalyticsTracker.getInstance(); // デバッグ用 tracker.start(”UA-xxxxx-2”, 60, this); デバッグ用の設定がないため、 tracker.start(”UA-xxxxx-1”, 60, this);//ページビュー デバッグ用のサイトを追加すると切り tracker.trackPageView(”/Setting”); 替えが楽。//イベントトラッキングtracker.trackEvent(”ChangeMessage”, // Category “Change”, // Action “count”, // Label 1); // Value
  • ユーザーの解析|Google AnalyticsAndroidアプリ内での行動解析ーGoogleAnalyticsforMobileApps|AndroidTechfirmLabhttp://labs.techfirm.co.jp/android/cho/577
  • リストの装飾|Adapter <?xml version=”1.0” encoding=”utf-8”?> <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:padding=”0dip” > <ImageView android:layout_width=”wrap_content” android:layout_height=”fill_parent” android:id=”@+id/li_image” android:layout_margin=”4dip” /> <CheckedTextView android:layout_width=”fill_parent” android:layout_height=”wrap_content” android:id=”@+id/li_name” android:textStyle=”bold” android:layout_toRightOf=”@+id/li_image” android:textColor=”#ffffff” style=”?android:attr/spinnerDropDownItemStyle” android:singleLine=”true” android:ellipsize=”marquee” android:checkMark=”@drawable/checkskin” /> </RelativeLayout>ListViewをカスタマイズする | Android Techfirm Labhttp://labs.techfirm.co.jp/android/cho/751
  • リストの装飾|Flex (Hero) <s:List id=”staList” width=”100%” height=”100%” dataProvider=”{staData}”> <s:itemRenderer> <fx:Component> <s:MobileIconItemRenderer labelFunction=”labelFunc” messageField=”name” iconField=”graphic” iconWidth=”48” iconHeight=”48” decoratorClass=”renderers.Chevron”> <fx:Script> <![CDATA[ private function labelFunc(item: Object): String { return item.callLetters + “!!”; } > </fx:Script> </s:MobileIconItemRenderer> </fx:Component> </s:itemRenderer> </s:List>Mobile List, Scroller and Touch - Flex SDK - Adobe Open Sourcehttp://opensource.adobe.com/wiki/display/flexsdk/Mobile+List%2C+Scroller+and+Touch
  • 設定画面|端末の状態(向き、キーボード)AndroidManifest.xml... <activity android:label=”@string/settings”android:name=”PrefSettings”android:theme=”@android:style/Theme.WallpaperSettings”android:exported=”true”android:configChanges=”keyboard|keyboardHidden|orientation”>...設定画面は端末の状態によっては値がリセットされるので端末の状態をManifestファイルに記述し、画面クラスの内で状態変化をチェックする。向き変更時のアクティビティ再スタート防止|AndroidTechfirmLabhttp://labs.techfirm.co.jp/android/mita/2613
  • デバッグ通知バーに青と緑のアイコンが表示される。(青:CPU/ 緑:メモリ)かんたん。一目瞭然。
  • デベロッパー コンソール|アプリの登録 アプリの説明を書いたら必ず保存を先に行う。「公開」ボタンを先に押すとせっかく書いた説明が消える。
  • SDカードへのインストール <manifest android:installLocation=”preferExternal”> ... </manifest> internalOnly : 内蔵メモリへのインストールのみ許可します。 auto : 内蔵メモリ優先でインストールします。しかし内蔵メモリの容量が一杯 だった場合はSDカードへ保存されます。 preferExternal : SDカードを優先してインストールしますが、SDカードの容量が一杯だっ た場合は内蔵メモリへインストールされます。アプリをSDカードにインストールできるようにする - Tech Boosterhttp://techbooster.jpn.org/application/228/
  • SDカードへのインストール|アプリSDカードにインストールできるアプリを検知・カードへ移動してくれる。アップデートしたものも検知。
  • 多言語への対応|String.xmlを翻訳 日・英を除く 17ヶ国語に自動翻訳 ZIPでローカルに保存
  • 多言語への対応|確認言語リストを選択して簡単に言語の切り替えが可能
  • パフォーマンスTips|配列の生成ASのArray JavaのArray var mlist:Array = [”aaaaaa”,”bbbbbb”]; String[] mlist ={ ”aaaaaa”,”bbbbbb”}; mlist[2]=”cccccc”;//あとから追加可能 mlist[2]=”cccccc”;//エラーJavaのArrayは一度サイズが決められると変更することはできないサイズが変わる場合はArrayListを使う。 ArrayList<String> mlist = new ArrayList(); ArrayList<String> mlist = new ArrayList(); mlist.add(”aaaaaa”); or mlist.add(0,”aaaaaa”); mlist.add(”bbbbbb”); mlist.add(1,”bbbbbb”);
  • パフォーマンスTips|配列の生成 //サイズを固定する500個までOK ArrayList<String>mlist=newArrayList(500); mlist[500];//エラー 501個目ArrayListのコンストラクタに初期容量を指定することで要素の追加処理を高速化-Yukun’sBloghttp://www.yukun.info/blog/2008/03/arraylist-capacity.html
  • パフォーマンスTips|ランダム import java.util.Random; private static Random rand = new Random(); public static int random(int n) { return (rand.nextInt() & 0x7FFFFFFF) % n; }RandomクラスSoCool!iAppliLecture-NextBMhttp://nextbm.web.fc2.com/200808/files/doc/koza/iappli/iappli.htm
  • パフォーマンスTips|AsyncTask(非同期処理)public class Test extends AsyncTask<String, Void, String> { @Override private Activity activity; protected void onPreExecute() { private ProgressDialog progressDialog = null; // バックグラウンドの処理前に実行 private String responseBody; //例)進行中ダイアログを表示 progressDialog = new ProgressDialog(activity); public Test(Activity activity) { progressDialog.setMessage( this.activity = activity; activity.getResources().getText( } R.string.loading)); progressDialog.setIndeterminate(true); @Override progressDialog.show(); protected String doInBackground(String... params) { } // バックグラウンドで実行 @Override protected void onPostExecute(String result) { //例)XMLのパースなど //処理が終了されたら実行 // 進行中ダイアログをクローズ return null; progressDialog.dismiss(); } } } AsyncTaskでユーザビリティを向上させる | Android Techfirm Labhttp://labs.techfirm.co.jp/android/cho/1079
  • パフォーマンスTips|ViewHolder public class ViewHolder { View base; ImageView icon = null; ViewHolder(View base) { this.base = base; } ... ImageView getIcon() { if (icon == null) { //参照がない場合のみ実行 icon = (ImageView) base.findViewById(R.id.li_image); } return icon; } }Adapterの高速化 | Android Techfirm Labhttp://labs.techfirm.co.jp/android/cho/2161
  • パフォーマンスTipsAndroid高速化 テクニックhttp://www.eflow.jp/common/pdf/090828/eflow-android-toku-2-3sho.pdf