• 検索結果がありません。

Android osの歴史 1.6から2.3まで携帯のみ 3.0 タブレットのみ 4.0 タブレットで培ったUIなど の技術を携帯でも 使えるとうにと APIなんかが統合された

N/A
N/A
Protected

Academic year: 2021

シェア "Android osの歴史 1.6から2.3まで携帯のみ 3.0 タブレットのみ 4.0 タブレットで培ったUIなど の技術を携帯でも 使えるとうにと APIなんかが統合された"

Copied!
43
0
0

読み込み中.... (全文を見る)

全文

(1)

Android 4.0 でのアプリの作り方

といっても

Compatibility(互換性Sdk)

で作ろう!

(2)

Android osの歴史

1.6から2.3まで携帯のみ

3.0 タブレットのみ

4.0

タブレットで培ったUIなど

の技術を携帯でも

使えるとうにと、

APIなんかが統合された

(3)

Android 4.0 以下のバージョンで全体の98.4%

なので、

Android 4.0 の SDK で開発すると今のところ動く機種が少ない

なので、

Compatibility(互換性)で開発しまっす

(4)

Compatibility って?

android-support-v13.jar を組み込みます

Android 1.6 で、

Android 4.0の見た目、動きができます。

(一部できないけど・・)

Compatibilityがあることで、

Android 4.0でしか使えない機能がほぼ

なくなった。

(5)

android-sdk-windows

- extras

- compatibility

- v13

- android-support-v13.jar

のファイルを

外部

jarの追加

でいれます

(6)

なんで、そんなめんどくさい

Compatibilityなんてつかうの?

僕の場合、

見た目がいい感じ

Fragmentが使える -> タブレット対応ができる!

めんどくさいことが解消されてるところもある

(7)
(8)

Android 4.0 今までの画面

(9)

大事件発生!

Menuがなくなる!

(10)
(11)
(12)
(13)

本田さん情報

あまり

Menuは使われてないとのこと。。。

(14)
(15)
(16)

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" /> <application ... > ... </application> </manifest> 必ず android:targetSdkVersion="11" を書くこと! 書くと、システムは holographic テーマを各アクティビティに適用し、 各アクティビティにはアクションバーが加わる

どうやったらいいの?

(17)

どうやったらいいの?

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// TODO 自動生成されたメソッド・スタブ

super.onCreateOptionsMenu(menu); {

MenuItem mi = menu.add( "menu1" );

mi.setIcon( android.R.drawable.ic_delete ); }

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// TODO 自動生成されたメソッド・スタブ

super.onCreateOptionsMenu(menu); {

MenuItem mi = menu.add( "menu1" );

mi.setIcon( android.R.drawable.ic_delete ); MenuCompat.setShowAsAction(mi, 1 );

(18)
(19)

2.2で実行したらこんなの

Android4.0じゃないと

(20)

ActionBarは

Android 4.0で動かさないと

でないので、

採用見送って、

自分で作りました。

右上にボタンあれば

それっぽい

じゃん!

(21)

大事件発生!

Menuボタンがなくなって・・・

(22)

Recent Tasks とは?

2.3以下では

ホームボタン長押しで

表示されていた機能

今まで起動したアプリで、

ホームボタンで終わらせた

アプリのみを列挙して

アプリ → 別アプリへと

移れる機能

普通は、

アプリ → ホーム画面 →

別アプリのアイコンクリック

→ 別アプリの順

(23)

Android 4.0 の

RecentTasks

長押しでは

なくなった!

(24)

MENUボタンがなくなって

(25)

Android 4.0のRecent Tasksは強力!

今まではホームボタンで終わらせたアプリ6個だけ列挙

しかし!

一度立ち上げたアプリならばすべて列挙!

アプリ → 別アプリ の遷移がめっちゃ楽!

僕の一押し機能!

(26)

Recent Tasksの注意点

Static変数使うとやばし

staticは禁止です。

(27)

Activity B

Activity A

Static String Text = “A” Text = “A”

タスクキラーでアプリを殺す

Activity A から始まる

いままでの動き

(28)

Activity B

Activity A

Static String Text = “A” Text = “A”

タスクキラーでアプリを殺す

Activity B から始まる!

Textは null になっててNullPointer でエラー

Android 4.0

(29)

Static は使わずにちゃんとIntentで値

を渡そう!

じゃないと

Android 4.0ではRecent Tasksボタン

をユーザーが使いまくるので、

NullPointerで

(30)
(31)
(32)

もし、

Activity にそのままコードを書いちゃうと、

タブレット対応したい場合、

Fragmentに書き直し

になっちゃいます。

非同期でダイアログだして処理するようなことがあって、

画面の横と縦を切り替えるとエラーがでたりするのを

回避できる

などなど

(33)

Activity

リストの

Fragment

データの詳細

Fragment

(34)

Fragmentの書き方

public class FragmentTest extends Fragment {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 最初の1回だけ呼ばれる

}

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

// ActivityのViewとかの準備ができるたびに呼ばれる

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

super.onCreateView(inflater, container, savedInstanceState);

// Fragmentで表示するViewを設定するだけ

View v = inflater.inflate( R.layout.activity_list, null);

return v; }

