SlideShare una empresa de Scribd logo
Custom Views in Android
using Canvas API
@glomadrian
Adrián García Lomas github.com/glomadrian
Android Engineer
Custom Views
● Extienden View / Viewgroup
● Progress, TextView, Animaciones, etc
● Atributos propios
● Funcionalidades propias
¿Por qué deberías usarlas?
● Marca la diferencia!
● Diseño sin límites
● Extender funcionalidad de otras vistas
● Adaptar a tus necesidades
Extendiendo View
Ciclo de vida
Constructor
onAttachedToWindow()
measure()
onMeassure()
layout()
onLayout()
dispatchDraw()
draw()
onDraw()
invalidate()
requestLayout()
onMeassure()
● Determinar el tamaño de la vista dependiendo del padre
● Obtener el modo de Medición
○ EXACTLY (Igual que el padre)
○ AT_MOST (Como máximo el tamaño del padre)
○ UNESPECIFIED (Lo que la vista quiera)
● Definir las dimensiones de la custom view
onSizeChange()
● Se llama cada vez que el tamaño cambia
● Cuando se llama la vista ya tiene tamaño
● Se puede obtener el width y el height de la vista
● Si se necesita inicializar algo dependiendo del tamaño
● El tamaño puede cambiar externamente
● Es donde todo el pintado de la vista ocurre
● Realizar solo acciones de pintado
● No crear nuevos objetos si no es necesario
● 16ms (60 fps) es el tiempo usado para el pintado
● Cuidado con el overdraw
● Cuidado con invalidate() para forzar el pintado de la vista
onDraw()
● El método onDraw() proporciona un canvas para pintar
● Canvas siempre contiene un bitmap donde pinta
● Proporciona una gran cantidad de métodos para el pintado
● Hay que proporcionarle un objeto Paint
Canvas
● Contiene toda la configuración sobre el pintado
● Color
● Estilo del pintado
● Tamaño
● Antialiasing
Paint
Canvas: Pintando
X
Y
● width / 2 , height / 2
● 0 , 0
● Evitar usar píxeles en dimensiones
● Usar dim.xml
● Jugar con width y height
● Probar en varios dispositivos
Usando canvas: drawLine()
Usando canvas: drawRect()
Usando canvas: drawOval()
Usando custom view
Usando custom view
Animación de carga
● drawArc()
● DashPathEffect
● ValueAnimator
● UpdateListener
● Interpolators
Animación de carga: drawArc()
Animación de carga: ValueAnimator
● Devuelve valores en un intervalo de tiempo
● Pueden ser int, float, etc...
● Update listener es donde se hará la animación
Animación de carga: start()
ValueAnimator
onUpdate
grade = value
invalidate
onDraw()
Animación cargando: Interpolators
● Define como son devueltos los valores
● Hay varias implementaciones en el SDK
Linear interpolator Accelerate Decelerate interpolator
Animación cargando: Interpolators
Dashed Circular Progress
https://github.com/glomadrian/dashed-circular-progress
● Uso de drawArc()
● Uso de interpolators
● Uso de Paint
● Custom ViewGroup
● drawBitmap()
● Atributos Personalizados
Usando canvas: Path
● Contenedor para un conjunto de formas geométricas
● Muy versátil
● Se puede pintar en canvas usando: canvas.drawPath()
● Al ser un objeto este se puede guardar (Stack, Arrays, etc)
● Muy extensible
● Curva de Bézier
Usando canvas: drawPath()
Path
● lineTo()
● moveTo()
● addArc()
● addOval()
● addRect()
● addPath()
● cubicTo()
● quadTo()
Path: quadTo()
● startPoint
● x2, y2
● x1, y1
Path: quadTo()
Path: cubicTo()
● x3, y3
● x2, y2
● x1, y2
● startPoint
Path: cubicTo()
Loading Balls
● Uso de path
● Animaciones con path
● Uso varios ValueAnimators simultáneos
● Atributos Personalizados
https://github.com/glomadrian/loading-balls
Atributos personalizados
● Reusabilidad
● Extensibilidad
● Esencial para librerías de este tipo
● Todo queda en el XML
Atributos personalizados
attrs.xml
● Definir atributos para vistas personalizadas
● fichero attrs.xml dentro la carpeta values
● Atributos
○ dimension
○ color
○ boolean
○ string
○ reference
○ y más...
Obteniendo atributos
Declarando atributos personalizados
Atributos Personalizados
Analizando el Rendimiento
● Normalmente son vistas muy vistosas
● No todos los móviles son de última generación
● Posible pintado duplicado (overdraw)
● Mucho trabajo en el método onDraw()
● No solo custom views
Detectando overdraw
Detectando overdraw
Detectando overdraw
Detectando overdraw
Detectando frames perdidos
Detectando frames perdidos
● Muy útil , visual
● Línea verde: 16ms / 60 frames
● Por debajo: Frames pintados
● Por encima: Frames perdidos
● Colores por tipo de carga
Detectando frames perdidos
Detectando frames perdidos
¿Preguntas?

