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オブジェクトを
作ることもできるのよ。
>> 2つ以上の変数を使って、
さらに大きなものを作るんだね。
>> その通り。
>> 分かった。
>> TextViewみたいだね。
>> そう、だから整数の変数をつくることもできるわ。
>> これがほんとサイズだね。
>> その通り。
>> 分かった。
>> さらに文字列変数も
加えることができるの。
>> テキストに使う文字列だね。
>> TextViewのステートとしてTextViewに取り組まれる
ことができるの。
>> これから学ぶ方法で、こういうものを
使うことができるんだね。
>> その通り。
>> じゃあやってみよう。
>> 前にも示したように、スクリーンにTextViewを表示するのは、
アプリの中のJavaオブジェクトで管理されています。
これがTextView Javaオブジェクトの例です。
ボックスのようなもので、その中にステートがあります。
ステートはたくさんのフィールドでできています。
レッスン2でグローバル変数について学んだように、
フィールドは変数です。
最終的にスクリーンに表示されるテキストである
todayという変数をテキストフィールドとして持つことができます。
このテキストのフォントサイズを決める整数フィールドを持つこともできます。
他にフィールドはいろいろあります。
テキストカラーやフォントファミリーなど、全てこのTextViewお
ステートを作り出すものです。
このイメージにはないですが。
このJavaオブジェクトを使ったり、アプリの起動中に
変更したりするには、このTextViewの
メソッドを使います。
レッスン3でメソッドについて学びました。
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という文字列など
具体的な情報を持つことができます。
またはテキストサイズ18などです。
このクラスを使って、さらに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是什麼樣子?