(35)

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data); }

@Override

public void onPause() {

super.onPause(); }

@Override

public void onResume() {

super.onResume(); }

(36)

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.example.news.ArticleListFragment" android:id="@+id/list" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.news.ArticleReaderFragment" android:id="@+id/viewer" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout>

Fragmentをレイアウトで貼りつける

(37)

利点はなにがあるの?

すきな場所に貼れる(

Tablet UIのため)

横向きになったときに、

Activityは破棄されるけど

Fragmentは破棄されない。

→ 変数もそのまま維持

→ オブジェクトもそのまま維持

→ スレッド処理してもエラーでない

Activityでも回避方法あったけど、

コード書くのがめんどくさい

!

(38)

String mText;

int mNumber;

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

//変数を一時保存するとき

outState.putString( "mText", mText ); outState.putInt( "mNumber" , mNumber ); }

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

// 変数を復帰させるとき

mText = savedInstanceState.getString( "mText" );

mNumber = savedInstanceState.getInt( "mNumber" ); }

(39)

public class Test extends Activity { String mText;

int mNumber;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Object[] obj = (Object[])getLastNonConfigurationInstance();

if ( obj != null ) { mText = (String)obj[0]; mNumber = (Integer)obj[1]; } } @Override

public Object onRetainNonConfigurationInstance() {

super.onRetainNonConfigurationInstance();

// オブジェクトを1つだけ保存できる

Object[] obj = new Object[2]; obj[0] = mText;

obj[1] = mNumber;

return obj; }

(40)

僕が作った

RefNoteは

Fragmentの中のレイアウトにFragment貼ったり

Fragmentの貼り替えでTabのようにしたり

Activity1つで、中身だけ貼り替えてるだけにしたりしてます

TabletのUIも作ってるけどめんどくさくなった・・・

(41)
(42)
(43)

Fragmentにより、新しい使いやすい

Uiが使えます!

Fragmentを是非つかいましょう!

ありがとうございました!

参照

関連したドキュメント

スライダは、Microchip アプリケーション ライブラリ で入手できる mTouch のフレームワークとライブラリ を使って実装できます。 また

携帯端末が iPhone および iPad などの場合は App Store から、 Android 端末の場合は Google Play TM から「 GENNECT Cross 」を検索します。 GENNECT

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

それでは資料 2 ご覧いただきまして、1 の要旨でございます。前回皆様にお集まりいただ きました、昨年 11

現行の HDTV デジタル放送では 4:2:0 が採用されていること、また、 Main 10 プロファイルおよ び Main プロファイルは Y′C′ B C′ R 4:2:0 のみをサポートしていることから、 Y′C′ B

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

高さについてお伺いしたいのですけれども、4 ページ、5 ページ、6 ページのあたりの記 述ですが、まず 4 ページ、5