Do you remember the boxes?
>> What boxes?
>> These boxes.
>> Huh! >> You do remember them?
>> Oh yeah, yeah.
I do remember them.
They're variables, where you can put the value inside.
Yeah, and
you can combine multiple of these variable to create a larger Java object.
>> Oh, so you can take two or more variable and
make into a something bigger.
>> Exactly. >> Okay
>> [SOUND] Like a TextView.
>> Yeah. So, we can have an integer variable.
>> This is for the font size.
>> Exactly.
>> Okay. [SOUND]
>> And then you can also have
a string variable.
>> And the string variable for the actual text itself.
>> Yeah, and those can go inside the TextView as the state of the TextView.
>> And then we can interact with those things using different methods that
we're going to play with next.
>> Exactly.
>> Okay. Let's do that.
>> As we mentioned earlier, showing a TextView on the screen like this
is actually controlled by a Java object within the app.
This is an example of a TextView Java object.
It's like a box, and inside of it, it holds state.
The state is made up of a bunch of fields.
A field is a variable, like in lesson two,
when we learned about global variables.
We can have a text field to store the today string,
which is going to be the text that's ultimately displayed on the screen.
We can also have an integer field to store the font size of this text.
There's also a bunch of other fields,
like text color, font family that make up the state of the TextView.
I just didn't draw them in this picture.
To interact with this Java object and
change it while the app is running, we can call methods on the TextView.
We learned about methods earlier in lesson three.
Some example methods on a TextView are setText and getText.
You can also have methods like setTextSize or getTextSize, and so on.
Each of these methods just executes a list of instructions.
You can have more complex methods like onDraw,
which handles drawing a TextView onto the screen.
So overall, this TextView object holds state information on what this TextView
contains, and you can call methods to interact with this TextView,
such as to modify the state, or to do more complex actions.
To show an ImageView on the screen, we actually have a Java object for
ImageView inside of the app.
This particular ImageView contains state information, like which image should
be shown, as well as the scale type, like center crop.
Again there's a bunch of other fields that make up the state of an ImageView,
I just didn't draw them here.
There's methods like setImage, setScaleType, and even more complex
methods, like onDraw, to handle drawing this ImageView onto the screen.
Note that, as developers,
we don't explicitly have to call onDraw to tell it to draw onto the screen.
Android handles calling this automatically for us, but it is useful
to be able to call these methods to change the ImageView, for example.
So how do we know what all the fields are inside the state of an ImageView,
and what all the methods are of this ImageView?
To answer that question we have to look at the class definition for that object.
It's a file called TextView.java,
similar to how we defined MainActivity.java.
Inside this class TextView file, we have a bunch of code that
talks about the state of the TextView as well as the methods.
Now it doesn't say state and methods exactly, but it just contains
information on the state and it contains information on the methods.
You can thank of this as defining the rules of how a TextView behaves.
This object instance can hold specific information like the text string today.
Or the text size 18.
You can also use this class to create even more TextView object instances,
and these could have a different text string value.
I think this one could hold text that says hello,
and this one could hold text that says goodbye.
They could have different font sizes, different text colors, etc.
However, they're all based off of the class template.
You may find it hard to distinguish between a class and an object instance,
but that's okay.
It takes some time to get used to.
Here's an analogy to help you.
You can think of it as creating a floor plan for a house.
You can use this floor plan to create the actual homes.
Each of these homes can be slightly different.
But they're all based off of this base floor plan.
It's important to note that the floor plan is not a house itself.
It's just the plan.
Similarly, the TextView class is used to create these object instances.
So these instances are the ones with the actual text values,
text color values, and text sizes.
So what does one of these classes look like?
هل تذكر الصناديق؟
- أية صناديق؟
- هذه الصناديق
- ها ! - هل تتذكرهم؟
- أوه نعم، نعم
أتذكرهم بالفعل
إنهم المتحولات حيث يمكنك وضع القيمة داخلهم
نعم، وتستطيع
أن تجمع العديد من هذه المتحولات لإنشاء كائن جافا أكبر
- أوه، حتى يمكنك أن تأخذ متحولين أو أكثر
وتحولّه إلى شي أكبر
- بالضبط - حسناً
- مثل TextView
- نعم لذلك، يمكننا الحصول على متحول النمط الصحيح
- هذا لحجم الخط
- تماماً
- حسناً
- وبعد ذلك يمكنك أن تحصل أيضاً
على متحول سلسة محرفية
- ومتحول السلسلة المحرفية هي للنص الفعلي بحد ذاته
- نعم، وأولئك يمكن أن ينضموا إلى TextView للتعبير عن حالة الـ TextView
- وبعد ذلك يمكننا أن تتفاعل مع تلك الأشياء بإستخدام طرق مختلفة
كما سنفعل مع الآتي
- تماماً
- حسناً لنفعل ذلك
- كما ذكرنا سابقاً فإن إظهار TextView على الشاشة بهذا الشكل
يتم التحكم به في الواقع بواسطة كائن جافا داخل التطبيق
هذا مثال لكائن جافا TextView
إنه مثل صندوق يحمل حالة بداخله
تتكون الحالة من حزمة من الحقول
وكل حقل هو متحول كما أخذنا في الدرس الثاني
عندما تعلمنا حول المتحولات العامة
يمكننا أن نحصل على حقل نصّي ليتم تخزينه ضمن سلسلة محرفية لليوم
والتي ستكون عبارة عن نص يتم عرضه نهاية المطاف على الشاشة
كما يمكننا أيضاً أن نحصل على حقل نمط صحيح ليتم تخزين حجم خط النص
كما هناك أيضاً حزمة من الحقول الأخرى
مثل لون النص، عائلة الخط التي تشكل حالة TextView
ولكنني لم أرسمهم في هذه الصورة
للتفاعل مع كائن الجافا هذا
ونغيره بينما يتم تشغيل التطبيق نستطيع أن نسمي الطرق في TextView
تعلمنا حول الطرق سابقاً في الدرس الثالث
بعض الأمثلة عن الطرق فيTextView هي setText و getText
ويمكننا أن نحصل أيضاً على طرق مثل setTextSize أو getTextSize إلخ
كل واحدة من هذه الطرق تقوم بتنفيذ لائحة من التعليمات
يمكننا الحصول على طرق معقّدة أكثر كما الحال في onDraw
والتي تعالج رسم TextViewعلى الشاشة
بشكل عام، فإن الكائن TextView يحمل معلومات الحالة لما تحتويه TextView
ويمكنك استخدام الطرق للتتفاعل مع هذه الـ TextView
مثل تعديلك للحالة أوأن تنفّذ المزيد من الإجراءات المعقدة
لإظهار ImageView على الشاشة لدينا بالفعل كائن جافا
لـ ImageView داخل التطبيق
هذا ImageView بالتحديد يحتوي معلومات الحالة، مثل أية صورة يجب
أن تُعرض، بالإضافة إلى نمط الحجم مثل "center crop"
مرةً أخرى هناك حزمة من المجالات الأخرى التي تشكل حالة الـ ImageView
أنا لم أرسمهم هنا فقط
هناك طرق مثل setImage setScaleType وبالإضافة
لطرق أكثر تعقيداً، مثل onDraw، والتي تعالج رسم ImageView على الشاشة
لاحظ ذلك، كمطوّرين
ليس علينا بصراحة أن ننفذ onDraw لتقوم بالرسم على الشاشة
لأن أندرويد يعالج تنفيذ هذا لنا أوتوماتيكياً، ولكنه من المفيد
أن تكون قادراً على تنفيذ هذه الطرق لتغيّر ImageView على سبيل المثال
كيف لنا أن نعرف ما هي كل الحقول داخل حالة الـ ImageView
وما هي كل الطرق لهذه الـ ImageView؟
للإجابة على هذا السؤال علينا أن ننظر في تعريف الصف للذلك الكائن
إنه ملف يسمى "TextView.java"
على غرار كيف عرّفنا "MainActivity.java"
داخل ملف الصف لـ TextView لدينا مجموعة من الكودات التي
تتحدث عن حالة TextView فضلاً عن الطرق
الآن إنها لا تبيّن الحالة والطرق بشكل دقيق، ولكنها تحتوي فقط على
معلومات عن الحالة كما يحتوي معلومات عن الطرق
يمكنك أن تفكّر بذلك كتعريف للقواعد التي تحكم تصرفات TextView
هذا المثال النموذجي يمكن أن يحمل معلومات محددة مثل السلسلة المحرفية النصية لليوم
أو حجم النص 18
يمكنك أيضاً إستخدام هذا الصف لإنشاء كائنات TextView نموذجية
وهذا يمكن أن يتطلب قيمة سلسلة محرفية نصية مختلفة
وأعتقد أن هذا يمكن أن يحمل نصاً يقول "hello"
وهذا يمكن أن يحمل نصاً يقول "goodbye"
يمكن أن يحتوي على حجوم خط مختلفة ألوان مختلفة للنص، إلخ
على كل حال، فكلها تستند على قالب الصف
قد تجد أنه من الصعب التمييز بين حالة الصف والكائن
ولكن هذا طبيعي
الأمر يحتاج إلى بعض الوقت لتعتاد عليه
هذه مقاربة لمساعدتك
يمكنك التفكير في الأمر كما لو أنك تضع خطة لبناء أساس للمنزل
يمكنك استخدام هذه الخطّة لأنشاء منازل حقاً
وكل واحد من هذه المنازل يمكن أن يكون مختلفاً قليلاً
لكنهم يستندون كلهم على خطة البناء الأساسية
من المهم أن تلاحظ أن خطة البناء الأساسية ليست المنزل بحد ذاته
إنها مجرد خطة
وبالمثل، فإن صف TextView يستخدم لإنشاء نماذج الكائنات تلك
لذلك فإن هذه النماذج هي تلك التي تحتوي على القيم النصية الفعلية
لون النص، وأحجام النص
فكيف تبدو الواحدة من هذه الصفوف؟
Do you remember the boxes?
>> What boxes?
>> These boxes.
>> Huh! >> You do remember them?
>> Oh yeah, yeah.
I do remember them.
They're variables, where you can put the value inside.
Yeah, and
you can combine multiple of these variable to create a larger Java object.
>> Oh, so you can take two or more variable and
make into a something bigger.
>> Exactly. >> Okay
>> [SOUND] Like a TextView.
>> Yeah. So, we can have an integer variable.
>> This is for the font size.
>> Exactly.
>> Okay. [SOUND]
>> And then you can also have
a string variable.
>> And the string variable for the actual text itself.
>> Yeah, and those can go inside the TextView as the state of the TextView.
>> And then we can interact with those things using different methods that
we're going to play with next.
>> Exactly.
>> Okay. Let's do that.
>> As we mentioned earlier, showing a TextView on the screen like this
is actually controlled by a Java object within the app.
This is an example of a TextView Java object.
It's like a box, and inside of it, it holds state.
The state is made up of a bunch of fields.
A field is a variable, like in lesson two,
when we learned about global variables.
We can have a text field to store the today string,
which is going to be the text that's ultimately displayed on the screen.
We can also have an integer field to store the font size of this text.
There's also a bunch of other fields,
like text color, font family that make up the state of the TextView.
I just didn't draw them in this picture.
To interact with this Java object and
change it while the app is running, we can call methods on the TextView.
We learned about methods earlier in lesson three.
Some example methods on a TextView are setText and getText.
You can also have methods like setTextSize or getTextSize, and so on.
Each of these methods just executes a list of instructions.
You can have more complex methods like onDraw,
which handles drawing a TextView onto the screen.
So overall, this TextView object holds state information on what this TextView
contains, and you can call methods to interact with this TextView,
such as to modify the state, or to do more complex actions.
To show an ImageView on the screen, we actually have a Java object for
ImageView inside of the app.
This particular ImageView contains state information, like which image should
be shown, as well as the scale type, like center crop.
Again there's a bunch of other fields that make up the state of an ImageView,
I just didn't draw them here.
There's methods like setImage, setScaleType, and even more complex
methods, like onDraw, to handle drawing this ImageView onto the screen.
Note that, as developers,
we don't explicitly have to call onDraw to tell it to draw onto the screen.
Android handles calling this automatically for us, but it is useful
to be able to call these methods to change the ImageView, for example.
So how do we know what all the fields are inside the state of an ImageView,
and what all the methods are of this ImageView?
To answer that question we have to look at the class definition for that object.
It's a file called TextView.java,
similar to how we defined MainActivity.java.
Inside this class TextView file, we have a bunch of code that
talks about the state of the TextView as well as the methods.
Now it doesn't say state and methods exactly, but it just contains
information on the state and it contains information on the methods.
You can thank of this as defining the rules of how a TextView behaves.
This object instance can hold specific information like the text string today.
Or the text size 18.
You can also use this class to create even more TextView object instances,
and these could have a different text string value.
I think this one could hold text that says hello,
and this one could hold text that says goodbye.
They could have different font sizes, different text colors, etc.
However, they're all based off of the class template.
You may find it hard to distinguish between a class and an object instance,
but that's okay.
It takes some time to get used to.
Here's an analogy to help you.
You can think of it as creating a floor plan for a house.
You can use this floor plan to create the actual homes.
Each of these homes can be slightly different.
But they're all based off of this base floor plan.
It's important to note that the floor plan is not a house itself.
It's just the plan.
Similarly, the TextView class is used to create these object instances.
So these instances are the ones with the actual text values,
text color values, and text sizes.
So what does one of these classes look like?
¿Recuerdas las cajas?
¿Qué cajas?
Estas cajas.
¿Te acuerdas?
Claro, las recuerdo.
Son variables donde puedes poner un valor dentro
Sí.
Y puedes combinar múltiples variables
para crear un objeto JAVA mayor.
Así que tomas dos o más variables
para hacer algo más grande.
-Exacto. -Vale.
Como un TextView.
Si, podemos tener una variable entera.
Esta es para el tamaño de la fuente.
- Exacto. - Vale.
Y puedes tener también una variable de cadena de texto.
Y la variable es para el propio texto.
Sí y ambas van dentro del TextView como el estado de TextView.
Y podemos interactuar con todo usando diferentes métodos
que usaremos después.
Exacto.
Vale, probémoslo.
Como decíamos, la aparición de TextView en una pantalla como esta
se controla con un objeto JAVA dentro de la aplicación.
Esto es un ejemplo del objeto JAVA de TexView.
Es como una caja y dentro contiene un estado.
El estado se compone de un montón de campos.
Un campo es una variable, como en la lección 2,
cuando estudiamos las variables globales.
Puede haber un campo de texto
que contenga la cadena de texto Hoy
que será el texto que muestre la pantalla al final.
También puede haber un entero de campo
que contenga el tamaño de fuente de este texto.
Hay muchos más campos,
como color del texto o tipo de fuente
que conforman el estado del TextView.
No los representé en este dibujo.
Para interactuar con este objeto JAVA
y cambiarlo mientras se ejecuta la aplicación
podemos consultar métodos en el TextView.
En la lección 3, estudiamos los métodos.
Algunos métodos en un TextView son setText y getText.
Hay también métodos como setTexSize, getTextSize y así.
Cada método ejecuta una lista de instrucciones.
Hay métodos como onDraw mucho más complejos,
que se encarga de dibujar un TexView en la pantalla.
Todo este objeto TextView contiene información del estado
de lo que contiene este TextView.
Y para interactuar con este TextView podemos consultar métodos
para modificar su estado, o realizar tareas más complejas.
Para mostrar el ImageView en la pantalla
hay un objeto JAVA para ImageView dentro de la aplicación.
Este ImageView contiene
información del estado como qué tipo de imagen mostrar,
escala, recortar o centrar.
El estado de un ImageView puede tener muchos campos.
Nos los dibujaré aquí.
Hay métodos como setImage, setScaleType,
y más complejos como onDraw
para manejar el dibujo de esta ImageView en la pantalla.
Como programadores no tenemos
que recurrir a onDraw explícitamente
para decirle que lo dibuje en la pantalla.
Android automáticamente se encarga de consultarlo.
Pero es útil poder recurrir a todos estos métodos
para cambiar este ImageView por ejemplo.
¿Cómo sabemos los campos que hay
dentro del estado de ImageView
y cuáles son los métodos de este ImageView?
Para responder a esta pregunta,
hay que buscar la definición de clase para este objeto.
Es un archivo que se llama TextView.java
parecido al que definimos como MainActivity.java.
Dentro de este archivo class TextView hay un montón de códigos
que nos dan información sobre el estado y métodos de TextView.
Aunque no dice estado y métodos exactamente
solo contiene información del estado y los métodos.
Serían las reglas que definen el comportamiento del TextView.
Esta instancia de objeto puede contener información específica
como la cadena de texto Hoy o el tamaño de fuente 18.
Incluso puedes usar esta clase
para crear más instancias del objeto TextView.
Estas dos podrían tener diferentes valores de texto.
Esta podría incluir un texto que dice Hola
y esta podría contener un texto que dice Adios.
Podrían tener diferente fuentes, tamaños, colores, etc.
Sin embargo, todas se basan en la plantilla de clase.
Parece difícil diferenciar entre clase, objeto o instancia,
pero es normal.
Lleva algún tiempo acostumbrarse.
Esta analogía podría ayudarte.
Imagínate que es como crear
el plano del suelo para una casa.
Puedes usarlo para crear casas.
Cada casa puede ser un poco diferente
pero todas están basadas en el mismo espacio del plano.
Es importante señalar que el plano del suelo no es la casa.
Es solo un plano.
Del mismo modo, la clase TextView
se usa para crear instancias de un objeto.
Y estas instancias contienen los valores del texto actual,
color y tamaños del texto.
¿Qué aspecto tienen cada una de estas clases?
Tu te rappeles des boîtes ?
Quelles boites ?
Ces boîtes.
Huh! Tu te souviens d'elles ?
Oh ouais, ouais.
Je me souviens d'elles.
Ce sont des variables, où on peut mettre une valeur à l'intérieur.
Ouais, et
On peut combiner ces variables pour créer un objet Java plus grand.
Oh, tu peux prendre deux ou plusieurs variables et
faire quelque chose de grand.
Exactement. Okay
Comme un TextView.
Ouais. Alors, nous pouvons avoir une variable entière.
C'est pour la taille de la police.
Exactement.
Okay.
Et puis, tu peux aussi avoir
chaîne de variables.
Et la chaîne de variables pour le texte lui-même.
Qui peuvent aller à l'intérieur de la TextView dans l'état de la TextView.
On peut interagir avec ces choses en utilisant différentes méthodes
Nous allons jouer avec la prochaine.
Exactement.
Ok Faisons cela.
On l'a vu plutôt en vous montrant un TextView sur l'écran comme celui-ci
Il est contrôlé par un objet Java au sein de l'application.
Ceci est un exemple d'un objet TextView Java.
C'est comme une boîte, dans celle-ci il y a un état.
L'état est constitué d'un tas de domaines.
Un champ est une variable, comme dans la leçon deux,
quand nous avons vu les variables globales.
Nous pouvons avoir un champ de texte pour stocker la chaîne aujourd'hui,
qui va être le texte qui est finalement affiché sur l'écran.
On peut avoir un champ entier pour stocker la taille la police du texte.
Il y a aussi un tas d'autres domaines,
Comme la couleur du texte, la famille de polices qui composent l'état de la boite.
Je ne les ai pas dessiné dans cette image.
Pour interagir avec cet objet Java et
le changer pendant qu'on fait tourner le soft, on peut appeler des méthodes.
On a vu les méthodes plus tôt dans la troisième leçon.
Quelques exemples de méthodes sur un TextView sont setText et getText.
On peut avoir aussi SetTextSize ou getTextSize, et ainsi de suite.
Chacune de ces méthodes tout exécute une liste d'instructions.
Vous pouvez avoir des méthodes plus complexes comme OnDraw,
qui gère le dessin d'un TextView sur l'écran.
Cet objet TextView détient des infos d'état sur ce qu'est la TextView
et vous pouvez appeler des méthodes pour interagir avec cette TextView,
de nature à modifier l'état, ou à faire des actions plus complexes.
Pour afficher une ImageView sur l'écran, nous avons fait un objet Java pour
l'ImageView à l'intérieur de l'app.
Cette ImageView contient des infos sur l'état, comme comment l'image devrait
être montrée, ainsi que le type d'échelle, comme les center crop.
Il y a un tas d'autres domaines qui composent l'état d'une ImageView,
Je ne les ai pas dessiné ici.
Il y a des méthodes comme setImage, setScaleType, et des plus complexes
des méthodes, comme OnDraw, pour gérer ce dessin ImageView sur l'écran.
Notez que, en tant que développeurs,
on a pas besoin d'appeler OnDraw pour lui dire de dessiner sur l'écran.
Android appelle automatiquement pour nous, mais il est utile
de pouvoir appeler ces méthodes à changer l'ImageView, par exemple.
Comment savons-nous que tous les champs sont à l'intérieur de l'état d'une
ImageView, et toutes les méthodes sont elles dans cette ImageView ?
Nous devons regarder la définition de la classe pour cet objet.
Il y a un fichier appelé TextView.java,
Similaire à la façon dont nous avons défini MainActivity.java.
Dans ce fichier TextView de classe, nous avons un tas de code qui
parlent de l'état du TextView ainsi que des méthodes.
Cela ne dit pas les méthodes de l'état exactement, mais il contient toutes
les infos sur l'état et il contient des informations sur les méthodes.
On peut penser à ça comme la définition des règles sur le comportement TextView.
Cette instance d'objet peut contenir des infos comme la chaîne de texte.
Ou la taille du texte 18.
On peut utiliser cette classe pour créer encore plus d'objets de TextView,
Et ceux-ci pourraient avoir une valeur différente de la chaîne de texte.
Je pense que celui-ci pourrait contenir du texte qui dit bonjour,
et celui-ci pourrait montrer le texte qui dit au revoir.
Ils pourraient avoir différentes tailles de police, différentes couleurs etc...
Cependant, ils sont tous basés hors du modèle de classe.
C'est peut-être difficile de distinguer entre une classe et une instance d'objet,
mais ce n'est pas grave.
Il faut un certain temps pour s'y habituer.
Voici une analogie pour vous aider.
Vous pouvez y penser comme la création d'un plan d'étage d'une maison.
Vous pouvez utiliser ce plan d'étage pour créer des maisons réelles.
Chacune de ces maisons peut être légèrement différente.
Mais elles sont toutes basées hors de ce plan d'étage de base.
Il est important de noter que le plan n'e'st pas une maison lui-même.
C'est juste le plan.
De même, la classe TextView est utilisée pour créer ces instances d'objets.
Donc ces cas sont ceux avec les valeurs réelles de texte,
Valeurs de couleurs de texte, et les tailles de texte.
Alors à quoi une de ces classes ressemble ?
Masih ingat soal kotak?
>> Kotak apa?
>> Kotak ini.
>> Apa! >> Anda juga mengingatnya?
>> Oh ya, iya. Saya mengingatnya.
Mereka variabel, dan di dalamnya bisa ditaruh nilai.
Ya dan Anda bisa mengkombinasikan mereka untuk membuat objek Java yang lebih besar.
>> Jadi Anda bisa ambil dua atau lebih
dan buat sesuatu lebih besar.
>> Tepat sekali. >> Oke
>> Seperti TextView.
>> Ya. Jadi, kita bisa punya variabel integer.
>> Ini untuk ukuran huruf.
>> Tepat sekali. >> Oke.
>> Anda juga bisa punya variabel string.
>> Dan variabel string untuk teks asli
>> Ya, dan itu tidak bisa masuk kedalam TextView sebagai status TextView.
>> Kita bisa berinteraksi dengannya memakai metode berbeda kita bahas nanti.
>> Tepat sekali. >> Ayo lakukan.
>> Seperti yang disebutkan sebelumnya, menampilkan TextView di layar seperti ini
sebenarnya dikendalikan oleh objek Java di dalam aplikasi.
Ini adalah contoh objek Java TextView.
Ini seperti kotak, dan didalamnya, terkandung status.
Status ini dibuat dari banyak sekali bidang.
Bidang adalah variabel, seperti di pelajaran
kedua ketika kita mempelajari tentang vriabel global.
Kita bisa miliki bidang teks untuk menyimpan string hari ini,
yang merupakan teks yang akhirnya muncul di layar.
Kita juga bisa memiliki bidang integer untuk menyimpan ukuran huruf teks ini.
Ada banyak sekali bidang lainnya,
seperti text color, font family yang membuat keadaan TextView.
Saya tidak menggambarnya.
Untuk berinteraksi dengan objek Java ini dan
mengubahnya saat aplikasi berjalan, kita bisa panggil metode pada TextView.
Kita sudah belajar tentang metode di pelajaran ketiga.
Beberapa contoh metode pada TextView adalah setText dan getText.
Anda juga bisa miliki metode seperti setTextSize atau getTextSize, dll.
Masing-masing dari metode ini hanya mengeksekusi satu daftar instruksi.
Anda bisa miliki metode lebih komplek seperti onDraw,
yang menangani penggambaran TextView ke dalam layar.
Secara keseluruhan, TextView ini tentang memegang status informasi pada apa yang
TextView muat, dan Anda bisa panggil metode untuk berinteraksi dengan TextView
ini seperti memodifikasi status atau melakukan tindakan yang lebih komplek.
Untuk menampilkan ImageView pada layar, kita sebenarnya punya objek Java
untuk ImageView di dalam aplikasi.
ImageView khusus ini memuat informasi, seperti gambar yang harus
diampilkan, juga tipe skala, misal center crop.
Sekali lagi, ada banyak bidang lain yang membuat status ImageView,
Saya hanya tidak menggambarnya disini.
Terdapat metode seperti setImage, setScaleType, dan yang lebih komplek lagi
seperti onDraw, untuk menangani penggambaran ImageView dalam layar.
Catat, sebagai pengembang
kita tidak secara jelas memanggil onDraw untuk menyuruhnya menggambarkan ke layar.
Android menangani untuk kita panggilan ini secara otomatis, tapi berguna
untuk bisa memanggil metode ini untuk mengubah ImageView, contohnya.
Jadi, bagaimana kita tahu semua bidang yang berada di dalam status ImageView,
dan apa semua metode dari ImageView ini?
Untuk menjawab pertanyaan itu kita harus melihat kelas definisi objek tersebut.
Ini adalah berkas yang disebut TextView.java,
serupa dengan cara kita mendefinisikan MainActivity.java.
Di dalam kelas berkas TextView, ada banyak sekali kode yang
membicarakan tentang status TextView dan juga metode.
Untuk sekarang, tidak dikatakan secara langsung, tapi hanya terisi
informasi mengenai status dan metode.
Anda bisa menganggapnya mendefinisikan aturan cara TextView berperilaku.
Contoh objek ini dapat menyimpan spesifik informasi seperti teks string hari ini.
Atau ukuran teks 18.
Anda juga dapat menggunakan kelas ini untuk membuat contoh objek TextView lagi.
yang dapat memiliki nilai teks string berbeda.
Saya rasa yang satu ini bisa menyimpan teks yang mengatakan hello,
dan satu ini bisa menyimpan teks yang mengatakan goodbye.
Ukuran huruf mereka boleh berbeda, warna teks berbeda, dll.
Namun, mereka semua berasal dari template kelas.
Anda mungkin kesulitan dalam membedakan antara kelas dan contoh objek,
tapi tak apa.
Membutuhkan waktu agar terbiasa.
Berikut Analogi untuk membantu Anda.
Anda bisa menganggapnya seperti membuat rencana lantai untuk sebuah rumah.
Anda bisa menggunakan rencana lantai untuk membuat rumah yang sebenarnya.
Masing-masing rumah ini sedikit berbeda.
Tapi mereka semua didasari rencana lantai dasar.
Perlu dicatat kalau rencana lantai bukanlah rumah.
Ini hanya rencana.
Demikian pula, kelas TextView digunakan untuk membuat contoh objek tersebut.
Jadi contoh ini adalah salah satu dari nilai teks sebenarnya,
nilai warna teks dan ukuran teks.
Jadi, seperti apa rupa salah satu kelas?
Ricordi le scatole?
>>Quali scatole?
Queste scatole.
>>[SUONO] Eh! Te le ricordi?
>>Ah sì, sì.
>>Le ricordo.
>>Queste rappresentano le variabili, dove noi inseriamo i valori
Sì, e
si possono combinare diverse di queste per ottenere un oggetto java più grande.
>>Oh, così si possono prendere due o più variabili e combinarle
>>in qualcosa di più grande.
Esatto. >>Okay.
[SUONO] Come una TextView.
Sì. Così, possiamo avere una variabile intera
>>Questa è per la dimensione del testo
Esatto.
>>Okay. [SUONO]
E poi possiamo avere
una variabile stringa
>>E la variabile stringa contiene il testo.
Sì, e queste stanno dentro la TextView e ne indicano lo stato.
>>E quindi possiamo interagire con questi usando diversi
>>metodi che vedremo dopo
Esatto
>>Okay. Vediamo.
Come detto prima, una TextView come questa
è controllata da un oggetto java interno alla app.
Questo è un esempio di un oggetto java di tipo TextView
E' come una scatola, e al suo interno, individua uno stato.
Lo stato è rappresentato da un certo numero di campi.
Un campo è una variabile, come nella Lezione 2,
quando parlammo delle variabili globali.
Si può avere un campo di testo dove inserire la Stringa "Today"
che rappresenta il testo che viene mostrato sullo schermo.
Si può avere un campo intero in cui inserire la dimensione del testo.
Ci sono anche alcuni altri campi,
come il colore del testo, il font, che indicano lo stato della TextView.
Non sono indicati in questa immagine.
Per interagire con questo oggetto java e
modificarlo quando l'app è in esecuzione, possiamo chiamare i metodi sulla TextView.
Abbiamo imparato i metodi prima, nella lezione 3.
Esempi di metodi di una TextView sono setText e getText.
Ci sono anche metodi come setTextSize o getTextSize, e così via.
Ognuno di questi metodi esegue una lista di istruzioni.
Esistono metodi più complessi come onDraw,
che gestisce la rappresentazione della TextView sullo schermo.
Nel complesso, l'oggetto TextView possiede delle informazioni di stato su ciò
che contiene, e si possono chiamare metodi per interagire con essa,
cioè per modificarne lo stato, o compiere azioni più complesse.
Per mostrare una ImageView sullo schermo, c'è un oggetto java per
la ImageView nell'app.
Questa particolare ImageView contiene informazioni di stato, tipo l'immagine
da mostrare, la scala, il centercrop.
C'è un gruppo di altri campi che indicano lo stato di una ImageView.
Non sono stati indicati qui.
Ci sono metodi come setImage, setScaleType, ed altri metodi
più complessi, come onDraw, per gestire la riproduzione della ImageView su schermo.
Si noti che, come sviluppatori,
non dobbiamo esplicitamente usare onDraw per averne la rappresentazione su schermo.
Android gestisce questa chiamata per noi.
Ma è utile poter usare questi metodi per cambiare la ImageView, per esempio.
Perciò come sappiamo quali campi indicano lo stato di una ImageView,
e quali sono i metodi presenti in questa ImageView?
Per rispondere, diamo un'occhiata alla classe che definisce questo oggetto.
E' un file, chiamato TextView.java,
simile a quello che abbiamo chiamato MainActivity.java.
All'interno del file di classe della TextView, c'è del codice che
indica lo stato della TextView, così come i suoi metodi.
Però non mostra lo stato e i metodi particolari, ma contiene le
informazioni sullo stato e quelle sui metodi.
E' come una definizione delle regole che governano il comportamento di una TextView
Questa istanza dell'oggetto può contenere un dato specifico come la stringa Today
O la dimensione 18 per il testo
Si può usare questa classe per creare più istanze dell'oggetto TextView,
e queste possono avere un valore diverso della stringa di testo
Questa può avere il testo "Hello",
e questa il testo "Goodbye".
Oppure diverse dimensioni del testo, diversi colori, ecc.
Tuttavia, sono tutte basate sulla stessa classe.
Può essere difficile distinguere tra classe e istanza di un oggetto
ma va bene.
Ci vuole un po' di tempo per abituarsi.
Questa è un'analogia per aiutarti.
Immagine di creare il progetto di una casa.
Puoi usarlo per costruire delle vere case.
Ognuna può avere delle piccole differenze
Ma sono tutte basate sullo stesso progetto
E' importante notare che il progetto non è una casa.
E' solo un progetto.
Similmente, la classe TextView si usa per creare queste istanze dell'oggetto
Queste istanze hanno particolari valori del testo, e
dei suoi colori e dimensioni.
Quindi, a cosa assomiglia una di queste classi?
ボックスを覚えてる？
>> ボックス？
>> これこれ
>> ワオ！ >> 覚えてる？
>> うん、覚えてる。
覚えてるよ。
値を入れられる変数でしょ？
そう、
それを組み合わせて大きなJavaオブジェクトを 作ることもできるのよ。
>> ２つ以上の変数を使って、
さらに大きなものを作るんだね。
>> その通り。 >> 分かった。
>> TextViewみたいだね。
>> そう、だから整数の変数をつくることもできるわ。
>> これがほんとサイズだね。
>> その通り。
>> 分かった。
>> さらに文字列変数も
加えることができるの。
>> テキストに使う文字列だね。
>> TextViewのステートとしてTextViewに取り組まれる ことができるの。
>> これから学ぶ方法で、こういうものを
使うことができるんだね。
>> その通り。
>> じゃあやってみよう。
>> 前にも示したように、スクリーンにTextViewを表示するのは、
アプリの中のJavaオブジェクトで管理されています。
これがTextView Javaオブジェクトの例です。
ボックスのようなもので、その中にステートがあります。
ステートはたくさんのフィールドでできています。
レッスン２でグローバル変数について学んだように、
フィールドは変数です。
最終的にスクリーンに表示されるテキストである
todayという変数をテキストフィールドとして持つことができます。
このテキストのフォントサイズを決める整数フィールドを持つこともできます。
他にフィールドはいろいろあります。
テキストカラーやフォントファミリーなど、全てこのTextViewお ステートを作り出すものです。
このイメージにはないですが。
このJavaオブジェクトを使ったり、アプリの起動中に
変更したりするには、このTextViewの メソッドを使います。
レッスン３でメソッドについて学びました。
TextViewのメソッドの例には、setTextやgetTextなどが あります。
setTextSizeやgetTextSizeなどもあります。
それぞれのメソッドは特定の指令を実行します。
onDrawなどの複雑なメソッドも使うことができます。
これは、TextViewをスクリーンに描くためのものです。
一般的に、このTextViewオブジェクトは、
その中身のステート情報を持っていて、 メソッドを使って、このTextViewを使うことができます。
ステートを変えたり、それより複雑な動作を することができます。
スクリーンにImageViewを表示するには、 アプリの中に、
ImageViewのJavaオブジェクトがあります。
このImageViewは、表示画像、スケール、クロップなどの、
ステート情報を持っています。
他にもフィールドがありますが、
ここには書きませんでした。
setImage、setScaleTypeなど、さらに複雑なフィールドがあります。
onDrarなどは、このImageViewに描き込むためのものです。
デベロッパーとして、
onDrawをわざわざ読んで、スクリーンに描き込む ということはしなくてもいいです。
Androidが自動的にやってくれます。しかし、
ImageViewを変えるメソッドを覚えておくと 便利です。
このImageViewの中のすべてのフィールドを どうやって見ることができるのでしょうか。
また、メソッドを見るにはどうすればいいでしょうか。
答えは、オブジェクトのクラスの定義にあります。
TextView.javaというファイルです。
MainActivity.javaを定義したのと似ています。
このTextViewファイルには、ステートやメソッドを示す
コードがたくさんあります。
ステートやメソッドと書いてあるわけではありませんが、
ステートとメソッドに関する情報が含まれています。
これは、TextViewが動作する上でのルールと考えて みるといいかもしれません。
このオブジェクトは、todayという文字列など 具体的な情報を持つことができます。
またはテキストサイズ１８などです。
このクラスを使って、さらにTextViewオブジェクトを 作ることもできます。
これらは違ったテキスト文字列を持つことができます。
例えば、これはhelloというテキストをもち、
これはgodbyeというテキストを持つことができます。
違ったフォントサイズや色を持つこともできます。
それでも、すべてはクラステンプレートを 元にしてできています。
クラスとオブジェクトインスタンスを区別するのは、 難しいかもしれません。
でも大丈夫です。
慣れるには少し時間がかかります。
類似を使ってみると、
部屋の見取り図を作るのと似ています。
この見取り図を使って実際に家を建てることが来ます。
これらはそれぞれ違うかもしれませんが、
すべてこの見取り図を基にしています。
見取り図は家自体ではないということが 重要です。
これは図にすぎません。
同じように、TextViewクラスは、これらの オブジェクトインスタンスを作るためにあります。
これのインスタンスが実際のテキストや、テキストカラー、そしてテキストサイズを
持ちます。
クラスはどのようなものなのでしょうか。
이 박스들 기억하세요?
>> 무슨 박스 말인가요?
>> 이거요.
>> 아! >> 이제 기억나세요?
>> 오 예, 예.
이제 기억났어요.
변수라고 하잖아요. 특정한 값을 저장할 수 있는 곳이죠.
맞아요. 그리고
이 변수들을 여러 개 조합해서 자바 객체를 만들 수 있죠.
>> 오, 그러니까 두 개 이상의 변수를 가지고
더 큰 뭔가를 만들 수 있다는 말이죠.
>> 맞아요. >> 알겠어요
>> [SOUND] 텍스트뷰처럼 말이죠.
>> 그래요. 이제 정수형 변수를 만들 수 있어요.
>> 이건 폰트 사이즈고요.
>> 맞아요.
>> 알겠어요. [SOUND]
>> 이렇게 문자형 변수를
가질 수도 있어요.
>> 문자형 변수 안에는 실제 텍스트가 들어가는 거네요.
>> 그래요, 텍스트뷰 안에 스테이트 형태로 들어갈 수 있어요.
>> 그리고 다음에 등장하는 다양한 메소드를 이용해서
이 변수들과 교류할 수 있는 거로군요.
>> 바로 그래요.
>> 좋아요. 한 번 해봅시다.
>> 이미 설명드린 대로, 텍스트 뷰를 이렇게 스크린 상에 표시하는 것은
앱 안의 자바 객체를 통해 컨트롤 합니다.
이것은 텍스트뷰 자바 객체를 예로 들어본 것인데요.
이렇게 상자처럼 그 안에 스테이트를 저장하는 거죠.
스테이트는 여러 개의 필드로 구성됩니다.
필드는 2과에서 배운 대로 변수의 하나예요.
글로벌 변수를 공부할 때 설명했었죠.
여기 '투데이' 스트링을 이 텍스트 필드에 저장할 수 있어요.
이 필드에 저장한 텍스트가 나중에 스크린 상에 표시되는 거죠.
이 텍스트의 폰트 사이즈를 저장할 정수 필드를 설정할 수도 있어요.
여러 가지 다른 필드도 있어요.
텍스트 색이나 폰트 종류처럼 말이죠. 이들이 텍스트뷰 내의 스테이트를 구성합니다.
이 그림에는 다 그리지 않았어요.
자바 객체와 교류하고 앱이 실행중일 때
이를 변화시키기 위해서, 텍스트뷰 상에서 메소드를 호출할 수 있습니다.
3과에서 이미 메소드에 관해 배운 바 있죠.
텍스트뷰 상에서의 메소드에는 setText와 getText 등이 있습니다.
setTextSize 혹은 getTextSize 등의 메소드도 역시 사용 가능합니다.
각각의 메소드는 일군의 지시사항만을 수행합니다.
더 복잡한 형태의 메소드를 사용할 수도 있어요.예를 들어 onDraw는
텍스트뷰를 스크린 상에 표시하는 역할을 수행하죠.
요약하자면, 이 텍스트뷰 객체는 그 내용을 스테이트에 저장하며,
메소드를 호출하여 이 텍스트뷰의 스테이트를 수정하거나,
더 복잡한 액션을 수행하도록 텍스트뷰와 교류할 수 있는 것입니다.
이미지뷰를 스크린에 구현하기 위해, 이미지뷰 용의 자바 객체가
이미 앱 안에 자리하고 있죠.
이 이미지뷰에는 이미지를 어떻게 표시할 것인가에 대한 정보 및
가운데 정렬과 같은 텍스트 구성 관련 스테이트 정보가 들어 있습니다.
이미지뷰의 스테이트를 구성하는 다른 필드들도 있어요.
여기에는 그리지 않았습니다.
setImage이나 setScaleType 같은 메소드, 그리고 onDraw처럼
이 이미지뷰를 스크린에 그려내 주는 더 복잡한 메소드도 있습니다.
명심하실 것은, 우리 같은 개발자들의 경우
스크린에 구현하기 위해 onDraw를 굳이 호출할 필요는 없다는 겁니다.
안드로이드에서는 자동으로 호출이 이뤄집니다. 하지만 이런 메소드를
호출하여 이미지뷰를 바꾸는 법을 알면 확실히 유용하겠죠.
그럼 어떤 필드가, 그리고 어떤 메소드가 이미지뷰 스테이트에
들어가 있는 지를 우리는 어떻게 알 수 있을까요?
이 질문에 답하려면, 해당 객체의 클래스 정의를 살펴볼 필요가 있습니다.
이건 TextView.java.라고 하는 파일인데,
우리가 MainActivity.java.를 정의한 방식과 유사합니다.
이 클래스 텍스트뷰 파일에는, 코드 덩어리가 들어 있습니다.
메소드 뿐만 아니라 텍스트뷰의 스테이트도 알려주죠.
지금 상황에선 스테이트나 메소드를 정확히 알려주는 게 아니라, 그에 관한
정보만을 담고 있을 뿐입니다.
텍스트뷰가 작동하는 규칙만 정의해 놓은 걸로 생각하시면 돼요.
이 객체 변수는 'today'라고 적힌 텍스트, 혹은 텍스트 사이즈 18과 같은
특정한 정보를 저장할 수 있습니다.
이 클래스를 사용하여 더 많은 텍스트뷰 객체 인스턴스를 만들 수 있으며,
여기에는 다른 텍스트 값이 들어갈 수 있죠.
여기에 'hello'라는 텍스트 값이 들어갈 수 있을 것 같고,
여기엔 'goodbye'라는 텍스트가 들어갈 수 있겠네요.
폰트 크기나 글자색을 다르게 지정하는 등의 일이 가능합니다.
하지만, 이들은 전부 클래스 템플릿을 기반으로 합니다.
클래스와 객체 인스턴스를 구분하는 게 좀 어렵게 느껴지실 지도 모르겠군요.
하지만 괜찮아요.
익숙해 지는덴 시간이 걸리는 법이죠.
이렇게 비유하면 이해가 쉬울 거예요.
집의 평면도를 설계하는 것과 같다고 생각하시면 돼요.
평면도를 사용해서 실제 집을 만들잖아요.
각각의 집 구조는 다 조금씩 달라질 수 있죠.
하지만 그 모두는 평면도에 기반해서 만들어지는 겁니다.
평면도가 집 그 자체는 아니라는 걸 인지하는 게 중요해요.
그건 설계도일 뿐이죠.
마찬가지로, 텍스트뷰 클래스는 객체 인스턴스를 만드는 데 사용됩니다.
실제 텍스트 값이나 텍스트 색 혹은 사이즈 등의 정보를 지니고 있는 건
이 인스턴스 들이예요.
그럼 각각의 클래스는 어떤 모습일까요?
Você lembra das caixas?
- Que caixas? - Estas caixas! [SOM]
- Você lembra delas? - Sim!
Sim, eu lembro delas.
São variáveis onde pode colocar o valor.
Sim, e é possível combinar várias destas variáveis
para criar um objeto Java maior.
Para poder pegar duas ou mais variáveis
e transformar em algo maior?
- Exato. - Ok!
[SOM] Como uma TextView.
Sim, então podemos ter uma variável integral.
Esta será para o tamanho da fonte.
- Exato. - Ok.
E você pode ter uma variável string.
E a variável string para o próprio texto.
Sim, e essas podem ir para dentro da TextView como o estado da TextView.
E aí podemos interagir com essas coisas
usando os métodos que ensinamos em seguida.
- Exato. - Tudo bem, vamos lá.
Como mencionamos anteriormente, mostrar uma TextView na tela desse jeito
é na verdade controlado por um objeto Java no aplicativo.
Esse aqui é um exemplo de um objeto TextView Java.
É como uma caixa, e dentro, tem o Estado.
O Estado é constituído por um alguns campos.
Um campo é uma variável, como na Lição 2,
com as variáveis globais.
Nós podemos ter um campo de texto para armazenar a string Hoje,
que vai ser o texto a exibir na tela.
Também podemos ter um campo integral para armazenar o tamanho de fonte do texto.
Também outros campos, como cor do texto, família da fonte,
compõem o estado da TextView.
Eu só não os escrevi nesta imagem.
Para interagir com este objeto Java e mudá-lo durante a execução do aplicativo,
Nós podemos invocar métodos na TextView.
Aprendemos sobre métodos anteriormente na Lição 3.
Alguns exemplos de métodos de TextView são setText e getText.
Também pode ter métodos como setTextSize,
ou getTextSize, e assim por diante.
Cada um destes métodos executa apenas uma lista de instruções.
Você pode ter métodos mais complexos, como o onDraw,
que permite desenhar uma TextView na tela.
No geral, este objeto TextView mantém informações do estado
que a TextView contém,
e você pode invocar métodos para interagir com a TextView,
como modificar o Estado, ou fazer ações mais complexas.
Para mostrar uma ImageView na tela, nós temos um objeto Java
para a ImageView dentro do aplicativo.
Esta ImageView em particular contém informações de estado,
como a imagem que deve ser mostrada,
bem como o ScaleType e o centerCrop.
Mais campos compõem o estado da ImageView, eu só não os escrevi aqui.
Há métodos como setImage, setScaleType,
e métodos ainda mais complexos, como o onDraw,
para desenhar esta ImageView na tela.
Note que, como desenvolvedores,
não temos que chamar explicitamente onDraw para desenhar na tela.
Android faz essa chamada automaticamente para nós.
Mas é útil saber invocar estes métodos para, por exemplo, mudar a ImageView.
Então como sabemos quais os campos dentro de um estado de ImageView,
e todos os métodos desta ImageView?
Para responder, precisamos olhar para a definição da classe desse objeto.
É um arquivo chamado TextView.java,
semelhante à forma como definimos MainActivity.java.
No arquivo dessa classe de TextView, temos um monte de código
que fala do estado da TextView, bem como dos métodos.
Ele não diz estado e métodos exatamente,
mas contém informações sobre o estado e informações sobre os métodos.
Você pode pensar nisso como definir as regras de como uma TextView se comporta.
Esta instância de objeto pode conter informações específicas, como a string de texto Hoje.
ou o tamanho de texto 18.
Também podemos usar esta classe para criar mais instâncias de objetos TextView,
e estas podiam ter um valor de string diferente.
Acho que esta poderia conter um texto que diz Olá,
e esta poderia conter texto que diz Adeus.
Poderiam ter diferentes tamanhos de fonte, cores, etc.
Porém, todas são baseadas no modelo de classe.
Você pode achar difícil distinguir entre classe e instância de objeto,
mas tudo bem.
Leva algum tempo até se acostumar.
Olhe uma analogia para ajudá-lo.
Você pode pensar nisso como a criação da planta de uma casa.
Pode usar esta planta para criar casas de verdade.
Cada casa pode ser um pouco diferente.
Mas todas elas são baseadas nesta planta.
Importa notar que a planta em si, não é uma casa.
É apenas um plano.
A classe TextView é usada de forma similar para criar estas instâncias de objetos.
Então estas são as instâncias que contêm valores de texto,
de cores de texto e de tamanhos de texto.
Então, como é uma dessas classes?
Ты помнишь коробки?
>> Какие коробки?
>> Вот эти.
>> Ха! >> Ты их помнишь?
>>А! Да-да.
Помню.
Это переменные, в которые можно вложить величину.
Да, и можно
соединить множество этих переменных, чтобы создать большой Java объект.
>> Чтобы можно было взять две или больше
переменных, создать нечто большее.
>> Точно. >> Ладно.
>> Как TextView.
>> Ага. Чтобы у нас была целая переменная.
>> Это для размера шрифта.
>> Точно.
>> Хорошо.
>> А еще можно создать
строковую переменную
>> И строковую переменную для самого текста.
>> Да, и их можно сложить в TextView как состояние TextView.
>> И тогда можно взаимодействовать с ними, используя различные
методы, с которыми мы потом поиграем.
>> Именно.
>>Ладно. Начнем.
>> Как мы упоминали ранее отображение TextView на экране вот таким образом
управляется объектом Java внутри приложения.
Это пример объекта Java TextView.
Это как коробка, а внутри нее находится состояние.
Состояние состоит из кучи полей.
Поле это переменная, как в уроке два,
когда мы узнали о глобальных переменных.
У нас может быть текстовое поле для хранения строки today,
это будет текст, который полностью отражаетя на экране.
У на может быть поле целых чисел для хранения размера шрифта этого текста.
Есть и другие поля, как
цвет текста, вид шрифта, что и составляет состояние TextView.
Я просто не рисовала их на этой картинке.
Для взаимодействия с этим объектом Java и его
изменения во время работы приложения, мы можем вызвать метод на TextView.
Мы уже учили что такое методы на третьем уроке.
Некоторые методы-примеры на TextView это setText и getText.
У вас также могут быть такие методы как setTextSize или getTextSize и тд.
Каждый из этих методов просто выполняет список инструкций.
Методы могут быть и более сложные, как onDraw, который
отвечает за выведение TextView на экран.
Так что в целом, этот объект TextView содержит информацию о том, что этот
TextView содержит и вы можете вызывать методы чтобы взаимодействовать с этим
i>TextView, как например, изменять состояние или производить более сложные
действия. Чтобы покахать ImageView на экране, нам нужен Java объект
для ImageView внутри приложения.
Этот ImageView содержит инфор- мацию о состоянии - какое изображение
следует показывать, а также тип масштаба, например, обрез по центру.
Опять же, есть другие поля, составляющие состояние ImageView,
я просто их тут не нарисовала.
Есть такие методы как setImage, setScaleType, и более сложные методы
вроде onDraw, чтобы вывести этот ImageView на экран.
Помните, как разработчикам,
нам не нужно открыто вызывать onDraw, чтобы заставить его выводить на экран
Android автоматически делает вызов вместо нас, но нам полезно
уметь вызывать эти методы, чтобы изменить ImageView, например.
Так как мы узнаем какие все поля внутри состояния ImageView,
и какие все методы этого ImageView? Чтобы ответить
на этот вопрос, нам нужно посмотреть определение класса для этого объекта.
Это файл под названием TextView.java,
похоже на то, как мы определяли MainActivity.java.
Внутри этого файла класса TextView у нас есть группа кодов, которая
говорит о как состоянии TextView, так и о методах.
Она не говорит в точности "состояние" и "методы", а просто содержит
информацию по состоянию и по методам. Можете считать
это определением правил поведения TextView. Этот экземпляр класса
может содержать конкретную информацию как, например, текстовая строка Тoday
или размер текста 18. Еще
можно использовать этот класс, чтобы создать еще больше экземпляров класса
TextView и у них может быть другое
значение текстовой строки. Думаю, в этом может быть текст "привет",
а в этом может быть текст со словами "до свидания".
У них могут быть разные размеры шрифтов, цвета текста и т.д.
Однако, все они отталкиваются от шаблонов класса.
Может, вам будет трудно различить класс и экземпляр класса,
но это нормально.
К этому надо привыкнуть.
Вот вам аналогия в помощь.
Можете думать об этом как о создании плана-схемы этажа дома.
Можно испоьзовать этот план для создания настоящего дома.
Каждый из домов будеть чуть отличаться.
Но все они строились по одному плану-схеме.
Важно помнить, что план этажа это еще не сам дом.
Это только план.
Вот и класс TextView используется для создания этих экземпляров класса.
Поэтому эти экземпляры класса содер- жат действующие текстовые величины,
величины цвета текста и его размера.
Так как же выглядит один из этих классов?
Kutuları hatırlıyor musun?
>> Hangi kutular?
>> Bu kutular.
>> Ah! >> Bunları hatırlıyor musun?
>> Oh evet, evet.
Hatırlıyorum.
Bunlar içine değer koyduğun değişkenler.
Evet
ve daha büyük bir Java nesnesi oluşturmak için çok sayıda değişken birleştirilebilir.
>> Ah, yani iki ya da daha fazla değişkeni alıp
daha büyük bir şey yapabilirsin.
>> Kesinlikle. >> Tamam.
>> [SES] TextView gibi.
>> Evet. Böylece bir tam sayı değişkenimiz olabilir.
>> Bu font boyutu için.
>> Kesinlikle.
>> Tamam. [SES]
>> Ve ayrıca bir
string değişkenin olabilir.
>> Ve metnin kendisi için bir string değişkeni.
>> Evet ve bunlar TextView’un durumu olarak TextView’un içine giderler.
>> Ve sonra birazdan ele alacağımız farklı yöntemleri kullanarak
bunlarla etkileşimde olacağız.
>> Kesinlikle.
>> Peki. Hadi yapalım.
>> Daha önce bahsettiğimiz gibi ekranda bunun gibi bir TextView gösterilmesi
aslında uygulama içindeki bir Java nesnesi tarafından kontrol edilir.
Bu bir TextView Java nesne örneğidir.
Bir kutu gibidir ve içinde bir durum içerir.
Bu durum bir dizi alandan oluşur.
Bir alan, genel değişkenleri öğrendiğimiz ikinci derste
öğrendiğimiz gibi bir değişkendir.
“Today” dizesini içeren bir metin alanımız olabilir
ve bu nihai olarak ekranda görünecek olan metindir.
Aynı zamanda bu metnin font büyüklüğünü gösteren bir tam sayımız olabilir.
Metin rengi, font ailesi gibi
TextView durumunu oluşturan bir dizi başka alanımız daha bulunur.
Sadece onları bu resimde çizmedim.
Bu Java nesnesiyle etkileşimde olmak ve
uygulama çalışırken değiştirmek için TextView’da yöntemler çağırabiliriz.
Yöntemleri daha önce üçüncü derste öğrendik.
Bir TextView üzerinde bazı örnek yöntemler setText ve getText’dir.
Ayrıca setTextSize veya getTextSize vb. yöntemleriniz olabilir.
Tüm bu yöntemler sadece bir yönerge listesini çalıştırır.
onDraw gibi ekran üzerinde bir TextView çizmeyi yöneten
daha karmaşık yöntemleriniz olabilir.
Yani bütün olarak bu TextView nesnesi bu TextView’ün durum bilgisini içerir.
ve bu TextView ile etkileşimde olmak için durumu değiştirmek veya,
daha karmaşık eylemler yapmak gibi yöntemler çağırabilirsiniz.
Ekranda bir ImageView göstermek için uygulama içinde ImageView için
bir Java nesnemiz var.
Bu belirli ImageView hangi resmin gösterilmesi gerektiği bilgisi yanı sıra
‘ortalayarak kırp’ ölçekleme tipi gibi durum bilgisini içerir.
Yine bir ImageView durumunu oluşturan bir dizi başka alan bulunur,
sadece onları burada çizmedim.
setIMage, setScaleType gibi yöntemler vardır ve hatta
bu ImageView’ü ekranda çizmeyi yöneten onDraw gibi daha karmaşık yöntemler.
Dikkat edin, geliştiriciler olarak,
ekranda çizim yapmasını söylemek için açık olarak onDraw’u çağırmak zorunda değiliz.
Android bu çağrıyı bizim için otomatik olarak yapar ancak örneğin
ImageView’ü değiştirmek için bu yöntemleri çağırabilmek yararlıdır.
Öyleyse bir ImageView durumu içindeki tüm bu alanların ne olduğunu ve
bu ImageView’un tüm yöntemlerinin ne olduğunu nasıl biliriz?
Bu soruya cevap vermek için bu nesnenin sınıf tanımlamasına bakmamız gerekir.
Bu TextView.java adı verilen bir dosyadır,
aynı MainActivity.java’yı tanımladığımız gibi.
Bu TextView sınıf dosyası içinde bir dizi kodumuz bulunur ve
bunlar TextView durumu yanı sıra yöntemler ile ilgilidir.
Tam olarak durum ve yöntemler demez ancak
durum hakkında bilgi içerir ve yöntemler hakkında bilgi içerir.
Bunu TextView’ın nasıl davrandığına dair belirleyici kurallar olarak düşünün.
Bu nesne örneği metin dizesi “today” gibi belirli bir bilgiyi saklayabilir.
ya da metin boyutu 18 gibi.
Bu sınıfı ayrıca daha fazla TextView nesne örneği oluşturmak için kullanabilirsiniz
ve bunların farklı bir metin string değeri olacaktır.
Sanırım bu “hello” diyen bir metin içerebilir
ve bu “goodbye” diyen bir metin içerebilir.
Farklı font boyutları, farklı metin renkleri vs. olabilir.
Bununla birlikte hepsi sınıf şablonuna dayılıdırlar.
Bir sınıf ile bir nesne örneğini ayırmanın zor olduğunu düşünebilirsiniz,
sorun değil.
Alışmak biraz zaman alacaktır.
İşte size yardım edecek bir benzetme.
Bunu bir evin kat planı yapmak gibi düşünebilirsiniz.
Bu kat planını gerçek evler yapmak için kullanabilirsiniz.
Bu evlerin her biri biraz farklı olabilir.
Ancak hepsi bu ana kat planına dayalıdır.
Bu kat planının evin kendisi olmadığını dikkate almak önemlidir.
Bu sadece bir plandır.
Aynı şekilde, TextView sınıfı bu nesne örneklerini oluşturmak için kullanılır.
Yani gerçek metin değerlerini, metin renk değerlerini ve metin boyutlarını
içeren bu örneklerdir.
O halde bu sınıflardan biri neye benzer?
Anh có nhớ các hộp đó không?
Hộp nào cơ?
Những chiếc hộp này.
Ồ! Anh còn nhớ chúng chứ?
À có chứ.
Tôi nhớ chúng.
Chúng là các biến mà bạn có thể gán giá trị.
Đúng vậy,
và bạn có thể kết hợp nhiều biến để tạo ra một đối tượng Java lớn hơn.
Ồ, vậy bạn có thể kết hợp hai hoặc nhiều biến
làm thành một cái gì đó lớn hơn.
Chính xác. Được rồi
[Âm thanh] Giống như một TextView.
Đúng vậy. Ta có thể có một biến số nguyên.
Biến này cho kích thước font chữ.
Chính xác.
Được rồi. [Âm thanh]
Và sau đó bạn cũng
có thể có một biến chuỗi.
Và các biến chuỗi cho các văn bản thực tế.
Vâng, các biến chuỗi có thể đi vào TextView như tậpTextView.
Và sau đó chúng ta có thể tương tác sử dụng phương pháp khác nhau
mà chúng ta sẽ bàn tiếp theo.
Chính xác.
Được rồi. Hãy làm điều đó.
Như chúng tôi đã đề cập trước đó, xuất TextView ra màn hình như thế này
thực sự bị kiểm soát bởi một đối tượng Java trong ứng dụng.
Đây là một ví dụ về một TextView Java.
Nó giống như một cái hộp, và bên trong nó chứa một tập.
Các tập được tạo thành bởi một loạt các trường.
Mỗi trường là một biến, như trong bài hai,
khi chúng ta biết về các biến toàn cục.
Chúng tôi có một trường văn bản để lưu trữ chuỗi today,
là văn bản sẽ được hiển thị cuối cùng trên màn hình.
Ta cũng có thể có một trường số nguyên lưu trữ kích thước font chữ văn bản này.
Còn có nhiều trường khác,
như màu chữ, font chữ tạo nên tập TextView.
Tôi chỉ không vẽ chúng vào tranh này.
Để tương tác với đối tượng Java này và
thay đổi nó khi ứng dụng đang chạy, ta có thể gọi phương pháp trên TextView.
Ta đã học về các phương pháp ở bài ba.
Một số phương pháp ví dụ về TextView là setText và gettext.
Bạn cũng có thể có các phương pháp như setTextSize hoặc getTextSize, vân vân.
Mỗi phương pháp này chỉ làm theo một danh sách các hướng dẫn.
Bạn có thể có các phương pháp phức tạp hơn như OnDraw
để xử lý việc vẽ một TextView lên màn hình.
Về tổng thể, đối tượng TextView này giữ thông tin tâp mà TextView này chứa
và bạn có thể gọi phương pháp để tương tác với TextView này,
chẳng hạn như để thay đổi tập, hay thực hiện những thao tác phức tạp hơn.
Để hiển thị một ImageView trên màn hình, chúng tôi có một đối tượng Java cho
ImageView trong ứng dụng.
ImageView này có chứa trạng thái của tập, giống như hình ảnh nào nên được hiển thị,
cũng như các loại kich cỡ, hoặc cắt ở giữa.
Một lần nữa có một loạt các trường khác tạo nên tập ImageView,
Tôi chỉ không vẽ chúng ở đây.
Có các phương pháp như setImage, setScaleType, và phức tạp hơn
như OnDraw, để xử lý các việc vẽ ImageView này lên màn hình.
Lưu ý rằng, là nhà phát triển,
chúng ta không cần phải gọi OnDraw để vẽ lên màn hình.
Android đã tự động xử lý thao tác này cho chúng ta, nhưng rất hữu ích
để gọi những phương pháp chẳng hạn như, khi thay đổi ImageView.
Vậy làm thế nào chúng ta biết tất cả các trường ở trong tập ImageView này,
và tất cả các phương pháp là của ImageView này là gì?
Để trả lời câu hỏi đó, chúng ta xem lớp định nghĩa của đối tượng đó.
Đó là một tập tin gọi là TextView.java,
tương tự như cách chúng ta định nghĩa MainActivity.java.
Bên trong tập tin TextView này, ta có một loạt các mã
của tập TextView cũng như các phương pháp.
Bây giờ, một cách chính xác nó không chứa và phương pháp, mà nó chỉ chứa
thông tin về tập và thông tin về các phương pháp.
Bạn có thể cảm ơn điều này khi xác định các quy tắc phản ứng của một TextView.
Trường hợp đối tượng này có thể giữ thông tin cụ thể như các chuỗi "today".
Hoặc cỡ chữ 18.
Bạn cũng có thể sử dụng lớp này để tạo nhiều trường hợp đối tượng TextView hơn,
và có thể có một giá trị chuỗi văn bản khác.
Tôi nghĩ rằng cái này có thể chứa dòng chữ “hello”,
và có thể chứa dòng “goodbye”.
Chúng có thể có kích cỡ phông chữ, màu sắc văn bản khác nhau, vv
Tuy nhiên, tất cả chúng đều dựa trên lớp mẫu.
Bạn có thể thấy phân biệt giữa một lớp và một trường hợp là khó khăn,
nhưng không sao cả.
Phải mất một thời gian để làm quen.
Sau đây là một ví dụ tương tự để giúp bạn.
Bạn có thể nghĩ về nó như việc vẽ thiết kế sàn cho một ngôi nhà.
Bạn có thể sử dụng kế hoạch nó để tạo nên ngôi nhà thực sự.
Mỗi một ngôi nhà có thể khác nhau đôi chút.
Nhưng tất cả chúng đều dựa trên thiết kế sàn này.
Điều quan trọng cần lưu ý là bản thân thiết kế sàn không phải là một ngôi nhà.
Nó chỉ là kế hoạch.
Tương tự, lớp TextView được sử dụng để tạo ra các trường hợp đối tượng này.
Vậy những trường hợp này mang giá trị văn bản thực tế,
giá trị màu chữ, và kích thước văn bản.
Những lớp này trông như thế nào?
你还记得这些盒子吗？
什么盒子？
这些盒子
— 嗯 — 你记得它们吗？
嗯 嗯
我记得它们
它们是变量 你可以把数值放进去
嗯 并且
你可以把多个变量整合起来创建一个更大的 Java 对象
你可以把两个或更多的变量
变成更大的变量
— 确实 — 好的
像一个 TextView
我们可以有一个整型变量
这是关于字体大小的
确实
好的
然后你也可以有一个
字符串变量
字符串变量是关于真实文本本身的
这些变量都可以放到 TextView 中 成为 TextView 的声明
我们使用不同的方法与这些变量互动
我们接下来会进行操作
好的
我们开始吧
正如我们之前提到的 像这样在屏幕上显示 TextView
实际上是通过应用里的 Java 对象控制的
这是一个 TextView Java 对象的示例
他像一个盒子 在它的里面有声明的变量
声明是由一堆字段组成的
字段是一个变量 就像第二课
我们学全局变量时说的
我们可以使用文本字段来存储 today 字符串
它是最后在屏幕上显示的文本
我们可以使用一个整型字段来存储文本的字体大小
还有其他的一些字段
像文本颜色 字体族 这些组成 TextView 的声明
我只是没有把它们画在图片上
当应用运行的时候 为了和 Java 对象互动
并且改变它的值 我们可以调用 TextView 的方法
我们之前在第三课学到的方法
在 TextView 中的一些实例方法是 setText 和 getText
还有 setTextSize 或者 getTextSize 等等
每一个方法都只执行一串指令
还有像 onDraw 这样的复杂方法
它用来处理在屏幕上绘画 TextView
所以总体来说 TextView 对象包含了 TextView 中声明的信息
你可以调用这些方法与 TextView 互动
例如修改声明或者做更复杂的动作
为了在屏幕上显示 TextView 实际上有一个
TextView 的 Java 对象放在应用里
这个特定的 ImageView 包含声明信息 比如图像应该怎样显示
以及尺寸类型 像居中
再者 还有其他字段组成 ImageView 的声明
我只是没有在这画出来
有像 setImage setScaleType 的方法 甚至更复杂的方法
像 onDraw 它将 ImageView 绘画到屏幕上
需要注意的是 作为开发人员
我们不需要明确地调用 onDraw 来告诉它画到屏幕上
Android 自动为我们处理这些调用 但是调用这些方法
用来改变 ImageView 是非常有用的 例如
我们怎样知道 ImageView 声明里的所有属性是什么
以及它里面有哪些方法？
为了回答这个问题 我们必须看一下这个对象的类的定义
它是一个叫做 TextView.java 的文件
与我们定义的 MainActivity.java 类似
在这个 TextView 类文件里 我们有很多
谈论 TextView 声明和方法的代码
现在它并没有明确地表示任何声明和方法 但是它包含
声明信息和方法信息
你可以想到 作为定义 TextView 行为的规则
对象实例能够包含特定的信息 像文本字符串 today
或文本字号18
你可以使用这个类来创建更多的 TextView 对象实例
而且它们有不同的文本字符串
我认为这个可以包含字符串 hello
这个可以包含字符串 goodbay
它们也可以有不同的字号 不同的字体颜色 等等
然而 它们都是以类模板为基础的
你也许很难区分一个类和一个对象实例
但是没关系
你需要花费一些时间来习惯
有一个比喻来帮助你
你可以想象成给一个房子建造平面图
你可以使用这个平面图来建造真实的房子
每一个房子都有一点不同
但是它们都是基于这个平面图来建造的
记住平面图并不是房子本身 这点很重要
它只是一个计划
同样的道理 TextView 类是用来创建这些对象实例的
所以这些实例是有真实的文本值
文本颜色值和字体大小
那么其中的一个类看起来像什么呢？
你還記得盒子嗎？
>>什麼盒子？
>>這些箱子。
>>呵呵！ >>你仍記得它們嗎？
>>哦，是的，是的。
我當然還記得。
他們是變量， 你可以把數值放進去。
對啊，
您可以將幾個這些 變量合併成更大的Java物體。
>>哦，這樣你就可以把 多於兩個的變量，
變成一個更大的東西。
>>沒錯。 >>好
>> [一些音效]像一個TextView。
>>對。 因此，我們可以有一個整數。
>>這是字體大小。
>>沒錯。
>>好。 [聲音]
>>然後你也可以有
一個字符串變量。
>>而對於字符串變量中有著他 實際的文字。
>>是的，這些都可以放到TextView裡面 成為TextView的狀態。
>>我們可以使用我們將接下來要用的方法，
與這些東西互動。
>>沒錯。
>>好。 讓我們開始做這一點。
>>正如我們前面提到的， 在屏幕上顯示一個TextView
實際上是透過在應用程序 中的Java物件控制。
這是一個TextView Java 物件的例子。
這就像一個盒子，在它的裡面， 它擁有著一種狀態。
狀態是由一堆 fields組成。
fields是一個變量， 就像在第二課提及的，
當時我們學了全局變量。
我們有一個文本text field 存儲著today這字串，
這將最終顯示在屏幕上的文字。
我們還可以有一個整數fields 用來存儲字體大小。
還很多方面的fields，
例如文字顏色，字體 等的TextView的狀態。
我只是沒有把它畫在這張照片中。
要使用此Java物件互動，
及在應用程序運行時改變它， 我們稱為TextView上的methods。
我們已在第三課了解過methods。
TextView中methods 的例子有setText和gettext。
還有setTextSize 或getTextSize，等等。
所有這些methods只是 執行的一些指令。
你可以有更複雜的 methods，如OnDraw，
它會把TextView繪畫到屏幕上。
總體來說，這個TextView的物件包含 TextView的狀態信息，
並且可以用methods來 與TextView的互動，
例如如修改狀態， 或者做更複雜的動作。
要在屏幕上顯示一個ImageView， 實際上有一個
ImageView的Java物件 在應用程序中。
這個的ImageView的包含狀態 信息，如應該顯示出
哪些圖像，以及它的大小， 中心位置等。
同樣地，ImageView也有很多 不同的field
我只是沒有把它們畫在這裡。
還有像setImage及setScaleType 的methods，甚至更複雜的也有。
如OnDraw這個methods，會把 這個ImageView的繪畫到螢幕上。
需要注意的是，作為開發者，
我們並沒有明確地說明要用OnDraw 來告訴它繪製到屏幕上。
雖然Android已自動為我們完成了，
但用這些methods來改變ImageView 仍然是十分有用的。
那麼，我們如何知道ImageView 入面所有的fields
及ImageView所有的methods呢？
要回答這個問題，我們要看看 該對象的類定義。
這是一個名為TextView.java文件，
類似於我們定義 MainActivity.java般。
在這個TextView的類文件， 我們有一堆代碼
關於TextView的狀態及 methods。
它不是說明確切的狀態及methods 只是列出它包含
的狀態信息，及它包含 的methods等相關資料。
這個你可以想像為一個為 TextView下定義的規則。
而這個物件可以容納特定的 文字串，例如today。
或是文本大小18。
你也可以使用這類來創建 更多TextView的物件，
他們可以有不同的文字串。
我覺得這個可以包含 文字hello，
而這一個可以容納 文字goodbye
他們可以有不同的字體大小， 不同的顏色等等。
然而，它們全都基於 同一個類別模板。
你可能會發現很難區分 一類別和一個物件，
不過沒關係。
這需要一定的時間來適應。
這裡有一個比喻。
你可以把它看成 平面圖的房子。
您可以使用此平面圖 來創建多個家。
每個家都可以 略有不同。
但它們都基於 這個平面圖。
要注意，這平面圖亦不等於房子本身。
這只是個計劃。
同樣，TextView的類也於 創建這些對象。
因此，這些instances擁有著 它本身的實際文字，
文字顏色和文字大小。
那麼，這個classes是什麼樣子？