Más contenido relacionado

La actualidad más candente

الجزء الثاني من الكربوهيدرات الجيدة والسيئة
الجزء الثاني من الكربوهيدرات الجيدة والسيئةالجزء الثاني من الكربوهيدرات الجيدة والسيئة
الجزء الثاني من الكربوهيدرات الجيدة والسيئةUniv. of Tripoli
 
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
Seokjae Lee
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017devCAT Studio, NEXON
 
Latvijas tautsaimniecības makroekonomiskā attīstība
Latvijas tautsaimniecības makroekonomiskā attīstībaLatvijas tautsaimniecības makroekonomiskā attīstība
Latvijas tautsaimniecības makroekonomiskā attīstība
Latvijas Banka
 
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバiOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
 
5分でわかる Unity点群
5分でわかる Unity点群5分でわかる Unity点群
5分でわかる Unity点群
UnityTechnologiesJapan002
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
Kohki Miki
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
devCAT Studio, NEXON
 
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
Anil Singh
 
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
정민 안
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSTakeharu Igari
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
gree_tech
 

La actualidad más candente (13)

الجزء الثاني من الكربوهيدرات الجيدة والسيئة
الجزء الثاني من الكربوهيدرات الجيدة والسيئةالجزء الثاني من الكربوهيدرات الجيدة والسيئة
الجزء الثاني من الكربوهيدرات الجيدة والسيئة
 
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
 
Latvijas tautsaimniecības makroekonomiskā attīstība
Latvijas tautsaimniecības makroekonomiskā attīstībaLatvijas tautsaimniecības makroekonomiskā attīstība
Latvijas tautsaimniecības makroekonomiskā attīstība
 
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバiOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
 
5分でわかる Unity点群
5分でわかる Unity点群5分でわかる Unity点群
5分でわかる Unity点群
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | R...
 
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 

Similar a Custom views in android using canvas api

Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
kdeespana
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
Alberto Ruibal
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
Alberto Ruibal
 
Usando Google Maps en tu Android App
Usando Google Maps en tu Android AppUsando Google Maps en tu Android App
Usando Google Maps en tu Android App
Oscar Salguero
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
Software Guru
 
Sistema de Taxi Compartido - Java
Sistema de Taxi Compartido - JavaSistema de Taxi Compartido - Java
Sistema de Taxi Compartido - Java
David Fernando Valladarez Muñoz
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
Javier Suárez Ruiz
 
Tema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuarioTema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuario
Carlos A. Iglesias
 
Ios.s10
Ios.s10Ios.s10
Ios.s10
ulcurbegi
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
Plain Concepts
 
Api java 2D
Api  java 2DApi  java 2D
Api java 2D
ESPOL
 
Recursos en Android 101
Recursos en Android 101Recursos en Android 101
Recursos en Android 101
Fernando Gallego
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
Carlos A. Iglesias
 
Poniendo a drupal en el mapa
Poniendo a drupal en el mapaPoniendo a drupal en el mapa
Poniendo a drupal en el mapa
Eduardo Riesco
 
