[Powered by Google Translate] [セミナー] [アンドロイドアプリ(今ジェリービーンズで!)] [ヨルダンJozwiak] [ハーバード大学] 【これはCS50です。] [CS50.TV] みなさん、こんにちは、とAndroidアプリ(今ジェリービーンズと!)セミナーへようこそ。 ので、それはもちろん、ジェリービーンズと今呼ばれています OSの最新バージョンはジェリービーンと呼ばれています。 去年アンドロイドの話、これは基本的に同じセミナーをしたとき 私は、ジンジャーブレッドのためのデザインパターンや文体の選択肢が提示されました アイスクリームサンドイッチは、一度に出ていたにもかかわらず、 そしてこれは、我々は少し今後について話しますものです。 Androidは、当然のことながら、断片化にはいくつかの問題を有している その最新のGoogleのオペレーティングシステムは、通常 本当に残念なことに、潜在的に前年までのためにユーザーの間で一般的になるつもりはない。 しかし、我々は、理由の多くの話だろうことを無視 AndroidはiOSのよりもはるかに優れています。 さて、我々は、Android対iOSの、について話します あなたは一つのスライドに設定慣れるでしょう方法いくつかの設計パラダイム、、 これと去年の間に大きな違いは、私はちょうどしたいです と協力し、いくつかの概念的なものを通してズーム 次に、オペレーティングシステムとは、本当に基本的な例に入る。 実際には、Googleがあなたの最初のアプリを構築するために説明しているだけの例、 と私たちは一緒にそれを通過すると単に説明します。 私はあなたの多くはCのみでコーディングされている知っているので、Javaがすでにあることを行っている 異なる視点、そしてあなたがあなたの足が濡れるだろうこの方法 そして、できればそれを少しより快適に感じる。 簡単な概要は、Android対iOSの。 アンドロイドでは、25ドルのこの一回の開発費は、そこ 今年は100ドルの事なし。 私はアプリを提出したい場合は、ことを意味して制限は、ありません 私はちょうどそれを提出する、とiOSのためにそこにあるのような承認プロセスはありません。 あなたは、Eclipseを使用してJavaで開発するために取得 これは、クロスプラットフォームであるため、Macを持っている場合、それは、問題ではありません Windows、またはいくつかのLinuxマシン。 もちろん、iOSのでは、MacでXCodeのを使用する必要があります とAndroidは、より多くの人々によって使用されている ので、あなたは、おそらくあなたのアプリケーションが視界のいくつかの並べ替えをしたい場合や、 広告から少しのお金を稼ぐ おそらくAndroidの恩恵を受ける可能性が高くなります。 と常にアンドロイドについて知られている一つのこと iOSのは非常に彼らの方法で固定され、一方、カスタマイズの極端な量です 彼らはどんな小さな側面にわたってセキュリティと制御を維持できるように、 彼らのOSおよび個々のアプリ内のデザイン。 Androidは非常に自由形式であり、多くの非常に多くの可能性があります。 さて、いくつかの設計パラダイム。 iOSのは、錠剤やiPhoneとiPod触るを持って同じように、ここで注意してください サポートしたい場合、彼らはダースのデバイスのように、言って、サポートする必要が 歴史的なものだけでなく、。 アンドロイドを使用すると、数百のデバイスをサポートする必要があり、 そう、Googleが実装しようとされていることがいくつかあります ユーザーエクスペリエンスは、もう少し一貫性を保つために、 しかし、我々はまた、これは断片化の問題があることを意味するかについて話します あなたは常にサポートを意識する必要があること。 断片化は、多数の異なるオペレーティングシステムがあることを意味 同時に、Androidのすべてを実行しているハードウェアが異なるさまざまな携帯電話、 ので、ここで、このグラフは、約6ヶ月間さかのぼる。 うん、6ヶ月、あなたはどのように暗いバンドを見ることができます 底部には夏に出てきたジェリービーン、、です そしてあなたは今、おそらく携帯電話の約2%はそれを持って見ることができます。 アイスクリームサンドイッチは、年以上前に出てきた と携帯電話の4分の1がそれを持って。 数年前から、OSのバージョンを使用している携帯電話の多くは、まだあります。 Googleはユーザーエクスペリエンスを作るために何しようとしていることの一つ アプリ全体でより一貫多くは、ハニカムで始まるさ タブレットのバージョンがある場合、アイスクリームサンドイッチとジェリービーン、 彼らは本当に、このアクションバーを使用することを強調しようとしている それは、あなたがここで一番上に見ることができるものである この小さな設定ボタンを含む右ここですべて、。 これは、設計上の選択です。 今、あなたが3ドットを見るたびに、それは、これをクリックして意味 と設定のいくつかの並べ替えを持って、ドロップダウンメニューがあるでしょう。 私は、このボタンをクリックしたので、これはのみ表示されます。 これは、彼らがもう少し一貫性のあるアプリケーションを作るために使用しようとしているものです 軒並みので、ユーザは、均一な経験のよりよい感覚を持っています。 わかりましたので、場合にあなたはすでにこれを行っていないか、家で観ているとき その後、あなたのコーディング環境をセットアップするには、次の手順に従うことができます。 それはここのウェブサイトに行くかかわるでしょう。 あなたは、Android SDKをインストールするGoogleにすることができます とそこにいくつかの説明に従ってください。 彼らはあなたのすべてを教えてください。 彼らは、あなたがSDK、ダウンロードEclipseのクラシックバージョンをインストールしている もかかわらず、当然のことながら、我々はJavaでコーディングしている。 彼らは、このADTは、Androidの開発ツールは、このいずれかをお勧めし、 あなたのことができますあなたがEclipseにインストールするプラグインです Eclipse内アンドロイドはるか合理経験を持っています。 それはあなたにいくつかのグラフィカル·ユーザー·インターフェースを提供します ビューを設計し、ためにそれはあなたに多くのサポートを提供します とエミュレータと実物のすべてのその種で起動する機能。 アプリケーションフレームワーク。 私は、アンドロイド内のプロジェクトがどのように構成されるかについてお話したいと思います そして我々は簡単な例に入り、そして、できればよ あなたは、任意の時点で質問をし、それの終わりまで快適に感じることができます。 我々は最初のいくつかの専門用語があります。 活動には、アプリを起動したときに表示画面のようなものです。 全体の経験は、活動そのものです ので、画面やビューとして考えることができ しかし、それは実際にそれのソースコード側です。 我々はまだそれをビューの実際のインターフェース部を呼び出します。 それはPSET 7で我々は、コントローラと、ビューを持っていたどのようなソートのだ。 活性は、多かれ少なかれコントローラである とビューは、我々はXMLの面でやっていることです。 それは、そのアクティビティに関連付けられています。 フラグメントは今後アイスクリームサンドイッチに実装何かされています。 それはちょうどビューの部品を取るのアイデアやアクティビティの 我々はできるようにして別々の領域に分けて これらの多くの異なるデバイスのための我々のコードがより使いやすく 我々はサポートする必要があり、それだけでしようとする方法だという また、より多くのコードを考慮。 サービスは、潜在的に音楽やナビゲーションの方向を弾くような背景のものです。 コンテンツプロバイダは、これらは、オペレーティングシステム内のAPIである つまり、このような連絡先情報などの共有データにアクセスすることができ その後意図は、我々が起動するときに我々が使用しますものです 私たちの現在の活動から新しい活動。 こんにちは、Androidは、これは我々がの話だろうというプロジェクトになるだろう。 私は実際にあなたのためにそれをやるし、我々は、我々はボタンをクリックする事をやる いくつかのテキストと新しい活動を立ち上げた。 非常に簡単ですが、私が通って行きたい 何がこのようなプロジェクトに入ります。 新しいプロジェクトを作るときには、Eclipse内で表示されます こんにちは、アンドロイドと呼ばれるこのプロジェクトは、そこだ。 その後、ここにフォルダの全体の束があります。 あなたは本当にに関係しているものは、ソースフォルダです リソースフォルダ、解像度、およびライブラリのためにある程度のlibsフォルダ。 そして、ちょうど私たちはそれと同じページにしている あなたは、新しいプロジェクトを作成した場合、 私はそれがHelloAndroid呼び出したいので、もしあなたが、ここでこの権利を行うことができます そして、それは自動的に私たちのための情報の全体の束を行います。 パッケージ名は、一意の識別子であるために仮定されて あなたが1つを持っていた場合には、通常、Webサイトに関連付けられていることになる。 例えば、私はこのnet.cs50.helloandroidを呼び出します。 そして、私はすでに一度このプロジェクトを行っている。 さて、申し訳ありません。それHelloCS50呼び出してみましょう。 そして、それは我々が作りたいんアイコンのどのようなようなものを聞いてきます。 これは、Androidの開発者ツールのインタフェースのすべてです。 我々は、Eclipseにプラグインを追加したので、のようなものを選ぶことができます 何のアイコン我々はしたい、と私たちが望む場合には、その深さに行くだろう。 しかし、最終的には、単に、プロジェクトを作る すべてがここに表示されます。 私は、他の画面に示したように、 私たちは、ソースフォルダを持っている、と私は、すべてこれはすぐに何を意味するのかについて話します しかし、あなたはすぐにそれがHelloCS50画面に私たちを取ることがわかります。 テキストとテキストフ​​ィールドのレイアウトを追加するためこっちにいくつかのボタンがあります。 これは、XCodeのようなソートのだが、残念ながらありません非常に合理化されたとして。 しかしクリップは、これを行うため、特にあなたの友人とADTなります。 さて、ソースフォルダはどこにある Javaファイルは保持され、これは実際にあなたのプログラムの立ち上げであるされています。 それは基本的にコントローラのようなものだ。 我々は、画面レイアウトをしておこうどこにリソースフォルダまたは解像度が、である 画像、音声、テキスト、アニメーション、他のすべて、LIBS、明らかに、ライブラリ。 とマニフェスト、それはAndroidシステムが知っている方法です あなたのアプリケーションとやり取りする方法。 これは、権限について、それを伝え、どのような活動は、実際に実行されます。 それはあなたのアプリケーションを実行するために必要なすべての重要な情報です。 ソースフォルダは-場合は右ここで見ることができるように我々はそれを展開します。 コー​​ドがデフォルトのコードである、これはルックだろうと例。 我々はそれを呼ばれるので、MainActivity。 デフォルトでは、我々は、この活動がロードと呼ばれる関数である、oncreateメソッドの呼び出しを得る のでoncreateメソッドの呼び出し(savedInstanceState)を呼び出したい。 これは、情報の任意のビットを復元します 場合には、アプリは一時停止されました。 あなたが見ることができ、全体のアクティビティのライフサイクルのチャートがあります あなたはそれの深さでもう少し得るとき、 が、コードの中で最も重要な行このsetContentView機能があります これは、レイアウトのためにリソース·ファイルをロードします。 その後、基本的にやっていることをここでOnCreateイベント、それは言っている 私はこの活動を作成するとき、私は、このレイアウトをロードする。 そして我々はそのレイアウトが第二に何があるかについて話します。 我々はここで、それはまさにこのようになっていることを起動した場合、 、デフォルトで、我々はこれをやっているので、日食とADTは私たちのためにそれをやって これは、私たちのために作成されているすべての定型コードです そして我々は上に移動すると、私たちが好きなように物事を変更することができます。 私が言ったようにリソースフォルダ、、我々はすべてのレイアウトを保持する場所である、 の任意の並べ替えの観点ドロウアブル画像 - それらはドローアブルと、サウンドファイル、メニューと呼ばれています。 それは素敵な並べ替えの方法でXMLの全体の束の方法です。 あなたが見ることができるように、あります。HDPI、LDPI、MDPIとxhdpiフォルダはドロウアブルため。 これらは、異なる画面密度、インチあたりので高密度ピクセルであり、 低密度、中密度、余分な高密度。 これは再び、ですので、我々はすべてのこれらの異なるデバイスをサポートすることができます 理想的には、それぞれ異なる解像度ごとに異なる​​イメージを持つことになります。 我々はさまざまな活動に使用されるすべての異なるレイアウトを含めるどこレイアウトです。 それらはまた、フラグメントレイアウトを含むことができる これは、基本的には部分的な活動を意味しています。 あなたは携帯電話を回転させるたびに、のようなクールな何かをしたい場合 あなたは、それはあなたが別のフォルダとしてレイアウト風景を行うことができます異なるレイアウトを持つようにしたい そしてAndroidは自動的に、リソースフォルダ内のこれらの規則の全体の束を持っている ので、それは、携帯電話の現在の設定に基づいて、別のフォルダを見て知っているだろう あなたが使用しているハードウェアのどのような。 同様に、ここで、この値が-V11と値-V14 およびデフォルト値は、これがあるフォルダの、 よく、単独で値が、これは、オペレーティングシステムのすべてのバージョン間でのデフォルト値になります。 一方、V11とV14は、ハニカムに対応 とアイスクリームサンドイッチ、それぞれ。 繰り返しますが、これらは、これらのフォルダ内に、別の文字列である方法です そしてスタイルは、ので、あなたのアプリの外観をカスタマイズすることができます または潜在的にも、その機能性、それはおそらく悪い考えだろうが、 オペレーティングシステムのバージョンに基づいて。 そして、私はここに、このすべてについて話しました。 繰り返しになりますが、描画可能な、生の、レイアウト、値。 デフォルトは、我々は今、こんにちはAndroidやこんにちはCS50に行けば それだけでこのようになります。 これは、世界こんにちはと言うだろう。 あなたは、Androidのテキストと右ここに見ることができるように 基本的にはラベルであるこのテキストビューのテキスト、 我々はiOSのそれを呼ぶようなものです。 これは変な記法@文字列/ hello_worldのを持っています。 これは、そうすることができ、我々はすべての文字列を抽出しようと我々です アンドロイドでハードコードされた文字列のすべての別のフォルダに、 これはvalues​​.stringsであることを起こる。 我々はここで見れば、我々はここに保存されたハードコーディングされた文字列を持っていることを見ることができます こんにちは世界のため、そしてそれはこんにちは世界と呼ばれ、これは一種のであるだ 必要な多のプラットフォーム間で共通のデザイン決定 文字列は、我々は潜在的に変更できるようにすることの一種である。 私たちは、XMLで私たちのソースコードファイルのFを制御する必要はありません。 我々はチャンスを得るたびに、これを変更できるようにしたい。 このXMLファイルは、strings.xmlには、抽出する方法である そうでなければ私たちのレイアウトリソースになり、ハードコーディングされた文字列 または当社のソースコードである。 我々はアプリケーションに関するこの重要な情報を保持する場所マニフェストです。 それは、パッケージ名が含まれています。それはユニークな識別子である必要があります。 iOSのアプリケーションの名前のためのApp Storeとは異なり、 一意である必要はありません、あなたは、実際にアプリケーションの名前を変更することができます あなたは、私が怒っている鳥から始めそうだとすれば、それを提出した後、 そして私はアップデートを行い、私は新しいバージョンをリリースしたくない 私は、同じリリースサイクルでいる間、私は2それを怒っている鳥を呼び出すことができると思います。 それはちょうど更新として表示される。 ユニークでなければならない唯一のものは、このパッケージ名です いるではない多くの人々が表示されます。 さて、あなたはソースコードを見ていた場合にのみ参照してくださいねまたはエラーのいくつかの並べ替えがある場合。 コンポーネントには、活動を含めるので、宣言する必要が 我々が使用する活動の任意の並べ替え。 これは事の許可のソートです。 Androidは、この厳格なアプリケーションプロセスを持っていないので 代わりにアプリを提出するために、それらは単に、すべてのアクセス許可のオフに基づいて行う およびマニフェストで物事を宣言。 SDKバージョンも重要である。 私たちは、SDKの最小バージョンは何かとしての使用を設定することができます。 明らかに、あなたは、コードを作成したい 新しいオペレーティングシステムのためにとデザイン。 おそらく最新ではない、そうでないかもしれないジェリービーン。 たぶん、あなたは、主にアイスクリームサンドイッチのために設計したい 彼らは、設計上の決定の面でほとんど同じですが 実際のライブラリやAPI。 むしろより人々を持っている オリジナルのAndroidのバージョンのようなドーナツウェイバック時·オブ まだ言うし、アプリケーションをダウンロードし、しようとする使用することが起こる人 それはあなたが最低限のバージョンを設定することができます自分の携帯電話では動作しません そしてそれは、ジンジャーブレッドやアイスクリームサンドイッチであるた あなたが快適提出のを感じたり、何でも。 そして、これはマニフェストの例です。我々は少しで実際のものを見ることができます。 さて、私達はちょうど今、デモを進めるでしょう。 あなたGoogleのAndroidがそのようなあなたの最初のアプリか何かを構築する場合、これはデモです。 我々はそこで起こっているすべてのものを通して行くよ、 と申し訳ありませんが、ちょうどここに任意の範囲まで、Javaを知っているの参考のため? わかりましたので、Javaはほとんどの人がCS50から出てくるための新しいコーディング言語です。 簡単に言えば、それはここで言うことを何度も何度も行くために、 私たちがやりたいことは、このHello Worldアプリケーションを調整するのではなく、ある それがないのは、それが起動しているとのHello Worldは言う それがアクティビティ名だから、それが一番上にこんにちはCS50言う 我々は、テキストフ​​ィールドとボタンを作ることを試みるつもりだ 私たちは、このボタンを押したときに、それがテキストを取ること テキストフ​​ィールドから、新たな活動を立ち上げ、それが言うだろう どんなそのテキストは、活動に言うと、これは比較的簡単です。 それは非常に興味深いではありません。あなたは、このような任意のアプリケーションをリリースするのは嫌だ。 しかし、それはいくつかの設計上の重要な事柄を示しています。 我々は、レイアウトファイルで、マニフェストと対話する必要があります ソースコードを、あなたは別のからつのアクティビティを起動するかを見ることができます。 我々は、我々の最初のアクティビティのレイアウトから始めましょう 私はそれが小さいのようなものだ知っている、 しかし、あなたが今見ることができるように、それはすべてが、それは我々が作成した当社のロゴを持っている アクティビティ名、それが中心に世界のこんにちはと言います。 代わりに、私は最初に、リニアレイアウトにこれを作るつもりです 相対的なレイアウト、これらはすべてのものである あなたには、ルックアップやレイアウトの面でいくつかの点で上に行く価値がある可能性があります。 これは、HTMLのようにたくさんあり​​ます。 我々は、それが、プログラム的な意味の面で知っておく価値は本当にありませんだと述べている しかし、あなたがコントロールすることができますので、さまざまなレイアウトがあります それはスタイルの面でだけCSSのようなものだ。 ちょうどここに美学の面で起こってたくさん、あります そして、ええ、それは、学習の価値だが、それはあなたが調べるべき事のようなものだ あなたが行くとあなたが何か新しいものを必要とするようにあなたが感じるように。 とオフを開始するために、少なくとも私は、ここでADTツールのいくつかを利用することができます。 私は、テキストフ​​ィールドを作ってあげる、私はボタンを作ります。 隣同士に右それらを置く。 彼らはすでに適切にリサイズ。 申し訳ありませんが、再び、、リニアレイアウトと相対的なレイアウトの違いに戻ってくる リニアレイアウトはもう少し機能を提供 空間を満たすと確認しながらの面で 私たちは、水平または垂直のものを配置します。 リニアレイアウトと相対的なレイアウトの大きな違い 相対配置位置は、他のビューに対する相対すべてです そしてそれについての良いところは、それは描画に時間がかかりませんということです オペレーティングシステムは、すべてのコードを見て、これが行くと言うので このここ、ここからの相対。 それは、それが入れ子になったリニアレイアウトの全体の束よりも少ない測定を行うことを意味し その私は物事がここに垂直に行きたいと思った場合、私がしなければならないだろう。 私はすでに水平に行くいくつかのものを持っているので、私は別のリニアレイアウトを必要とするでしょう 垂直巣、それらを、私は相対的なレイアウトをしていた場合、私は言うことができるまで これは右と下に、これらのものには、左にこれを​​維持する。 しかし、私は彼らが今埋めたいので、私は、線形のレイアウトを使用するつもりです そしてあなたは私たちのために、それはすでにこれらの多くのものを見ることができません。 すべてのビューは、幅と高さの特性を持つ必要が これは1の重量を有するように発生し、これが1の重量を有している ので、全体の空間を満たすこと。 しかし、幅と高さが最も重要です。 右ここにこのIDフィールドは、実際のレイアウト内には重要ではありません 我々は相対的なレイアウトを使用して、我々が参照することができますと言っている限り、 別のを参考に1つのビュー位置。 我々は相対的なレイアウトを持っていた場合、我々はこのいずれかの下にこれを置くと言うことができる またはこのIDの上ですが、このIDは重要になるだろう 我々が参照できるので、我々は我々のコードでそれを使用しているとき このようにこれらの個々の景色を眺めることができます。 そして、あなたは、おそらくPSET 7で見たものですタグrequestFocusをを見ることができます。 フィールドの1つのためのオートフォーカスタグまたはそれらの線に沿って何かがあった。 そして一つのことは、もちろん、私たちは、単にHTMLのように行うことができます と通知がADTについての素晴らしいことの一つは、それがここに自動的に補完していることである。 それは、Xcodeでやったが、それはそれにもかかわらず、ない、そうでないかもしれないようにきれいに と私たちはヒントを言うし、それを文字列のいくつかの並べ替えを与えることができる 、メッセージを書き込むように 私はそれを瞬間を与える場合や、また、私はここで少しエラーが出ていることがわかり 我々はこのために文字列リソースを使用する必要があることを言って、 もしそうなら、私はそれが私のためにハードワークの一部を任せる 私は屈折AndroidとエキスAndroidの文字列を実行する、この文字列を選択することができます。 私はそれを、その名前を与えることができ、メッセージを書く とどのようなそれが今それはハードコードされた文字列を置き換えられなかった 文字列のxmlファイル内の文字列を参照すると、 これは、これはここにある今を意味します。 そして私は、この時点で少し些細など余分な作業と思われることを知っている しかし、あなたは、物事の全体の束を持っているときに、文字列の全体の束、 それは本当に重要です、特にローカライズ 私は前述のように、Androidは非常に世界的に使用されるオペレーティングシステムであるため、 あなたは、単に値をアンまたは値-SPを行うことができ 英語やスペイン語や他の言語のためか何か。 そして、あなたはおそらくまだこの経験を持っていなかった 私たちは、Webプログラミングの面ではるかにJavaScriptを使用しませんでしたので、 我々はまた、ボタンのonclickと呼ばれるこの分野を行うことができます そしてこれは私たちのレイアウト内参照する方法です 私たちは、ソースコードで呼び出される特定の機能を望んでいる。 私は、これのsendMessageを呼び出すつもりだ そしてここでの主な活動を意味するこの作業を行うために 私は公開されている関数を作成する必要があります それはレイアウトによってアクセスすることができる。 あなたはそれが何かを返すようにしたくないので、それは無効です。 、我々はそれのsendMessage呼ぶことにします、そして、それは見方をし これは、我々はこの方法を固定できるように文脈のようなものです 我々はそれを実行している個々のビューに。 そして私は、あなたが気づいウェル場合、あなたは気づいていないだろうかわからない しかしこの時点で右ここ このビューは、まだ含まれていないタイプです そしてもちろん、あなたがすべての種類を含めないことについてCS50から知っている。 EclipseのようなIDEの良いところは、ということです それは小さな赤い波線で下線れる型を含めることを忘れた場合 その後あなたのビューをインポートするためのオプションを与える。 制御シフトOであり、それがインポートされます行うための簡単​​な方法 それはする必要があるすべてのファイルを。 今、私たちは、この関数のsendMessageを持っていることを、 MainActivityから新しいアクティビティにメッセージを送信しようとしている、 我々は、このいずれかから新しいアクティビティを起動するための意図を使用する必要があるとしている 従って我々は、おそらくグローバル定数または、特に公共の定数を作成したいと思う それは、私たちは、文字列を参照するつもりだ方法を知って役立つ ので、我々は意図を作成するときに我々だけで、新しいアクティビティを呼び出していない しかし、我々はまた、それを情報の束を与えることができます。 バンドルには、実際にAndroidが使用している用語です それは、それそれは非常に洗練されたデータ型にすることはできません余分なデータを与える言い方だ しかし、我々は間違いなくブール値または文字列または整数を含めることができます。 そういったこと。 ここにこれらの修飾子のいずれかについて、お気軽に、 静的、最終的な、公共。 国民は重要なものです。 それは、我々は、他のソースコードファイルからこの変数にアクセスできることを意味します そのような我々は新しいアクティビティを作成するときのように。 私たちは、このファイル内の文字列を参照することができます。 それは、プライベートなら、それはここで、この個々のファイルに限定されるものであることを意味する。 しかし、我々は余分なメッセージのように、この何かを呼ぶことにします。 今、私たちは、この関数を作った、と我々はボタンをクリックすると、この関数が呼び出されます。 しかし、我々は関数を使用して、明らかに、何もしていない。 私たちが今やってみたいことは、新しいアクティビティを作成することです 実際に発売される活動。 Eclipseでは、私たちは、新しいAndroidの活動、空白のアクティビティを言うことができます。 我々はそれに名前を付けることができます。 それは我々の結果活動呼び出してみましょう。 そして、この階層の親フィールドが指定する方法である どの活動が互いに関連している。 これは、他のアクティビティから起動されますので 我々は、それが親の主な活動を持っていることを指定する必要があります。 そして、私は私たちに語ったであろう、そこに次のフィールドをクリックした可能性が それも含めたことをいくつかのオプションフィールド、 しかしADTについての素晴らしい事は、再び、私はここで下にスクロールしている場合ということです マニフェストでは、このすべてが実際にデフォルトで含まれていたことを覚えて 我々は、もともとプロジェクトを作成したときに、 そして今我々は、これは新しいアクティビティを作成するのではなく、使用したためだけで 我々はこれを行うための彼らのGUIを介して行ってきましたので、私たち自身のクラスファイルを追加する それはすでに、私たちのためにマニフェストにこのすべてを追加 ちょうど今、オペレーティングシステムが文句を言わないことを意味し 私たちは、この活動を起動しようとする。 それはまた、当然のことながら、それを、文字列に表示ラベルを得た。 それは私達のためにバックエンドで多くのことを行います。 とにかく、今、我々は同様にこの結果活性を有すること、 ソースフォルダ内の実際のソースコードファイル、 そしてあなたが見るツー短時間でこれ - 触れることができる 私たちは、この階層の親について、それを言ったので それはこのonOption選択する事で、このフィールドをandroid.r.ide.homeを与えた。 何これは基本的に言っていると、メニューボタンが今そこです その画面の左上隅に 私は、我々は最初のアクションバーの話PowerPointに戻った場合 なぜなら階層親の今ここに戻って小さな矢印あり 私たちは実際に、このアプリを実行した後にツーできるはずですので、これはクリック可能である 戻って、そしてそれはそこに私たちのコードを少し節約する方法です。 今、この井戸の中で、それは一瞬その文句をしているように見える。 その行をコメントアウトしてみましょう。 さて、実際にこれらの2の活動と相互作用するために、 我々は、このデータのすべてを含む意図を作成する必要があります。 のsendMessageで今私は、コードのいくつかのビットを通してクルーズに行くよ と私が行くようことを説明。 意図は、私が言ったように、別のからつのアクティビティを起動する方法です。 意図はタイプです。我々は変数myIntentを作成している。 そして、これは実際に我々は新たな呼び出す必要が理由であるオブジェクトです。 それに慣れるには少し時間がかかる可能性のある、そこに一般的なJavaの使用法です。 これは、我々は、活動やクラスMainActivityを使用していることを意味し そしてそのように意図はそれから起こっている活動を取り 我々はResultActivityを呼び出し、それがために起こっていると活動、、 それは、独自のクラスです。 それが含まれています。 私は前に述べたように、その後、我々は、編集テキストフ​​ィールドにそのIDを与えた そうとテキストビュー、プログラムでキャプチャするために EditTextの中に存在するテキスト 我々はfindViewByIDと呼ばれるこの機能を使用し、 これは、DOMからフィールドを取得しようとするときに使用するだろうことを何かに似ています。 講義では、この程度おそらくダビデは話しています。 しかし、それだけで得るための方法だもの - それは、我々はそれらの分野でこれらの事をタグ付け理由です。 Id.editText1。 それはすでにそこに私のためのオートコンプリートだ。 そして、我々はまた、今、私たちは、フィールドを持っていることをEditTextの、これを含めるよ 私たちのプログラムの中で、すべてのことfindViewByIDは基本的だった あなたは私たちにそのEditTextのへの参照を与えると考えることができます。 今、私たちは、文字列またはメッセージを取得したい 我々は、使用して行うことができますEditTextの内 あなたは次のようにEditTextの考えることができる構造体 - 我々はそれでオブジェクトのJavaと異なる方法の全体の束を呼び出す またはフィールドと属性がそれに接続されている。 私はEditTextの言うとき。それは私にアクセスする機会を与えてくれます 現在のテキストを取得するなどのgetTextなどの方法で、 そのEditTextのにして、その明示的に変換 文字列に、私たちはメッセージを保存している。 今、私たちは、実際に我々はさっき作成した意図を持って何かをしたい。 それは意図で呼ばれているように私は、余分に配置します その、再び、私は前に言ったように、これは、バンドルを作成する方法です データの全体の束を持つ。 余分なメッセージは、我々は、この下を保存しているか知っているので、私たちのタグです そして私は、メッセージを含めています。 そして、我々は実際にそれをパラメータmyIntentを与えることによって、活動を開始することができます。 そして、これは実際に今、私は、Windows 8にアップグレードしたので、活動を開始します そこに簡単に現れるいくつかのエラーであるが、それらを無視しようとするかもしれない。 そして、これはAndroidのエミュレータです。 うまくいけば、コードは実際には瞬間にポップアップ表示されます。 繰り返しますが、これらすべてのささいなことを無視して。 しかし、Androidのエミュレータは、オペレーティング·システムの任意のバージョンをエミュレートすることができます 最古のものから、ドーナツ、ジンジャーブレッド。 これは、ジェリービーン4.1です。 しかし、あなたが今見ることができるように、これは我々が作られたものです。 これはMainActivity、EditTextの、ボタンがあります。 私はここで何かを入力することもできますが、我々はこの時点で何が欠けている? 我々はメッセージを送信するために起こっているMainActivityのフィールドを作った 他のアクティビティに、しかし、この時点で 我々は他のアクティビティで何かを行っていないので、何を受け取ることはないだろう。 我々は先に進む前に、のはその部分を仕上げてみましょう。 私たちが行う必要があります何この結果の活動は、我々が行う必要がありますである我々は、必要がありますです 我々はまた、この活動の中で意図を参照することができます 私たちは本当に簡単です意図をキャプチャする必要があります。 それは、活動クラスに含まれる関数の 私たちは、単に "意図からメッセージを取得します"と言うことができます "インテントmyIntent = getIntent。" そして、これは私たちを今与えるmyIntentはオブジェクトで、 これは、この活動に私たちを率いて意図への参照です。 MainActivityを呼び出しと活動を結果に余分な情報を提供します。 結果活動は今、ここでそれを率いて意図を見 そして我々は、我々は他のいずれかで作成されたメッセージにアクセスすることができます getStringExtra、これは私のためのオートコンプリートます。 そして、我々はタグ付けされた方法を覚えて、そのデータのビット 、、右ここでそれをこの公共の文字列を、このフィールドを与えることであった これは、私たちが実際に含まれている文字列のタグです。 私はMainActivity.Extra_Messageを言うなら それはすぐそこだし、これは、パラメータ名のように一種である 我々は、コントローラからテンプレートにコードを渡されたとき、 ときに我々はタイトル矢印何かを言うと思います。 それはそこにアイデアと同じ種類です。 さて、このことを覚えています。 また、この自動作成または自動生成されたコードを持っていた 途中でテキストビューを含む結果の活動、のために そのこんにちは世界は言う。 我々は潜在的にそれを大きくすることができます。 その最初に行うましょう。 我々はそれに40密度非依存ピクセルを作ることができます。 超巨大だと、見てみましょう。それは大丈夫でしょう。 そして、私たちのコード内で、この個々のテキストビューを参照するために、 我々は、それにIDを与える必要があります と私たちが言うことをやるためには@我々はそれにIDを割り当てることを意味+ ID。 先ほど@ idを言った場合、それは、我々は、すでに存在しているIDを参照していると仮定します そして、この私たちのresultTextViewを呼び出してみましょう。 とXMLでセミコロンや何のための必要はありませんことに気づく。 すべては、これらのタグ内にある。 それは感覚の多くのHTMLと非常に似ています。 それに慣れるには少しかかりますが、最終的にはそれでかなり快適に感じられるでしょう。 我々の結果テキストビューのテキストを更新してみましょう、 我々は、当社の他の活動にその編集テキストフ​​ィールドを得ていたときに我々が行ったように MainActivityでここに我々はまた、同様に、意志 我々は、IDによってビューを見つけることができます。 Rは、私は前にこれを言及しなかった場合には、当社のリソースフォルダへの参照である、 その後IDは、リソースフォルダ内のすべてのもの、すべてのIDへの参照です とresultTextView。 そして、ちょうど前のように、resultTextViewは、オブジェクトである これは、それに関連付けられているすべてのこれらの特性を有していることを意味します。 私たちは、このテキストフ​​ィールドまたはテキストビューのエディットテキスト用にgettextを使用する場合 私たちは実際、SetTextメソッドを使用することができます そして我々はすでに、意図からのメッセージを見つけました ので、私は、メッセージを言うことができる、これは実際にメッセージを設定します。 これは、起動する時間を取るし、我々は、それがクラッシュしたかどうかを確認することができます しかし右がそのプロセスについてのご質問、相互作用のその種? いろいろな意味で、それは簡単です。 私が何かを通過している理由は、比較的単純な レイアウト間の相互作用を見ることを得るので、再び、です ソースコードは、どのように参照の事 と、おそらくJavaがどのように動作するかそこにはほとんど露出を得る。 、私は実際にOHAIように、ここで何かを入力して、私はボタンをクリックした場合 それは、新しいアクティビティを起動し、そのテキストビューがOHAI言う。 それは、非常にシンプルですが、うまくいけば、この例の後 あなた、この相互作用がどのように動作するかを参照してくださいのようなもの、およびファイルの今では混乱 これらのすべてのプロジェクトフォルダの左側に、うまくいけばあなたは今を見てどこを知っています。 これはあなたのソースコード領域です。 レイアウトは本当にあなたが画像を含むまでに対処する唯一のものです 文字列が含まれ、ドロウアブルまたは何、価値観、 我々が述べたように、その後のスタイルは、CSSのようにソートのだものです。 お好きな時に、それに対処しますが、余分な才能を追加すると快適に感じるまで アプリケーションにあまり心配する必要はありません。 ただ、もう一つのことを包み込むようにあなたは間違いなく含まれる - ことになるでしょう あなたはクールな機能を統合し、自分自身にいくつかの余分な保存したいと仮定してコーディングを サードパーティのライブラリを含めることであろう。 ここではシャーロック·ホームズの帽子と少しアンドロイドの男です。 これは、アクションバーシャーロックライブラリです これは、基本的には、以前に見たアクションバーを意味 これは、今ではアイスクリームサンドイッチとジェリービーンで標準です あなたは、古いバージョンでは、ユーザーにユーザーエクスペリエンスのその種を持参する場合 そして、ユーザーがナビゲートする起こっているかを心配するから自分を救う 古いバージョンでそのことがないときは、このライブラリを含めることができます その後あなただけす​​る必要があります、参照ではなくデフォルトアンドロイド アクションバーのためのライブラリは、このサポート·ライブラリを参照します。 あなたがゲームを含めるつもりならScoreloopのでのようなものは、それは素晴らしいことだ。 それはあなたがゲームにリーダーボードと実績を追加することができます。 AdMobがアプリケーションに広告を入れての方法です 場合に、あなたはそれのお金オフを少し作りたい​​。 もちろん、FacebookやTwitterが統合のためにそこにある あなたはエトセトラ、簡単に物事を共有する場合。 Dropboxは、同様に、とGoogle Analyticsはそこにものを見ている図である。 あなたが実際に相互作用しているユーザーを確認したい場合は、それは非常に重要になるだろう あなたのアプリケーションまたはそれは、彼らがどのように相互作用するか、エトセトラと。 Googleは、デフォルトでは、あなたのアプリをインストールしているに関する統計の多くを伝え とどのような彼らが持っている携帯電話、彼らが持っているどのようなオペレーティングシステムのバージョン。 しかし、あなたが日常的にそれを使用しているユーザーを確認したい場合は、どのように彼らはそれを使用 その後、あなたはそのような追跡システムのいくつかの並べ替えを含めるしたいと思う。 あなたのアプリを配布する準備ができたら、 私はあまり深くそれに行く必要はありません。 ここにリンクをクリックして、Googleが再生します。 これは、Androidマーケットであるために使用。 彼らは、Googleのプレイですべてを改名 だから今、あなたはそれに提出してください。 これは非常に簡単です。 あなたは、説明、いくつかのスクリーンショットを含める必要があります。 私が言ったように、iOSのようには承認プロセスはありません。 そしてどこにここから行くには? 私はあなたに本当に簡単な例を示した。 うまくいけば、それはものすごくシンプルなようであれば その後、それはおそらく良い兆候だ。 あなたはまったく私が入力していたかを正確にについて少し混乱したりわからないと感じた場合は それがまた良いですが、ここからGoogleのガイドに行く。 これは、開始するのに最適な場所です。 それは、アプリケーション設計の面で、彼らは何を期待する手順を説明します ユーザーは、通常はそれをどのように相互作用する。 それははるかに自由形式のiOSよりも、私は、と言うだろう テーブルビューは、私がしているかわからないように、それは思われる、それは彼らのパンとバターです。 すべてが上下にスライドするテーブルビューです。 アンドロイドで、彼らは間違いなく人々からそれを見てすることを奨励 異なる視点の全体の束。 このADTにおけるソフトウェア開発キットが含まれている場合 デフォルトでは、Androidのサンプルプロジェクトの全体の束を持っている。 右ここでは、Android、Androidのサンプルプロジェクト。 私はその上でクリックすると、私はサンプルプロジェクトが適用の対象のバージョンを選択することができます。 異なるものの全体の束がここにあります。 これは、アクションバーの互換性から始まり 加速度計再生、バックアップと復元、ブルートゥース、ジェスチャービルダー。 LunarLanderそのままJETBOYは、彼らはあなたを与えるサンプルゲームです。 サンプルアプリケーションの全体の束が、ここにあります それらはすべて、AndroidのAPIのさまざまな側面を対象としています とアイデアは、あなたのアプリケーションを作るようにということです あなたは、Androidアプリを作るAndroidに関するすべてを学ぶ必要はありません。 あなたはあなたが実際に使用しようとしている部品について学ぶ必要があります。 これらのサンプルライブラリを見てください。 コピーと貼り付けのコードを、それを再適用して自由に感じる。 それは、より困難なコードを見て素晴らしいことだ し、それを理解しようと、これは当然のことである理由CS50で 私たちはしばしばあなたにソースコードを大量に与える。 あなたは同じようなライブラリを使用しようとしている場合は、これらのいくつかを見てください その後、独自のコードに適用します。 そしてもちろん、チュートリアルがあります。 チュートリアルを検索します。 私は、高速化するためにあなたをもたらすことができるオンラインの良いものをたくさん発見 フラグメントが本当にあるかと、どのようにそれらを使用することができます。 断片のように、これらの新しいデザインのもののいくつかの、、 あなたは本当にあなたが作っている限り、心配する必要はありません スコーププロジェクトではかなり大。 彼らは、Googleがフェーズインしようとしているものです stackoverflowのは、もちろんあなたの友達です。 うまくいけば、私は、Android上であなたに少しを販売 それを実現することは、単にコーディング言語の面でアプローチするはるかに簡単です。 Javaは、私はObjective-Cのより理解することがはるかに簡単に言いたいです。 Androidは、私はiOSのよりもはるかに成長していると思います。 私が意味する、データはさておき、私が何を考えてから、あまりにもあります。 それは、しばらくの間、周りになるだろう そして、彼らは、彼らの設計サイクルの観点から、数年の背後にある それは彼らがまだこれらのいくつかを作業していることは理解できるの一種ですので、 このアクションバーのような一貫性の質問は、まだ彼らのために新しいものです。 すべて自分のアプリ全体で同じようなユーザーエクスペリエンスを作成するための一種。 うまくいけば、あなたは今、前に進むと、Eclipseを開くことができます と独自のAndroidアプリを作る。 我々は何でも包む前に、誰もが何か質問がありますか? 私は答えは42であることを伝えることができます。 まあ、みんな、そして幸運をコーディング幸せ。 [CS50.TV]