[Powered by Google Translate] [ندوة] [تطبيقات الروبوت (الآن مع هلام الفول!)] [الأردن Jozwiak] [جامعة هارفارد] [هذا CS50.] [CS50.TV] مرحبا بالجميع، ومرحبا بكم في تطبيقات الروبوت (الآن مع هلام الفول!) الحلقة الدراسية. ويطلق عليه الآن مع هلام الفول، بطبيعة الحال، وذلك لأن ويطلق على أحدث نسخة من نظام التشغيل جيلي فول. عندما تحدثت عن الروبوت في العام الماضي، وفعل هذه الندوة نفس الأساس كنت تقديم أنماط التصميم والخيارات الأسلوبية لكعكة الزنجبيل، على الرغم من آيس كريم ساندويتش قد خرجوا في ذلك الوقت، وهذا شيء سوف نتحدث عن الذهاب إلى الأمام قليلا. الروبوت، بطبيعة الحال، لديه بعض القضايا مع تجزئة، وبالتالي فإن أحدث نظام التشغيل جوجل هو عادة لا حقا سوف تصبح مشتركة بين المستخدمين ليحتمل تصل إلى سنة، لسوء الحظ. ولكن تجاهل ذلك، فإننا سوف نتحدث عن الكثير من الأسباب لماذا الروبوت هو أفضل بكثير من ن. حسنا، سوف نتحدث عن الروبوت مقابل دائرة الرقابة الداخلية، بعض نماذج التصميم، وكيف سوف تحصل على مجموعة لكم في شريحة واحدة فقط، والفرق كبير بين هذا العام والعام الماضي هو أنني فقط أريد أن التكبير من خلال بعض الأشياء المفاهيمي العمل مع نظام التشغيل ثم انتقل إلى المثال حقا الأساسية. في الواقع، مجرد المثال أن يصف جوجل لبناء التطبيق الخاص بك أولا، وسوف نذهب من خلال ذلك معا، ووصف فقط. أنا أعرف الكثير منكم قد مشفرة فقط في C، لذلك جافا يجري بالفعل أن تكون وجهة نظر مختلفة، وبهذه الطريقة ستحصل على قدميك الرطب ويشعر قليلا أكثر راحة معها ونأمل. ملخص سريع، الروبوت مقابل دائرة الرقابة الداخلية. في الروبوت هناك هذا الرسم المطور لمرة واحدة من 25 دولارا، لا شيء من هذا الشيء 100 دولار سنويا. لا توجد أية قيود، مما يعني أنه إذا أريد أن يقدم التطبيق، أنا فقط يقدمه، وليس هناك عملية الموافقة وكأنه لا يوجد لدائرة الرقابة الداخلية. تحصل لتطوير مع جافا باستخدام الكسوف، الذي هو عبر منصة، لذلك لا يهم إذا كان لديك جهاز ماكنتوش، ويندوز، أو بعض آلة لينكس. بالطبع، مع دائرة الرقابة الداخلية لديك لاستخدام كسكودي على ماك، ويستخدم الروبوت من قبل عدد أكبر من الناس، حتى إذا كنت تريد التطبيق ليكون نوعا من وضوح الرؤية أو ربما جعل القليل من المال من الإعلانات وربما كنت أكثر احتمالا للاستفادة من الروبوت. وشيء واحد وهذا دائما كان معروفا عن الروبوت هو المبلغ المدقع من التخصيص، في حين أن دائرة الرقابة الداخلية هو ثابت جدا في طرقهم حتى يتمكنوا من الحفاظ على الأمن والسيطرة على كل جانب من جوانب قليلا من التصميم ضمن نظام التشغيل والتطبيقات الفردية. الروبوت هو شكل حر جدا، وهناك الكثير من الاحتمالات أكثر. حسنا، بعض نماذج التصميم. لاحظ هنا فقط مثل دائرة الرقابة الداخلية لديها أجهزة لوحية وأجهزة iPhone وأجهزة أي بود تاتش لديهم لدعم، ويقول، مثل عشرات الأجهزة إذا كنت ترغب في دعم الأشياء التاريخية كذلك. مع الروبوت لديك لدعم مئات من الأجهزة، لذلك هناك بعض الأشياء التي غوغل قد تحاول تنفيذ لجعل تجربة المستخدم قليلا أكثر اتساقا، ولكن سنتحدث أيضا حول كيفية يعني ذلك أن هناك قضايا من التشرذم أن يكون لديك باستمرار ليكون على بينة من دعم. التفتت يعني أن هناك العديد من أنظمة التشغيل المختلفة، العديد من الهواتف المختلفة مع الأجهزة المختلفة بنظام التشغيل أندرويد جميع في نفس الوقت، لذلك هذا الرسم البياني هنا يعود لنحو 6 أشهر. نعم، 6 أشهر، ويمكنك أن ترى كيف أحلك الفرقة على الجزء السفلي هو جيلي فول، الذي خرج خلال الصيف، ويمكنك أن ترى الآن ربما حوالي 2٪ من الهواتف لديهم ذلك. جاء آيس كريم ساندويتش خارج منذ أكثر من عام، وربع من الهواتف لديهم ذلك. لا يزال هناك الكثير من الهواتف التي تستخدم إصدار نظام التشغيل من قبل سنوات. الشيء الوحيد الذي حاول جوجل القيام به لجعل تجربة المستخدم الكثير أكثر اتساقا عبر تطبيقات بدأت مع قرص العسل، والذي هو نسخة قرص، ثم آيس كريم ساندويتش وجيلي فول، انهم حقا تحاول التأكيد على استخدام هذا شريط الإجراءات، وهو ما ترون في الجزء العلوي هنا، كل شيء هنا، بما في ذلك هذا الزر إعدادات قليلا. إنها الخيار التصميم. الآن، كلما رأيت ال 3 نقاط فهذا يعني النقر على هذا، وسوف يكون هناك القائمة المنسدلة، التي لديها نوعا من الإعدادات. وهذا يدل فقط لأنني النقر على هذا الزر. هذا هو الشيء الذي يحاولون استخدامها لجعل التطبيقات أكثر من ذلك بقليل متسقة عبر المجلس وبالتالي فإن المستخدم لديه شعور أفضل من تجربة موحدة. حسنا، لذلك في حال لم تكن قد فعلت ذلك بالفعل أو إذا كنت أشاهد في المنزل ثم يمكنك اتباع هذه الخطوات لإعداد بيئة الترميز الخاص بك. وسوف تشمل الذهاب الى الموقع هنا. يمكنك جوجل تركيب الروبوت SDK واتباع بعض الأوصاف هناك. يقولون لك كل شيء. لديهم تثبيت SDK، تحميل الكسوف الإصدار الكلاسيكي، على الرغم من ذلك، بطبيعة الحال، نحن الترميز في جاوة. يوصون هذا واحد، ومن ثم هذا ADT، وأدوات تطوير الروبوت، هو البرنامج المساعد الذي تقوم بتثبيته في الكسوف الذي يسمح لك ل لديها خبرة أكثر من ذلك بكثير مبسطة مع الروبوت في غضون الكسوف. وسوف تعطيك بعض واجهات المستخدم الرسومية لتصميم وجهات النظر، وأنها سوف تعطيك المزيد من الدعم والقدرة على إطلاق مع المحاكي وجميع هذا النوع من الاشياء. إطار التطبيق. أريد أن أتحدث عن كيفية هيكلة المشاريع داخل الروبوت، ومن ثم سنذهب إلى مثال سريع، ونأمل يمكنك طرح الأسئلة في أي لحظة وتشعر بالراحة من قبل نهاية لها. لدينا بعض المصطلحات أولا. هذا النشاط هو مثل الشاشة التي تراها عند إطلاق التطبيق. التجربة برمتها هو النشاط نفسه، لذلك كنت أفكر في الأمر على النحو الشاشة أو وجهة نظر، ولكنها في الواقع رمز مصدر الجانب منه. ما زلنا استدعاء واجهة جزء الفعلي من وجهة نظرة. انها نوع من مثل كيف في pset 7 كان لدينا وحدة تحكم ثم طريقة العرض. هذا النشاط هو أكثر أو أقل وحدة تحكم، والرأي هو ما نقوم به من حيث XML مقترن هذا النشاط. شظايا هي شيء المنفذة في آيس كريم ساندويتش للمضي قدما. انها مجرد فكرة أخذ أجزاء من رأي أو النشاط وتقسيمها إلى مناطق منفصلة حتى ما في وسعنا جعل الكود أكثر قابلية للاستخدام لهذه العديد من الأجهزة المختلفة أن علينا أن ندعم، وانها مجرد وسيلة لمحاولة عامل أيضا إلى مزيد من التعليمات البرمجية. الخدمات هي أشياء أساسية مثل تشغيل الموسيقى أو الاتجاهات الملاحة المحتملة. موفري المحتوى، وهذه هي واجهات برمجة التطبيقات داخل نظام التشغيل التي تسمح لك بالوصول إلى البيانات المشتركة مثل معلومات الاتصال، ومن ثم وجود نية شيء سنستخدم عندما نريد أن إطلاق نشاط جديد من النشاط الحالي لدينا. مرحبا الروبوت، وهذا سيكون المشروع الذي سوف نتحدث عنه. سأفعل فعلا بالنسبة لك، ثم سنفعل الشيء حيث أننا انقر على زر مع بعض النصوص وإطلاق نشاط جديد. واضحة جدا، ولكن أريد أن أذهب من خلال ما سوف تذهب إلى مثل هذا المشروع. عند تقديم مشروع جديد سترى داخل الكسوف هناك هذا المشروع ودعا مرحبا الروبوت. ثم هناك مجموعة كاملة من المجلدات هنا. تلك التي كنت قلقا حقا مع من المجلد المصدر، المجلد الموارد، والدقة، وإلى حد ما المجلد يبس للمكتبات. وفقط لذلك نحن على نفس الصفحة مع أن إذا كنت لإنشاء مشروع جديد، يمكنك القيام بذلك هنا، لذلك إذا كنت تريد أن نسميها HelloAndroid، ومن ثم فإنه في مجمله مجموعة من المعلومات بالنسبة لنا تلقائيا. من المفترض أن يكون معرف فريد اسم الحزمة التي عادة ما تترافق مع الموقع، إذا كان لديك واحدة. على سبيل المثال، وسوف نسمي هذا net.cs50.helloandroid. وسبق لي أن قدمت هذا المشروع مرة واحدة. حسنا، آسف. دعنا نسميها HelloCS50. وبعد ذلك سوف يطلب أشياء مثل أي نوع من رمز أننا لا نريد أن نجعل. هذا هو كل شيء بسبب واجهة الروبوت المطور أدوات، البرنامج المساعد أن أضفنا إلى الكسوف، حتى نتمكن من اختيار الأشياء مثل رمز ما نريد، والتي من شأنها أن تذهب إلى هذا العمق إذا كنا نريد. ولكن في النهاية، وجعل مجرد مشروع، وكل شيء يظهر الحق هنا. وأنا أظهر على الشاشة الأخرى، لدينا المجلد المصدر، وسأتحدث عن ما يعنيه كل هذا في وقت قريب، ولكن يمكنك أن ترى أن على الفور كان يأخذنا إلى الشاشة HelloCS50. هناك بعض الأزرار أكثر من هنا لإضافة النص والنص تخطيطات الميدان. انها نوع من مثل كسكودي ولكن للأسف ليس تماما كما مبسطة. لكن لقطات سوف يكون صديقك، وADT بشكل خاص للقيام بذلك. حسنا، المجلد المصدر هو المكان وتعقد الملفات جافا، وهذا هو في الواقع إطلاق البرنامج الخاص بك. انها في الاساس مثل وحدات التحكم. المجلد الموارد أو الدقة هو المكان الذي سوف تبقي تخطيطات الشاشة، الصور والأصوات والنصوص والرسوم المتحركة وكل شيء آخر، يبس، من الواضح، والمكتبات. واضح، انها الطريقة أن نظام أندرويد يعرف كيفية التفاعل مع التطبيق الخاص بك. ويحكي أنه حول الأذونات وما هي الأنشطة التي سوف يتم تشغيلها في الواقع. انها كل المعلومات الأساسية التي من الضروري لتشغيل التطبيق الخاص بك. المجلد المصدر، وإذا نحن توسيعه كما ترون هنا. ومثال ذلك مدونة سيبدو، وهذا هو الرمز الافتراضي. كما كنا نسميها، MainActivity. افتراضيا، ونحن الحصول على OnCreate الخاص، التي هي وظيفة هذا ما يسمى عند تحميل هذا النشاط، لذلك تريد استدعاء OnCreate الخاص (savedInstanceState). هذا وسوف استعادة أي بت من المعلومات في حال تم إيقاف التطبيق. هناك حياة النشاط كله الرسم البياني دورة التي يمكنك أن تبحث في عندما تحصل على أكثر قليلا متعمقة في ذلك، ولكن الخط الأكثر أهمية من التعليمات البرمجية هناك هذه الوظيفة setContentView الذي سيتم تحميل ملف المورد للتخطيط. ثم ما OnCreate الخاص هنا هو القيام أساسا هو أنه يقول عندما أقوم بإنشاء هذا النشاط أريد أن تحميل هذا التخطيط. وسوف نتحدث عن ما هو هذا التخطيط في الثانية. إذا كان لنا أن إطلاق ذلك هنا يبدو تماما مثل هذا، وبشكل افتراضي لأننا الكسوف القيام بذلك وADT فعل ذلك بالنسبة لنا هذا هو كل رمز النمطي الذي تم إنشاؤه بالنسبة لنا، ويمكننا أن نمضي قدما وتغيير الأشياء كما نحب. المجلد الموارد، كما قلت، هذا هو المكان الذي نحن نحمل كل تخطيطات، drawables في شروط من أي نوع من الصور، انهم يسمى drawables وثم الملفات الصوتية، والقوائم. انها وسيلة من مجموعة كاملة من XML في لطيفة مصنفة الموضة. كما ترون، هناك. hdpi، ldpi، mdpi والمجلدات xhdpi لdrawables. هذه هي كثافة شاشة مختلفة، بكسل عالية جدا كثافة في البوصة، منخفض الكثافة، متوسطة الكثافة، كثافة عالية اضافية. وهذا هو، مرة أخرى، ولذا فإننا يمكن أن تدعم جميع هذه الأجهزة المختلفة، وبشكل مثالي، سيكون لديك صور مختلفة لكل دقة مختلفة. تخطيطات هي أين نحن تشمل جميع المخططات المختلفة التي سيتم استخدامها في الأنشطة المختلفة. ويمكن أن تشمل أيضا تخطيطات لشظايا، وهو ما يعني الأنشطة جزئية في الأساس. إذا كنت تريد أن تفعل شيئا مثل بارد كلما قمت بتدوير الهاتف كنت تريد أن يكون لديها تخطيط مختلف يمكنك القيام تخطيط المناظر الطبيعية ومجلد مختلف، والروبوت لديه مجموعة كاملة من هذه القواعد داخل مجلد الموارد تلقائيا، لذلك سوف نعرف أن ننظر إلى مجلدات مختلفة استنادا إلى الإعداد الحالي للهاتف، أي نوع من الأجهزة التي تستخدمها. وبالمثل، هذه القيم-V11 هنا والقيم-V14 والمجلد القيم الافتراضية وهذا هو لل كذلك، القيم في حد ذاته، وهذا سوف يكون القيم الافتراضية عبر كافة إصدارات نظام التشغيل. من ناحية أخرى، V11 V14 وتتوافق مع قرص العسل وساندويتش الآيس كريم، على التوالي. مرة أخرى، وهذه هي الطرق التي في غضون هذه المجلدات هي سلاسل مختلفة والأساليب، بحيث يمكنك تخصيص مظهر التطبيق الخاص بك أو يحتمل أن تكون حتى وظائفه، على الرغم من أن من المحتمل أن يكون فكرة سيئة، استنادا إلى إصدار نظام التشغيل. وتحدثت عن كل هذا هنا. مرة أخرى، drawable، الخام، والتخطيط، والقيم. الإعدادات الافتراضية، إذا دخلنا في مرحبا مرحبا الروبوت أو CS50 الآن وسوف تبدو وكأنها مجرد هذا. فإنه سيقول مرحبا العالم. كما ترون الحق هنا مع النص الروبوت النص لهذا الرأي النص، الذي هو في الأساس مجرد تسمية، هو ما كنا نسميها في دائرة الرقابة الداخلية. كان لديه هذه الرموز مضحك @ سلسلة / hello_world. وهذا هو الحال في وسعنا، ونحن محاولة استخراج جميع من السلاسل، كل من السلاسل الثابت تلوينها في الروبوت في مجلد منفصل، الذي يحدث أن تكون في values.strings. إذا نظرنا هنا، يمكننا أن نرى أن لدينا سلسلة الثابت تلوينها حفظ هنا لمرحبا العالم، وانه دعا العالم مرحبا، وهذا هو نوع من قرار تصميم مشترك عبر العديد من المنصات التي تريد- سلاسل هي نوع من الأشياء التي نريد أن المحتمل أن تكون قادرة على التغيير. نحن لا نريد للسيطرة F في ملف التعليمات البرمجية المصدر لدينا في XML دينا. نحن نريد أن تكون قادرة على تغيير هذا كلما حصلنا على فرصة. هذا ملف XML، strings.xml، هو وسيلة لاستخراج سلاسل الثابت تلوينها التي من شأنها أن يكون الأمر خلاف ذلك في موارد تخطيط لدينا أو في التعليمات البرمجية المصدر لدينا. بيان حيث واصلنا هذه المعلومات الأساسية حول التطبيق. وهو يتضمن اسم الحزمة. التي يجب أن يكون معرف فريد. على عكس المتجر لدائرة الرقابة الداخلية أسماء من التطبيقات ليس لديك لتكون فريدة من نوعها، ويمكنك في الواقع تغيير اسم التطبيق الخاص بك بعد تقديمه، حتى لو كنت تبدأ مع الطيور الغاضبة، ثم قمت بعملية التحديث، وأنا لا أريد أن إصدار نسخة جديدة أعتقد أنني يمكن أن نسميها الطيور الغاضبة 2 بينما أنا على دورة الافراج نفسه. فإنه تظهر فقط كتحديث. الشيء الوحيد الذي يجب أن تكون فريدة من نوعها هو هذا اسم الحزمة، التي لا كثير من الناس سوف نرى. حسنا، كنت انظر فقط إذا كنت تبحث في التعليمات البرمجية المصدر أو إذا كان هناك نوعا من الخطأ. وتشمل مكونات الأنشطة، لذلك علينا أن نعلن أي نوع من النشاط التي نستخدمها. هذا هو نوع إذن من الشيء. لأنه ليس لدى هذه العملية الروبوت التطبيق الصارم لتقديم تطبيقات بدلا من ذلك أنها فقط لا كل شيء القائم قبالة من أذونات ويعلن الأشياء في البيان. إصدار SDK مهم أيضا. نحن يمكن أن يحدد استخدام كحد أدنى SDK الإصدار شيء. ومن الواضح أن كنت تريد إنشاء مدونة وتصميم لأنظمة التشغيل الأحدث. ربما لا أحدث، وربما لا جيلي فول. ربما كنت ترغب في تصميم المقام الأول لآيس كريم ساندويتش، على الرغم من أنها هي نفسها الى حد كبير من حيث قرارات التصميم والمكتبات الفعلية واجهات برمجة التطبيقات. ولكن بدلا من أن يكون الناس من الروبوت الأصلي إصدار مثل دونات في طريق العودة عندما- الذي لا يزال يحدث ليكون باستخدام التي تحاول تحميل التطبيق الخاص بك ثم يقول أنها لا تعمل على هاتفي يمكنك تعيين الحد الأدنى للنسخة وأنها قد تكون الزنجبيل أو آيس كريم ساندويتش أو ما كنت تشعر تقديم مريحة. وهذا مثال من البيان. يمكننا أن ننظر في واحد الفعلية في قليلا. حسنا، سوف نذهب فقط إلى الأمام مع العرض التوضيحي الآن. هذا هو العرض التوضيحي إذا كنت جوجل الروبوت بناء التطبيق الخاص بك أولا أو شيء من هذا القبيل. سنذهب من خلال كل ما يجري في هناك، وآسف، لمجرد إشارة من هنا يعرف جاوة إلى أي مدى؟ حسنا، لذلك جافا هي لغة ترميز جديدة بالنسبة لمعظم الناس يخرجون من CS50. لفترة وجيزة، للذهاب تكرارا ما يقول هنا، ما نريد القيام به هو بدلا من ضبط هذا التطبيق مرحبا العالم أن كل ما يفعله هو أنها تطلق وتقول مرحبا العالم وتقول مرحبا CS50 في أعلى لأن ذلك هو اسم آخر ونحن في طريقنا إلى محاولة لجعل حقل نص و زر بحيث أننا عندما تضغط على هذا الزر سوف يستغرق النص من حقل النص وإطلاق نشاط جديد، وسوف يقول مهما قال إن النص في النشاط، وهذا هو بسيط نسبيا. انها ليست مثيرة جدا للاهتمام. وكنت لا ترغب في الافراج عن أي التطبيق مثل هذا. لكنه يوضح بعض الأشياء تصميم الهامة. علينا أن تتفاعل مع بيان، مع ملفات تخطيط، مع شفرة المصدر، ويمكنك أن ترى كيف لإطلاق نشاط واحد من آخر. سنبدأ مع تخطيط للنشاط الأول لدينا، التي أعلم انها نوع من الصغيرة، ولكن كما ترون الآن، كل ما هو غير انها شعارنا الذي خلقنا، اسم آخر، وتقول مرحبا العالم في المركز. بدلا من ذلك، أنا أول ذاهب لجعل هذا إلى تخطيط خطي، تخطيط النسبية، وهذه هي كل الأشياء هل يمكن أن ننظر صعودا وتستحق الذهاب أكثر في مرحلة ما من حيث التخطيطات. انها الكثير مثل HTML. قلنا انها ليست حقا يستحق أن يعرف من حيث الشعور البرنامجية، ولكن هناك الكثير من تخطيطات مختلفة يمكنك التحكم، وانها مجرد مثل CSS من حيث الأساليب. هناك الكثير مما يجري فقط من حيث الجماليات هنا، ونعم، انه يستحق التعلم، ولكن هذا النوع من الأشياء يجب أن ننظر حتى كما تذهب وأنت تشعر وكأنك في حاجة إلى شيء جديد. أنا يمكن الاستفادة من بعض الأدوات ADT هنا على الأقل لتبدأ مع. أنا سوف تجعل حقل النص، وأنا سوف تبذل زر واحدة. وضعها بجوار بعضها البعض. أنها بالفعل تغيير حجم مناسب. آسف، ومرة ​​أخرى، يعود إلى الفرق بين تخطيط خطي وتخطيط النسبية، تخطيط خطي يعطي أكثر من ذلك بقليل وظيفة من حيث ملء الفضاء، والتأكد من نحن موقف الأشياء أفقيا أو عموديا. الفرق كبير بين تخطيط خطي وتخطيط النسبية هو تخطيط المواقف النسبية كل شيء بالنسبة إلى وجهات النظر الأخرى، والشيء جيدة حول هذا الموضوع هو ان الامر يستغرق وقتا أقل للرسم لأن نظام التشغيل ينظر إلى كل رمز ويقول هذا يذهب بالنسبة لهذا هنا، وهنا. وهذا يعني أنه يجعل قياسات أقل من مجموعة كاملة من تخطيطات خطية متداخلة، الذي أود أن تفعل لو أردت ان تسير الامور عموديا هنا. سبق لي أن بعض الأمور تسير أفقيا، لذلك أنا في حاجة الى تخطيط خطي مختلفة إلى عش لهم عموديا، ولكن إذا أنا كانوا يفعلون تخطيط النسبية يمكن أن أقول الحفاظ على هذا إلى اليسار، هذا إلى الحق وهذه الأشياء أدناه. ولكن لأنني أريد لهم لملء الآن انا ذاهب الى استخدام تخطيط خطي، ويمكنك أن ترى أنه لا بالفعل الكثير من هذه الأشياء بالنسبة لنا. جميع وجهات النظر في حاجة الى خاصية العرض والارتفاع، ويحدث هذا ليكون وزنها 1، وهذا له وزن من 1 بحيث يملأ الفضاء كله. ولكن العرض والارتفاع هي الأكثر أهمية. هذا الحقل ID الحق هنا ليس مهما في التخطيط الفعلي ما لم نستخدمه تخطيط النسبية والقول إننا يمكن الرجوع موقف رأي واحد في إشارة إلى آخر. إذا كان لدينا تخطيط النسبية يمكن أن نقول هذا الموقف أدناه هذا واحد أو أعلى من هذا الرقم، ولكن هذا الرقم سيكون من المهم عندما نستخدمه في التعليمات البرمجية لأننا يمكن الرجوع هذه الآراء الفردية في هذا السبيل. ومن ثم يمكنك أن ترى requestFocus العلامة، وهو أمر ربما رأيت في pset 7. كان هناك علامة التركيز التلقائي أو شيء على هذا المنوال لأحد الحقول. وشيء واحد، بالطبع، يمكننا أن نفعل مثلما هو الحال في HTML، وتلاحظ واحد من أشياء لطيفة عن ADT هو أنه autocompletes هنا. ربما ليس كما فعلت لطيف في كسكودي، ولكنه على الرغم من ذلك، ويمكننا القول تلميحا ثم اعطائها نوعا من سلسلة أعجبني اكتب رسالة، وإذا أعطيها لحظة، أيضا لاحظت أن أحصل على خطأ قليلا هنا قائلا أنه ينبغي لنا أن استخدام مورد سلسلة لهذا، حتى لو كنت السماح لها القيام ببعض العمل الشاق بالنسبة لي أنا يمكن تحديد هذه السلسلة، قم المنكسر الروبوت والروبوت سلسلة استخراج. وأستطيع أن أعطي هذا الاسم، اكتب رسالة، وما لم الآن هو استبدال هذه السلسلة الثابت تلوينها مع إشارة إلى سلسلة في سلسلة في ملف XML، وهو ما يعني الآن هذا هو هنا. وأنا أعرف أن يبدو العمل الاضافي وتافهة مثل قليلا عند هذه النقطة، ولكن عندما يكون لديك مجموعة كاملة من الأشياء، في مجمله مجموعة من السلاسل، هذا أمر مهم حقا، وخاصة بالنسبة للتوطين لأنه كما ذكرت سابقا، الروبوت هو نظام التشغيل المستخدمة عالميا جدا التي يمكنك القيام به ببساطة القيم-EN-SP أو القيم أو شيء للغة الإنجليزية أو الإسبانية أو غيرها من اللغات. ثم ربما كنت لم تتح هذه التجربة حتى الآن وبما أننا لم يفعل الكثير جافا سكريبت من حيث برمجة الويب، ولكن يمكننا أيضا أن تفعل هذا المجال يسمى عند _ النقر للزر، وهذا هو وسيلة من الرجوع في التخطيط لدينا إننا نريد وظيفة معينة ليتم استدعاؤها في التعليمات البرمجية المصدر لدينا. أنا ذاهب لاستدعاء هذا sendMessage، ومن أجل جعل هذا العمل وهذا يعني في النشاط الرئيسي هنا سوف يكون لي لإنشاء وظيفة وهذا هو العام بحيث يمكن الوصول إليها عن طريق التخطيط. انها باطلة لأنك فقط لا تريد أن يعود أي شيء. نحن سوف يطلق عليه sendMessage، وأنه يأخذ وجهة نظر، الذي هو نوع من السياق أن نتمكن من ترسيخ هذا الأسلوب لهذا الرأي فرد عندما نقوم تشغيله. وأنا لا أعرف اذا كنت لاحظت جيدا، أنت لن يكون لاحظت، ولكن في هذه النقطة هنا الحق هذا الرأي هو نوع الذي لم يدرج بعد، وبالطبع، أنت تعرف كل من CS50 عن عدم بما في ذلك أنواع. والشيء الجميل في IDE مثل الكسوف هو أن إذا كنت قد نسيت لتشمل نوع وسوف نؤكد مع القليل من أحمر متعرج ومن ثم يعطيك الخيار لاستيراد طريقة العرض. وهناك طريقة سريعة لتحقيق ذلك هي السيطرة تحول O، وأنها ستستورد جميع الملفات التي يحتاجها ل. الآن أن لدينا هذه دالة SendMessage، وهو ذاهب لإرسال رسالة من MainActivity إلى نشاط جديد، ونحن في طريقنا لديك لاستخدام وجود نية لإطلاق نشاط جديد من هذا واحد، ولذا فإننا سوف تريد على الارجح الى خلق ثابت أو العالمية أيضا ولا سيما ثابت العامة من شأنها أن تساعد لنا أن نعرف كيف ونحن في طريقنا إلى مرجع سلسلة لأننا عندما خلق وجود نية لسنا مجرد استدعاء أي نشاط جديد، ولكن يمكننا أيضا أن تعطيه حزمة من المعلومات. هناك حزمة هو في الواقع مصطلح يستخدم الروبوت، وانها طريقة للقول إعطائها بيانات اضافية، والتي لا يمكن أن يكون من نوع بيانات متطورة للغاية، لكننا يمكن أن تشمل بالتأكيد القيم المنطقية أو سلاسل أو رجات. هذا النوع من الشيء. لا تتردد في السؤال عن أي من هذه التصفيات هنا، الجمهور، النهائي، ساكنة. الجمهور هو واحد مهم. فهذا يعني أننا يمكن الوصول إلى هذا المتغير عن غيرها من ملفات التعليمات البرمجية المصدر مثل عندما نقوم بإنشاء آخر جديد. يمكننا الرجوع إلى سلسلة داخل هذا الملف. اذا كان القطاع الخاص، وهذا يعني انه يقتصر على هذا الملف الفردية هنا. ولكننا سوف نسمي هذا شيء من هذا القبيل رسالة إضافي. الآن حققنا هذه المهمة، وإذا كنا انقر فوق زر، وسيتم استدعاء هذه الدالة. ولكن نحن لم تفعل شيئا، من الواضح، مع وظيفة. ما نريد القيام به الآن هو خلق نشاط جديد، وسوف يكون في الواقع بدأت النشاط الذي. في الكسوف يمكننا القول الجديد، والنشاط الروبوت، والنشاط فارغة. نحن يمكن أن تعطيه اسما. دعنا نسميها النشاط نتيجة لدينا. ثم هذا المجال الرئيسي الهرمي هو وسيلة لتحديد كيف ترتبط أنشطة لبعضها البعض. لأنه سيتم إطلاق هذا واحد من النشاط الأخرى نحن ينبغي أن يحدد أن لديها النشاط الرئيسي الأصل. وأنا لا يمكن أن تضغط على الحقل التالي هناك، والذي كان قد قال لنا بعض الحقول الاختيارية التي كان منها أيضا، ولكن الشيء الجميل في ADT، مرة أخرى، هو أنه إذا كنت انزل هنا في بيان أن نتذكر أن كل هذا تم تضمين حقا افتراضيا عندما أنشأنا في الأصل مشروع، والآن لاننا كنا نستخدم هذا خلق نشاط جديد بدلا من مجرد مضيفا لدينا ملف الطبقية الخاصة لأن ذهبنا من خلال واجهة المستخدم الرسومية الخاصة بهم للقيام بذلك أنه سبق وأن أضفت هذا كله إلى البيان بالنسبة لنا، وهو ما يعني فقط أن الآن نظام التشغيل لن يشكو عندما نحاول أن إطلاق هذا النشاط. وأيضا، بالطبع، أعطاها التسمية، مما يدل أيضا في السلاسل. يفعل الكثير من الأشياء في النهاية الخلفية بالنسبة لنا. على أي حال، الآن أن لدينا هذا النشاط نتيجة كذلك، ملف التعليمات البرمجية المصدر الفعلي في المجلد المصدر، ويمكنك أن ترى أن أتطرق بإيجاز على هذا، لأننا قيل عن هذا الأصل الهرمي أعطى هذا android.r.ide.home مجال في هذا الشيء onOption المحددة. ما هو هذا القول هو في الأساس هناك زر القائمة الآن أن في أعلى الزاوية اليسرى من الشاشة إذا أعود إلى برنامج البور حيث تحدثنا أولا عن شريط الإجراءات بسبب الوالد الهرمية الآن هناك السهم قليلا هنا مرة أخرى وهذا هو نقر لذا فإننا يجب أن تكون قادرة على، وبعد ونحن في الواقع تشغيل هذا التطبيق- أعود، وانها وسيلة لإنقاذ لنا قليلا من التعليمات البرمجية هناك. الآن في هذا جيدا، فإنه يبدو أن تشكو ذلك لحظة. دعونا التعليق أنه من أصل. الآن، من أجل التفاعل مع الواقع هذه الأنشطة 2، لدينا لخلق وجود نية التي تضم كل من هذه البيانات. في sendMessage الآن انا ذاهب الى رحلة بحرية من خلال بعض بت من التعليمات البرمجية وشرح أن ما أذهب. نية، كما قلت، هو وسيلة لإطلاق نشاط واحد من آخر. القصد من ذلك هو نوع. نحن بصدد إنشاء myIntent متغير. وهذا هو في الواقع كائن، والذي هو السبب في أننا يجب أن ندعو جديدة. انها استخدام جافا المشتركة هناك، والذي قد يستغرق قليلا من التعود. وهذا يعني أننا نستخدم النشاط أو MainActivity فئة، والقصد بهذه الطريقة يأخذ النشاط الذي يحدث من والنشاط الذي يجري ل، والتي نسميها ResultActivity، وهذا هو فئتها الخاصة. وتشمل ذلك. ثم كما ذكرت من قبل، أعطينا أن ID لحقل النص تحرير وعرض النص، وذلك من أجل التقاط برمجيا النص موجود في الأساسية EDITTEXT ونحن نستخدم هذه الوظيفة تسمى findViewByID، التي هي مماثلة لشيء أن عليك استخدامها عند محاولة للحصول على الحقول من DOM. ربما ديفيد يتحدث عن هذا في محاضرة. ولكن انها مجرد طريقة للحصول على تلك-هذا هو السبب في أننا علامات لهذه الأمور مع تلك الحقول. Id.editText1. انها autocompleting بالفعل بالنسبة لي هناك. وبعد ذلك سنقوم تشتمل على هذا أيضا الأساسية EDITTEXT الآن أن لدينا حقل ضمن برنامجنا، لم كان كل ذلك في الأساس findViewByID كنت أفكر في الأمر على النحو تعطينا إشارة إلى أن الأساسية EDITTEXT. ونحن الآن ترغب في الحصول على سلسلة أو الرسالة في غضون تلك الأساسية EDITTEXT الذي يمكننا القيام به باستخدام- كنت أفكر فيه باعتباره البنية الأساسية EDITTEXT- نحن نسميها كائن في جافا مع مجموعة كاملة من أساليب مختلفة أو الحقول والصفات المرتبطة به. عندما أقول الأساسية EDITTEXT. انه يعطيني فرصة للوصول أسلوب مثل getText، الذي سيحصل على النص الحالي في هذا الأساسية EDITTEXT ومن ثم تحويل ذلك صراحة إلى سلسلة، ولقد حفظ الرسالة. الآن ونحن في الواقع تريد أن تفعل شيئا مع أن القصد أنشأنا قبل لحظات فقط. سوف أضع اضافية كما يطلق عليها في القصد، التي، مرة أخرى، كما قلت من قبل، وهذا هو وسيلة لخلق حزمة مع مجموعة كاملة من البيانات. رسالة إضافي هو علامة لدينا حتى نعرف ما نقوم بحفظ هذا تحت، ثم أنا بما في ذلك رسالة. وبعد ذلك يمكننا البدء فعليا النشاط من خلال إعطائها myIntent المعلمة. وهذا سوف تطلق في الواقع آخر، وحتى الآن أنا منذ بالترقية إلى ويندوز 8 قد يكون هناك بعض الأخطاء التي تظهر لفترة وجيزة، ولكن في محاولة لتجاهلها. وهذا هو محاكي الروبوت. نأمل رمز البوب ​​فعليا حتى في لحظة. مرة أخرى، تجاهل كل تلك الأشياء الصغيرة. ولكن محاكي الروبوت يمكنك محاكاة أي إصدار من نظام التشغيل من أقرب منها، دونات، الزنجبيل. هذا هو جيلي فول 4.1. ولكن كما ترون الآن، وهذا شيء قطعناها على أنفسنا. هذا لديه MainActivity، الأساسية EDITTEXT، الزر. أستطيع أن اكتب شيئا هنا، ولكن ما نحن في عداد المفقودين في هذه المرحلة؟ التي قطعناها على أنفسنا الحقل في MainActivity أن يحدث لإرسال رسالة إلى نشاط آخر، ولكن في هذه المرحلة نحن لم تفعل أي شيء في نشاط آخر، لذلك لن يحصل أي شيء. دعونا حتى الانتهاء من هذا الجزء قبل أن ننتقل. هذا النشاط نتيجة لذلك، ما سوف نحتاج إلى القيام به هو أننا بحاجة إلى القيام به هو سنحتاج إلى يمكننا أيضا الرجوع إلى القصد في هذا النشاط، لذلك لدينا لالتقاط النية، التي هي بسيطة حقا. انها وظيفة مدرجة في فئة النشاط، لذلك نستطيع أن نقول مجرد "الحصول على رسالة من النية." "myIntent النوايا = getIntent." وهذا سوف يعطينا-myIntent الآن هو كائن، وهو إشارة إلى القصد الذي أدى بنا إلى هذا النشاط. MainActivity يدعو ويعطي معلومات إضافية ليؤدي النشاط. النشاط النتيجة تبدو الآن في القصد الذي أدى هنا، ويمكننا الوصول إلى الرسالة التي خلقنا في واحدة أخرى، getStringExtra، وهذا سوف الإكمال التلقائي بالنسبة لي. ثم تذكر، والطريقة التي الموسومة أن بت من البيانات كان بإعطائه هذا المجال الحق هنا، هذه السلسلة العامة، الذي هو علامة عن السلسلة ونحن في الواقع المدرجة. إذا قلت MainActivity.Extra_Message انه هناك حق، وهذا هو نوع من مثل اسم المعلمة عندما مررنا رمز من وحدة تحكم إلى قالب، عندما نستطيع أن نقول لقب سهم شيئا. انها نفس النوع من فكرة هناك. الآن، تذكر هذا. ونحن أيضا وهذا خلق السيارات أو المتولدة رمز السيارات للنشاط نتيجة، والذي يتضمن عرض النص في منتصف أن يقول مرحبا العالم. نحن يحتمل أن يجعل ذلك أكبر. دعونا نفعل ذلك أولا. نحن يمكن أن تجعل من 40 كثافة بكسل مستقلة. دعونا نرى، وهذا السوبر ضخمة. وسيكون ذلك حسنا. ثم من أجل مرجع هذا الرأي النص الفردية ضمن رمز لدينا سنحتاج لاعطائها ID، ولكي نفعل ذلك نحن نقول @ + ID، وهو ما يعني أننا تعيينه ID. لا نبالغ إذا قلنا فقط @ ID سيكون نفترض أننا الرجوع إلى ID موجود بالفعل، ودعونا نسمي هذا resultTextView لدينا. وتلاحظ أن في XML وليس هناك حاجة لمنقوطة أو أي شيء. كل شيء ضمن هذه العلامات. انها تشبه الى حد بعيد HTML في الكثير من الحواس. يستغرق قليلا من التعود، ولكن في نهاية المطاف سوف تشعر بالراحة جدا معها. دعونا تحديث النص لرأينا النص نتيجة لذلك، وكما فعلنا عندما كنا الحصول على هذا الحقل النص تحرير في نشاط آخر لدينا في MainActivity هنا وسوف أيضا بالمثل- سوف نجد طريقة العرض بواسطة معرف. وR، في حال لم أذكر هذا من قبل، هو إشارة إلى مجلد مواردنا، ثم ID هو إشارة إلى كل شيء في المجلد موارد، جميع معرفات، وresultTextView. وفقط كما كان من قبل، resultTextView هو كائن، مما يعني أنه لديه كل هذه الخصائص المرتبطة به. عندما نستخدم getText للاطلاع على النص تحرير لهذا الحقل النص أو مشاهدة النص نحن يمكن استخدامها في الواقع setText، ومن ثم فإننا بالفعل وجدت رسالة من القصد، لذلك أستطيع أن أقول رسالة، وهذا في الواقع سوف تعيين الرسالة. ذلك ان نتوقف لحظة لإطلاق، ومن ثم يمكننا أن نرى ما إذا كان أو لم يكن تعطل، ولكن أي أسئلة حول هذه العملية هناك حق، وهذا النوع من التفاعل؟ في نواح كثيرة انها واضحة. السبب انا ذاهب من خلال شيء بسيط نسبيا هو، مرة أخرى، لأنك تحصل على رؤية التفاعل بين التخطيط، شفرة المصدر، وكيف الأشياء المرجعية وربما الحصول على القليل من التعرض لكيفية جافا يعمل هناك. إذا أنا فعلا كتابة شيء هنا، مثل ohai، وبعد ذلك انقر فوق زر، فإنها تطلق على أي نشاط جديد، وهذا الرأي يقول النص ohai. هذا هو بسيط جدا، ولكن نأمل بعد هذا المثال كنت نوعا من نرى كيف يعمل هذا التفاعل، والآن بعد أن فوضى من الملفات على الجانب الأيسر لجميع هذه المجلدات المشروع، ونأمل أن تعرف أن ننظر فيها الآن. هذا هو رمز المصدر. التخطيط هو حقا الشيء الوحيد الذي عليك التعامل مع حتى قمت بتضمين الصور وdrawables أو أيا كان، والقيم، التي من شأنها أن تشمل سلاسل، كما ذكرنا، ومن ثم الاساليب هو شيء وهذا نوع من مثل CSS. التصدي له عندما تريد، ولكن حتى تشعر بالراحة مع إضافة مسحة اضافية إلى التطبيق الخاص بك وليس هناك حاجة للقلق بشأن ذلك كثيرا. فقط لانهاء الشيء الآخر أنك سوف بالتأكيد نريد لتشمل على افتراض انك تريد دمج الميزات الرائعة وتنقذ نفسك بعض اضافية الترميز- سيكون لتشمل مكتبات 3rd الطرف. وهنا الرجل الروبوت قليلا مع شرلوك هولمز قبعة. هذا هو عمل شريط شرلوك مكتبة، وهو ما يعني أساسا أن شريط الإجراء الذي شهد في وقت سابق، التي هي الآن القياسية في آيس كريم ساندويتش وجيلي فول، إذا كنت ترغب في جلب هذا النوع من تجربة المستخدم للمستخدمين على الإصدارات القديمة وتنقذ نفسك من القلق بشأن كيف يمكن للمستخدم هو ذاهب للتنقل على الإصدارات القديمة عند هذا الشيء ليس هناك يمكنك تضمين هذه المكتبة ثم عليك أن المرجعية بدلا من الروبوت الافتراضي المكتبات لشريط العمل، أن مرجع هذه المكتبة الدعم. أشياء مثل Scoreloop، انه لشيء رائع إذا كنت تريد الذهاب لتشمل لعبة. فإنه يتيح لك إضافة لوحات زعيم والإنجازات التي تحققت حتى الألعاب. Admob هو وسيلة لوضع الإعلانات في التطبيقات الخاصة بك في حال كنت تريد أن تجعل قليلا من المال مقابل ذلك. بالطبع، هناك الفيسبوك وتويتر لإدماج هناك إذا كنت ترغب في مشاركة الأشياء بسهولة، وهلم جرا. المربع المنسدل، وبالمثل، وبرنامج Google Analytics هي أن الرسم البياني يبحث أحد هناك. وسيكون هذا مهم جدا إذا كنت فعلا تريد معرفة من هو التفاعل مع التطبيق الخاص بك أو من هو، كيف تتفاعل، وهلم جرا. جوجل، افتراضيا، يروي لك الكثير من الاحصائيات حول من قام بتثبيت التطبيق الخاص بك وما الهواتف لديهم، ما إصدارات نظام التشغيل لديهم. ولكن إذا كنت ترغب في معرفة من الذي تم استخدامه على أساس يومي، وكيف استخدامه ثم سترغب لتشمل نوعا من نظام تتبع هذا القبيل. عندما تكون مستعدا لتوزيع التطبيق الخاص بك ولست بحاجة للذهاب الى أنه في الكثير من العمق. انقر على الرابط هنا، وجوجل اللعب. كان عليه أن يكون السوق الروبوت. أنها تصنف كل شيء مع جوجل اللعب، حتى الآن لتقدم إلى ذلك. انها واضحة جدا. عليك أن تشمل وصفا، بعض لقطات. كما قلت، ليس هناك عملية الموافقة مثل دائرة الرقابة الداخلية. وإلى أين نذهب من هنا؟ أنا أظهر لكم مثال بسيط حقا. نأمل إذا كان يبدو بسيطا بشكل رهيب ثم أن يكون هذا إشارة جيدة. إذا كنت في كل شعر الخلط قليلا أو غير متأكد حول بالضبط ما كنت تكتب وهذا أيضا جيد، ولكن من هنا تذهب إلى دليل جوجل. هذا هو مكان عظيم للبدء. وسوف نتحدث لكم من خلال ما يتوقعون من حيث تصميم التطبيق، كيفية تفاعل المستخدمين معها عادة. انها أكثر من ذلك بكثير شكل حر من دائرة الرقابة الداخلية، وأنا أقول، الذي يبدو مثل وجهات النظر الجدول و-I لا أعرف، هذا هو الخبز والزبدة. كل شيء نسخة الجدول انزلاق صعودا وهبوطا. مع الروبوت من المؤكد انهم تشجيع الناس لننظر في الأمر من مجموعة كاملة من وجهات نظر مختلفة. عند تضمين عدة تطوير البرمجيات في هذا ADT افتراضيا لديك مجموعة كاملة من مشاريع عينة في الروبوت. الحق هنا، الروبوت، نموذج مشروع الروبوت. إذا كنت اضغط على ذلك، ثم أستطيع أن اختيار صيغة التي من العينة تطبيق المشاريع. هناك مجموعة كاملة من الاشياء المختلفة هنا. فإنه يبدأ مع عمل التوافق شريط، اللعب التسارع، والنسخ الاحتياطي واستعادة، وتقنية بلوتوث، باني فتة. JetBoy هي لعبة العينة أنها تعطيك، كما هو LunarLander. وهناك مجموعة كاملة من التطبيقات عينة هنا، وانهم جميعا تستهدف مختلف جوانب API الروبوت، والفكرة هي أن التقدم في جعل التطبيق الخاص بك أنت لا تحتاج إلى معرفة كل شيء عن الروبوت لإجراء التطبيق الروبوت. لديك فقط لمعرفة الأجزاء التي كنت فعلا تنوي استخدام. انظروا الى هذه المكتبات عينة. لا تتردد في نسخ ولصق رمز وتطبيق ذلك. أنه لشيء عظيم أن ننظر إلى مزيد من رموز صعبة ومحاولة لفهمه، والذي هو بطبيعة الحال لماذا في CS50 ونحن غالبا ما تعطيك كميات كبيرة من التعليمات البرمجية المصدر. نلقي نظرة على بعض من هذه إذا كنت تنوي استخدام مكتبات مماثلة ومن ثم تطبيقه على التعليمات البرمجية الخاصة بك. وبطبيعة الحال، هناك دروس. بحث عن الدروس. لقد وجدت الكثير من الجيد منها على الانترنت والتي يمكن أن تجلب لك ما يصل الى سرعة مع ما الشظايا هي حقا وكيف يمكنك الاستفادة منها. بعض من هذه الأشياء التصميم الجديد، مثل شظايا، كنت حقا لا يجب أن تشعر بالقلق حول إلا إذا كنت جعل كبيرة جدا في نطاق المشروع. فهي الأشياء التي جوجل تسعى للتخلص فيه. ستاكوفيرفلوو هو بالطبع صديقك. نأمل بعت لكم قليلا على الروبوت، أن يدركوا ذلك هو أكثر من ذلك بكثير من السهل الاقتراب من حيث مجرد لغة الترميز. جافا هي أقول أسهل بكثير لفهم من الهدف جيم. الروبوت ينمو أعتقد أكثر بكثير من دائرة الرقابة الداخلية. أعني، أن البيانات هناك أيضا، وبصرف النظر عن ما أعتقد. انها سوف تكون حول لفترة من الوقت، وهم بضع سنوات وراء من حيث دورات تصميمها، حتى انها نوع من المفهوم أن انهم لا تزال تعمل من خلال بعض من هذه أسئلة الاتساق، وهذا مثل شريط العمل هو شيء جديد بالنسبة لهم لا يزال، نوع من خلق تجربة المستخدم مماثلة في جميع التطبيقات الخاصة بهم. نأمل أن تتمكن من المضي قدما الآن وفتح الكسوف وجعل حياتك تطبيقات الروبوت الخاصة. هل لديها أي أسئلة قبل أن يختتم عن أي شيء؟ استطيع ان اقول لكم الجواب هو 42. حسنا، سعيد الترميز الجميع، وحظا سعيدا. [CS50.TV]