Iniciación a OpenGL
Iniciación a OpenGLIniciación a OpenGL
Iniciación a OpenGL
Vicente García Díaz
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
Globant
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
Fernando Petrola
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UI
Danae Aguilar Guzmán
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGJavascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
David Zapateria Besteiro
 
Introducción a swing. taller de programación 2016
Introducción a swing. taller de programación 2016Introducción a swing. taller de programación 2016
Introducción a swing. taller de programación 2016
angeles104
 

Similar a Custom views in android using canvas api (20)

Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Usando Google Maps en tu Android App
Usando Google Maps en tu Android AppUsando Google Maps en tu Android App
Usando Google Maps en tu Android App
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
 
Sistema de Taxi Compartido - Java
Sistema de Taxi Compartido - JavaSistema de Taxi Compartido - Java
Sistema de Taxi Compartido - Java
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
 
Tema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuarioTema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuario
 
Ios.s10
Ios.s10Ios.s10
Ios.s10
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Api java 2D
Api  java 2DApi  java 2D
Api java 2D
 
Recursos en Android 101
Recursos en Android 101Recursos en Android 101
Recursos en Android 101
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Poniendo a drupal en el mapa
Poniendo a drupal en el mapaPoniendo a drupal en el mapa
Poniendo a drupal en el mapa
 
Iniciación a OpenGL
Iniciación a OpenGLIniciación a OpenGL
Iniciación a OpenGL
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UI
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGJavascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
 
Introducción a swing. taller de programación 2016
Introducción a swing. taller de programación 2016Introducción a swing. taller de programación 2016
Introducción a swing. taller de programación 2016
 

Último

Presentación 01 Curso de Introducción a Python.pdf
Presentación 01 Curso de Introducción a Python.pdfPresentación 01 Curso de Introducción a Python.pdf
Presentación 01 Curso de Introducción a Python.pdf
jorgecuasapaz182
 
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptxJuzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
Folke Claudio Tantahuillca Landeo
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
hugodennis88
 
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdfPRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
fabian28735081
 
Fundamentos-Ensayos-Al-Fuego de oro y plata
Fundamentos-Ensayos-Al-Fuego de oro  y plataFundamentos-Ensayos-Al-Fuego de oro  y plata
Fundamentos-Ensayos-Al-Fuego de oro y plata
RobertoChvez25
 
561425171-5-1-Modelos-de-Pronosticos.pptx
561425171-5-1-Modelos-de-Pronosticos.pptx561425171-5-1-Modelos-de-Pronosticos.pptx
561425171-5-1-Modelos-de-Pronosticos.pptx
Angel Tello
 
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdfS01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
Alex809116
 
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptxGravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
RobertoChvez25
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
ssuser8827cb1
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
DanielaLoaeza5
 
Aletas de Transferencia de Calor Jefferson Colina.pptx
Aletas de Transferencia de Calor Jefferson Colina.pptxAletas de Transferencia de Calor Jefferson Colina.pptx
Aletas de Transferencia de Calor Jefferson Colina.pptx
jeffersoncolina427
 
Control de Diaphania hyalinata en campo.pptx
Control de Diaphania hyalinata en campo.pptxControl de Diaphania hyalinata en campo.pptx
Control de Diaphania hyalinata en campo.pptx
alexanderlara1198
 
Nivelación topográfica tipos de nivelación
Nivelación topográfica tipos de nivelaciónNivelación topográfica tipos de nivelación
Nivelación topográfica tipos de nivelación
waldir orosco tinta
 
Clase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieriaClase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieria
leonidasbajalquepuch
 
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
luliolivera62
 
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptxCARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
0602021003
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
yamilbailonw
 
TIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdfTIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdf
ArmandoSarco
 
Presentación Aislante térmico.pdf Transferencia de calor
Presentación Aislante térmico.pdf Transferencia de calorPresentación Aislante térmico.pdf Transferencia de calor
Presentación Aislante térmico.pdf Transferencia de calor
GerardoBracho3
 
Klohn Crippen Berger _ Brochure LAM .pdf
Klohn Crippen Berger _ Brochure LAM .pdfKlohn Crippen Berger _ Brochure LAM .pdf
Klohn Crippen Berger _ Brochure LAM .pdf
ciniguez1
 

Último (20)

Presentación 01 Curso de Introducción a Python.pdf
Presentación 01 Curso de Introducción a Python.pdfPresentación 01 Curso de Introducción a Python.pdf
Presentación 01 Curso de Introducción a Python.pdf
 
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptxJuzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
Juzgamiento-de-Ganado-Lechero-CATEGORIA-B-SWISS.pptx
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
 
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdfPRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
PRESENTACION TRANSFERENCIA FABIAN ALVAREZ.pdf
 
Fundamentos-Ensayos-Al-Fuego de oro y plata
Fundamentos-Ensayos-Al-Fuego de oro  y plataFundamentos-Ensayos-Al-Fuego de oro  y plata
Fundamentos-Ensayos-Al-Fuego de oro y plata
 
561425171-5-1-Modelos-de-Pronosticos.pptx
561425171-5-1-Modelos-de-Pronosticos.pptx561425171-5-1-Modelos-de-Pronosticos.pptx
561425171-5-1-Modelos-de-Pronosticos.pptx
 
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdfS01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
S01_CONTENIDO DE CLASE SENCICO, ADMINISTRACIÓN DE OBRAS.pdf
 
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptxGravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
Gravimetria-Amalgamacion-y-Flotacion-del-Oro-pptx.pptx
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
 
Aletas de Transferencia de Calor Jefferson Colina.pptx
Aletas de Transferencia de Calor Jefferson Colina.pptxAletas de Transferencia de Calor Jefferson Colina.pptx
Aletas de Transferencia de Calor Jefferson Colina.pptx
 
Control de Diaphania hyalinata en campo.pptx
Control de Diaphania hyalinata en campo.pptxControl de Diaphania hyalinata en campo.pptx
Control de Diaphania hyalinata en campo.pptx
 
Nivelación topográfica tipos de nivelación
Nivelación topográfica tipos de nivelaciónNivelación topográfica tipos de nivelación
Nivelación topográfica tipos de nivelación
 
Clase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieriaClase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieria
 
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
1°AIRE ACONDICIONADO-EQUIPOS & SISTEMAS.pdf
 
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptxCARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
CARRETERAS MÁS IMPORTANTES DEL PERU ALESSANDRA.pptx
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
 
TIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdfTIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdf
 
Presentación Aislante térmico.pdf Transferencia de calor
Presentación Aislante térmico.pdf Transferencia de calorPresentación Aislante térmico.pdf Transferencia de calor
Presentación Aislante térmico.pdf Transferencia de calor
 
Klohn Crippen Berger _ Brochure LAM .pdf
Klohn Crippen Berger _ Brochure LAM .pdfKlohn Crippen Berger _ Brochure LAM .pdf
Klohn Crippen Berger _ Brochure LAM .pdf
 

Custom views in android using canvas api

Notas del editor

  1. Vistazo general a lo que son las custom views Dónde podemos encontrarlas Especial importancia a los atributos propios que dan mucha extensibilidad
  2. Defender su uso Diseños diferentes para las aplicaciones Poder hacer cosas con otras vistas que previamente no estaban soportadas Explicar que es un mundo diferente programar vistas que programar en android Es divertido Se aprende mucho
  3. Primer constructor: Permitir la creación de vista desde código Segundo Constructor: Creacion de vista desde XML pasándole sus atributos personalizados Tercer Constructor: Creación de vista desde XML con atributos y usando un estilo personalizado.
  4. Después de que la vista padre añade la vista hija se ejecuta onAttachedToindow() Meassure() se usa para que las vistas puedan conocer tu tamaño onMeassure() método para que los hijos puedan determinar el tamaño de la vista (es llamado desde meassure) layout() llamado para asignar un tamaño a todas las vistas hijas onLayout() cada vista hija debe asignar un tamaño y para eso se usa este método dispathDraw() Cuando una vista padre realiza el draw usa este metodo para decirte a todas las vistas hijas que deben pintarse draw() Método para forzar el pintado manual onDraw() Método que se ha de sobrescribir para el pintado de la vista