SlideShare a Scribd company logo
PROGRAMACIÓN MULTIMEDIA
Y
DISPOSITIVOS MÓVILES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
COMENZANDO A
PROGRAMAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LA CLASE VIEWGROUPS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL DESIGN
SCROLLABLE TABS
TABS CON SWIPE VIEWS
FIXED TABS
TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TAB WIDGET
TAB HOST
TABS: CONSTRUCCIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS: CONSTRUCCIÓN
TabHost [id/tabhost]
LinearLayout
TabWidget [id/tabs]
FrameLayout [id/tabcontent]
Linear Layout [id/tab1]
Linear Layout [id/tab2]
Linear Layout [id/tab3]
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS SIMPLES
<Linearlayout xmlns:android="http://schemas.android.com/apk/res/android">
<TabHost android:id=“@+id/tabhost “
<Linearlayout
<TabWidget android:id=“@+id/tabs “>
<FrameLayout android:id=“@+id/tabcontent “>
<Linearlayout android:id=“@+id/tab1“>
-CONTENIDO—
</Linearlayout>
<Linearlayout android:id=“@+id/tab2“>
-CONTENIDO—
</Linearlayout>
</FrameLayout>
</Linearlayout >
</TabHost>
</Linearlayout >
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
LO PREPARAMOS PARA CONFIGURARLO
CREAMOS LOS OBJETOS TABSPEC
OBTENEMOS LA REFERENCIA DEL TABHOST
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
Resources res = getResources();
TabHost tabs=(TabHost)findViewById(android.R.id.tabhost);
tabs.setup();
TabHost.TabSpec spec=tabs.newTabSpec("mitab1");
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
AÑADIMOS LA NUEVA PESTAÑA AL CONTROL
ASIGNAMOS UN LAYOUT A CADA PESTAÑA
INDICAMOS TEXTO E ICONO A MOSTRAR
CREAMOS UN OBJETO TABSPEC PARA CADA TAB
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
spec=tabs.newTabSpec("mitab1");
spec.setContent(R.id.tab1);
spec.setIndicator("TAB1",
res.getDrawable(android.R.drawable.ic_btn_speak_now));
tabs.addTab(spec);
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
spec=tabs.newTabSpec("mitab2");
spec.setContent(R.id.tab2);
spec.setIndicator("TAB2",
res.getDrawable(android.R.drawable.ic_dialog_map));
tabs.addTab(spec);
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
CAPTURA DE EVENTOS
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
tabs.setOnTabChangedListener(new
OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Log.i(“DEMOSTRACIÓN", "Pulsada pestaña: " + tabId);
}
});
TABS SIMPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON INTENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
import android.app.TabActivity;
import android.content.Intent;
TABS CON INTENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PRINCIPAL
LAYOUT
PRINCIPAL
PESTAÑA 1
LAYOUT
PESTAÑA 1
PESTAÑA 2
LAYOUT
PESTAÑA 2
PESTAÑA 3
LAYOUT
PESTAÑA 3
INTENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON INTENT
<Linearlayout xmlns:android="http://schemas.android.com/apk/res/android">
<TabHost android:id=“@+id/tabhost “
<Linearlayout
<TabWidget android:id=“@+id/tabs “>
<FrameLayout android:id=“@+id/tabcontent “>
</FrameLayout>
</Linearlayout >
</TabHost>
</Linearlayout >
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TabHost.TabSpec fotospec = tabs.newTabSpec("fotos");
fotospec.setIndicator("", res.getDrawable(R.drawable.icon_fotos_tab));
Intent photosIntent = new Intent(this, Fotografias.class);
fotospec.setContent(photosIntent);
tabs.addTab(fotospec);
TABS CON INTENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
public class Videos extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.videos);
}
}
TABS CON INTENT: PESTAÑA.JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON FRAGMENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
TABS CON FRAGMENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PRINCIPAL
LAYOUT
PRINCIPAL
PESTAÑA 1
LAYOUT
PESTAÑA 1
PESTAÑA 2
LAYOUT
PESTAÑA 2
PESTAÑA 3
LAYOUT
PESTAÑA 3
TABS CON FRAGMENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON FRAGMENT
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android">
<TabHost android:id=“@+id/tabhost “
<Linearlayout
<TabWidget android:id=“@+id/tabs “>
<FrameLayout android:id=“@+id/tabcontent “>
</FrameLayout>
</Linearlayout >
</TabHost>
</android.support.v4.app.FragmentTabHost>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
TabHost.setup(this,getSupportFragmentManager(), android.R.id.tabcontent);
TabHost.addTab(
TabHost.newTabSpec("tab1").setIndicator("Tab 1", null),
Fragmento1.class, null);
TABS CON FRAGMENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragmento1_layout, container,false);
TextView tv = (TextView) v.findViewById(R.id.texto);
tv.setText("TOCADA LA PESTAÑA: "+this.getTag());
return v;
}
TABS CON FRAGMENT: PESTAÑA.JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SCROLLABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
TABS CON FRAGMENT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SCROLLABLE TABS
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager">
</android.support.v4.app. PagerTitleStrip>
android:id="@+id/title“>
</android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
public class Tabs04 extends FragmentActivity {
ViewPager viewPager=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabs04);
viewPager= (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager=getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
}
}
SCROLLABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
@Override
public int getCount() {
return 3; }
@Override
public CharSequence getPageTitle(int position) {
if(position==0) {return “Tab 1”;}
if(position==1) {return “Tab 2”;}
if(position==2) {return “Tab 3”;}
return null;
}
SCROLLABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm); }
@Override
public Fragment getItem(int i) {
Fragment fragment=null;
if(i==0) { fragment=new Fragmento1(); }
if(i==1) { fragment=new Fragmento2(); }
if(i==2) { fragment=new Fragmento3(); }
return fragment;
}
SCROLLABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SWIPEABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
import android.support.v4.app. FragmentTransaction;
SWIPEABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SWIPEABLE TABS
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager">
</android.support.v4.view.ViewPager>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SWIPEABLE TABS
public class Actividad68 extends FragmentActivity {
ViewPager viewPager=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_actividad67);
viewPager= (ViewPager) findViewById(R.id.pager);
final ActionBar actionBar=getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
addTabs(actionBar);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
private void addTabs(ActionBar actionBar)
{
ActionBar.Tab tab1=actionBar.newTab();
tab1.setText("Tab 1");
tab1.setTabListener(this);
actionBar.addTab(tab1);
}
SWIPEABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SWIPEABLE TABS
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) {
Log.d("VIVZ","onPageScrolled "+i+" "+v+" "+i2);
}
@Override
public void onPageSelected(int i) {
actionBar.setSelectedNavigationItem(i);
Log.d("VIVZ","onPageSelected "+i);
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
SWIPEABLE TABS
@Override
public void onPageScrollStateChanged(int i) {
if(i==ViewPager.SCROLL_STATE_IDLE)
Log.d("VIVZ","onPageScrollStateChanged scroll state idle "+i);
if(i==ViewPager.SCROLL_STATE_DRAGGING)
Log.d("VIVZ","onPageScrollStateChanged scroll state dragging "+i);
if(i==ViewPager.SCROLL_STATE_SETTLING)
Log.d("VIVZ","onPageScrollStateChanged scroll state settling "+i);
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm); }
@Override
public Fragment getItem(int i) {
Fragment fragment=null;
if(i==0) { fragment=new Fragmento1(); }
if(i==1) { fragment=new Fragmento2(); }
if(i==2) { fragment=new Fragmento3(); }
return fragment;
}
SWIPEABLE TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL
DESIGN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:22.2.0‘
}
TABS: BUILDS GRANDLE
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL DESIGN
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL DESIGN
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabs05);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new Adaptador(getSupportFragmentManager(),
Tabs05.this));
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL DESIGN: ESTILOS
MANIFEST
TEMA
STYLES
COLOR
DIMENS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
TABS CON MATERIAL DESIGN: TABS CON TOOLBAR
<android.support.design.widget.CoordinatorLayout
CODIGO
<android.support.design.widget.AppBarLayout
CODIGO
<android.support.v7.widget.Toolbar
CODIGO
<android.support.design.widget.TabLayout
CODIGO
</android.support.design.widget.AppBarLayout>
CODIGO
<android.support.v4.view.ViewPager
CODIGO
</android.support.design.widget.CoordinatorLayout>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PERSONALIZAR LAS TABS
ACTIVIDAD DE INVESTIGACIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
COMENZANDO A PROGRAMAR
© J.D.CABRERA
PROGRAMACIÓN MULTIMEDIA
Y
DISPOSITIVOS MÓVILES
DISPOSITIVOS MÓVILES: TABS

More Related Content

Similar to DISPOSITIVOS MÓVILES: TABS

Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
Embarcadero Technologies
 
Agados Function & Feature
Agados Function & FeatureAgados Function & Feature
Agados Function & Feature
Yongkyoo Park
 
Android Lab Mannual 18SUITSP5.docx
Android Lab Mannual 18SUITSP5.docxAndroid Lab Mannual 18SUITSP5.docx
Android Lab Mannual 18SUITSP5.docx
karthikaparthasarath
 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UI
Peter Lehto
 
21 android2 updated
21 android2 updated21 android2 updated
21 android2 updated
GhanaGTUG
 
Implementing cast in android
Implementing cast in androidImplementing cast in android
Implementing cast in android
Angelo Rüggeberg
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application Development
Justin James
 
아가도스(agados) 기능과 특징 소개
아가도스(agados) 기능과 특징 소개아가도스(agados) 기능과 특징 소개
아가도스(agados) 기능과 특징 소개
Yongkyoo Park
 
Ui patterns
Ui patternsUi patterns
Ui patterns
OSCON Byrum
 
Beautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens TooBeautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens Too
Motorola Mobility - MOTODEV
 
CD11 - Slates
CD11 - SlatesCD11 - Slates
CD11 - Slates
ChristianRisom
 
AGADOS function & feature Chapter-01 UI define elements
AGADOS function & feature Chapter-01 UI define elements AGADOS function & feature Chapter-01 UI define elements
AGADOS function & feature Chapter-01 UI define elements
Yongkyoo Park
 
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
Ted Chien
 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
Terry Ryan
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
rihannakedy
 
Ignacio Delgado Portfolio
Ignacio Delgado PortfolioIgnacio Delgado Portfolio
Ignacio Delgado Portfolio
Ignacio Delgado
 
Introduction phonegap
Introduction phonegapIntroduction phonegap
Introduction phonegap
Rakesh Jha
 
Advanced programing in phonegap
Advanced programing in phonegapAdvanced programing in phonegap
Advanced programing in phonegap
Rakesh Jha
 
Noova Symposium - De Maker & Het Platform
Noova Symposium - De Maker & Het PlatformNoova Symposium - De Maker & Het Platform
Noova Symposium - De Maker & Het Platform
Ron Kersic
 
Programming For Non-Programmers (AMEX Remix Edition)
Programming For Non-Programmers (AMEX Remix Edition) Programming For Non-Programmers (AMEX Remix Edition)
Programming For Non-Programmers (AMEX Remix Edition)
Chris Castiglione
 

Similar to DISPOSITIVOS MÓVILES: TABS (20)

Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
 
Agados Function & Feature
Agados Function & FeatureAgados Function & Feature
Agados Function & Feature
 
Android Lab Mannual 18SUITSP5.docx
Android Lab Mannual 18SUITSP5.docxAndroid Lab Mannual 18SUITSP5.docx
Android Lab Mannual 18SUITSP5.docx
 
Vaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UIVaadin DevDay 2017 - DI your UI
Vaadin DevDay 2017 - DI your UI
 
21 android2 updated
21 android2 updated21 android2 updated
21 android2 updated
 
Implementing cast in android
Implementing cast in androidImplementing cast in android
Implementing cast in android
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application Development
 
아가도스(agados) 기능과 특징 소개
아가도스(agados) 기능과 특징 소개아가도스(agados) 기능과 특징 소개
아가도스(agados) 기능과 특징 소개
 
Ui patterns
Ui patternsUi patterns
Ui patterns
 
Beautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens TooBeautifully Usable, Multiple Screens Too
Beautifully Usable, Multiple Screens Too
 
CD11 - Slates
CD11 - SlatesCD11 - Slates
CD11 - Slates
 
AGADOS function & feature Chapter-01 UI define elements
AGADOS function & feature Chapter-01 UI define elements AGADOS function & feature Chapter-01 UI define elements
AGADOS function & feature Chapter-01 UI define elements
 
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...
 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
Ignacio Delgado Portfolio
Ignacio Delgado PortfolioIgnacio Delgado Portfolio
Ignacio Delgado Portfolio
 
Introduction phonegap
Introduction phonegapIntroduction phonegap
Introduction phonegap
 
Advanced programing in phonegap
Advanced programing in phonegapAdvanced programing in phonegap
Advanced programing in phonegap
 
Noova Symposium - De Maker & Het Platform
Noova Symposium - De Maker & Het PlatformNoova Symposium - De Maker & Het Platform
Noova Symposium - De Maker & Het Platform
 
Programming For Non-Programmers (AMEX Remix Edition)
Programming For Non-Programmers (AMEX Remix Edition) Programming For Non-Programmers (AMEX Remix Edition)
Programming For Non-Programmers (AMEX Remix Edition)
 

More from Jacinto Cabrera Rodríguez

REDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS IIREDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS II
Jacinto Cabrera Rodríguez
 
OTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTOOTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTO
Jacinto Cabrera Rodríguez
 
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONESDISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
Jacinto Cabrera Rodríguez
 
LAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTELAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTE
Jacinto Cabrera Rodríguez
 
TOULOUSE LAUTREC
TOULOUSE LAUTRECTOULOUSE LAUTREC
TOULOUSE LAUTREC
Jacinto Cabrera Rodríguez
 
PRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIAPRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIA
Jacinto Cabrera Rodríguez
 
DISPOSITIVOS MÓVILES: MATERIAL DESIGN II
DISPOSITIVOS MÓVILES: MATERIAL DESIGN IIDISPOSITIVOS MÓVILES: MATERIAL DESIGN II
DISPOSITIVOS MÓVILES: MATERIAL DESIGN II
Jacinto Cabrera Rodríguez
 
ZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETASZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETAS
Jacinto Cabrera Rodríguez
 
ZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADORZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADOR
Jacinto Cabrera Rodríguez
 
TIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIATIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIA
Jacinto Cabrera Rodríguez
 
CARCASAS DE ORDENADOR
CARCASAS DE ORDENADORCARCASAS DE ORDENADOR
CARCASAS DE ORDENADOR
Jacinto Cabrera Rodríguez
 
TIPOS DE TORNILLOS
TIPOS DE TORNILLOSTIPOS DE TORNILLOS
TIPOS DE TORNILLOS
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23
Jacinto Cabrera Rodríguez
 
REDES: TOMAS DE DATOS
REDES: TOMAS DE DATOSREDES: TOMAS DE DATOS
REDES: TOMAS DE DATOS
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21
Jacinto Cabrera Rodríguez
 
PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20
Jacinto Cabrera Rodríguez
 

More from Jacinto Cabrera Rodríguez (20)

REDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS IIREDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS II
 
OTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTOOTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTO
 
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONESDISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
 
LAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTELAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTE
 
TOULOUSE LAUTREC
TOULOUSE LAUTRECTOULOUSE LAUTREC
TOULOUSE LAUTREC
 
PRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIAPRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIA
 
DISPOSITIVOS MÓVILES: MATERIAL DESIGN II
DISPOSITIVOS MÓVILES: MATERIAL DESIGN IIDISPOSITIVOS MÓVILES: MATERIAL DESIGN II
DISPOSITIVOS MÓVILES: MATERIAL DESIGN II
 
ZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETASZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETAS
 
ZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADORZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADOR
 
TIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIATIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIA
 
CARCASAS DE ORDENADOR
CARCASAS DE ORDENADORCARCASAS DE ORDENADOR
CARCASAS DE ORDENADOR
 
TIPOS DE TORNILLOS
TIPOS DE TORNILLOSTIPOS DE TORNILLOS
TIPOS DE TORNILLOS
 
PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26
 
PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25
 
PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24
 
PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23
 
REDES: TOMAS DE DATOS
REDES: TOMAS DE DATOSREDES: TOMAS DE DATOS
REDES: TOMAS DE DATOS
 
PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22
 
PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21
 
PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20
 

Recently uploaded

Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 

Recently uploaded (20)

Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 

DISPOSITIVOS MÓVILES: TABS

  • 1.
  • 3.
  • 4. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA COMENZANDO A PROGRAMAR
  • 5. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA LA CLASE VIEWGROUPS
  • 6. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS
  • 7. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS
  • 8. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN SCROLLABLE TABS TABS CON SWIPE VIEWS FIXED TABS TABS
  • 9. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TAB WIDGET TAB HOST TABS: CONSTRUCCIÓN
  • 10. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS: CONSTRUCCIÓN TabHost [id/tabhost] LinearLayout TabWidget [id/tabs] FrameLayout [id/tabcontent] Linear Layout [id/tab1] Linear Layout [id/tab2] Linear Layout [id/tab3]
  • 11. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS SIMPLES
  • 12. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS SIMPLES <Linearlayout xmlns:android="http://schemas.android.com/apk/res/android"> <TabHost android:id=“@+id/tabhost “ <Linearlayout <TabWidget android:id=“@+id/tabs “> <FrameLayout android:id=“@+id/tabcontent “> <Linearlayout android:id=“@+id/tab1“> -CONTENIDO— </Linearlayout> <Linearlayout android:id=“@+id/tab2“> -CONTENIDO— </Linearlayout> </FrameLayout> </Linearlayout > </TabHost> </Linearlayout >
  • 13. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA LO PREPARAMOS PARA CONFIGURARLO CREAMOS LOS OBJETOS TABSPEC OBTENEMOS LA REFERENCIA DEL TABHOST TABS SIMPLES
  • 14. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA Resources res = getResources(); TabHost tabs=(TabHost)findViewById(android.R.id.tabhost); tabs.setup(); TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); TABS SIMPLES
  • 15. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA AÑADIMOS LA NUEVA PESTAÑA AL CONTROL ASIGNAMOS UN LAYOUT A CADA PESTAÑA INDICAMOS TEXTO E ICONO A MOSTRAR CREAMOS UN OBJETO TABSPEC PARA CADA TAB TABS SIMPLES
  • 16. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA spec=tabs.newTabSpec("mitab1"); spec.setContent(R.id.tab1); spec.setIndicator("TAB1", res.getDrawable(android.R.drawable.ic_btn_speak_now)); tabs.addTab(spec); TABS SIMPLES
  • 17. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA spec=tabs.newTabSpec("mitab2"); spec.setContent(R.id.tab2); spec.setIndicator("TAB2", res.getDrawable(android.R.drawable.ic_dialog_map)); tabs.addTab(spec); TABS SIMPLES
  • 18. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA CAPTURA DE EVENTOS TABS SIMPLES
  • 19. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA tabs.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { Log.i(“DEMOSTRACIÓN", "Pulsada pestaña: " + tabId); } }); TABS SIMPLES
  • 20. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON INTENT
  • 21. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA import android.app.TabActivity; import android.content.Intent; TABS CON INTENT
  • 22. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA PRINCIPAL LAYOUT PRINCIPAL PESTAÑA 1 LAYOUT PESTAÑA 1 PESTAÑA 2 LAYOUT PESTAÑA 2 PESTAÑA 3 LAYOUT PESTAÑA 3 INTENT
  • 23. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON INTENT <Linearlayout xmlns:android="http://schemas.android.com/apk/res/android"> <TabHost android:id=“@+id/tabhost “ <Linearlayout <TabWidget android:id=“@+id/tabs “> <FrameLayout android:id=“@+id/tabcontent “> </FrameLayout> </Linearlayout > </TabHost> </Linearlayout >
  • 24. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TabHost.TabSpec fotospec = tabs.newTabSpec("fotos"); fotospec.setIndicator("", res.getDrawable(R.drawable.icon_fotos_tab)); Intent photosIntent = new Intent(this, Fotografias.class); fotospec.setContent(photosIntent); tabs.addTab(fotospec); TABS CON INTENT
  • 25. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA public class Videos extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.videos); } } TABS CON INTENT: PESTAÑA.JAVA
  • 26. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON FRAGMENT
  • 27. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTabHost; TABS CON FRAGMENT
  • 28. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA PRINCIPAL LAYOUT PRINCIPAL PESTAÑA 1 LAYOUT PESTAÑA 1 PESTAÑA 2 LAYOUT PESTAÑA 2 PESTAÑA 3 LAYOUT PESTAÑA 3 TABS CON FRAGMENT
  • 29. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON FRAGMENT <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"> <TabHost android:id=“@+id/tabhost “ <Linearlayout <TabWidget android:id=“@+id/tabs “> <FrameLayout android:id=“@+id/tabcontent “> </FrameLayout> </Linearlayout > </TabHost> </android.support.v4.app.FragmentTabHost>
  • 30. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); TabHost.setup(this,getSupportFragmentManager(), android.R.id.tabcontent); TabHost.addTab( TabHost.newTabSpec("tab1").setIndicator("Tab 1", null), Fragmento1.class, null); TABS CON FRAGMENT
  • 31. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragmento1_layout, container,false); TextView tv = (TextView) v.findViewById(R.id.texto); tv.setText("TOCADA LA PESTAÑA: "+this.getTag()); return v; } TABS CON FRAGMENT: PESTAÑA.JAVA
  • 32. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SCROLLABLE TABS
  • 33. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; TABS CON FRAGMENT
  • 34. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SCROLLABLE TABS <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager"> </android.support.v4.app. PagerTitleStrip> android:id="@+id/title“> </android.support.v4.view.PagerTitleStrip> </android.support.v4.view.ViewPager>
  • 35. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA public class Tabs04 extends FragmentActivity { ViewPager viewPager=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tabs04); viewPager= (ViewPager) findViewById(R.id.pager); FragmentManager fragmentManager=getSupportFragmentManager(); viewPager.setAdapter(new MyAdapter(fragmentManager)); } } SCROLLABLE TABS
  • 36. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA @Override public int getCount() { return 3; } @Override public CharSequence getPageTitle(int position) { if(position==0) {return “Tab 1”;} if(position==1) {return “Tab 2”;} if(position==2) {return “Tab 3”;} return null; } SCROLLABLE TABS
  • 37. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment=null; if(i==0) { fragment=new Fragmento1(); } if(i==1) { fragment=new Fragmento2(); } if(i==2) { fragment=new Fragmento3(); } return fragment; } SCROLLABLE TABS
  • 38. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SWIPEABLE TABS
  • 39. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA import android.support.v4.app. FragmentTransaction; SWIPEABLE TABS
  • 40. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SWIPEABLE TABS <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager"> </android.support.v4.view.ViewPager>
  • 41. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SWIPEABLE TABS public class Actividad68 extends FragmentActivity { ViewPager viewPager=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_actividad67); viewPager= (ViewPager) findViewById(R.id.pager); final ActionBar actionBar=getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); addTabs(actionBar); viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
  • 42. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA private void addTabs(ActionBar actionBar) { ActionBar.Tab tab1=actionBar.newTab(); tab1.setText("Tab 1"); tab1.setTabListener(this); actionBar.addTab(tab1); } SWIPEABLE TABS
  • 43. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SWIPEABLE TABS viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i2) { Log.d("VIVZ","onPageScrolled "+i+" "+v+" "+i2); } @Override public void onPageSelected(int i) { actionBar.setSelectedNavigationItem(i); Log.d("VIVZ","onPageSelected "+i); }
  • 44. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA SWIPEABLE TABS @Override public void onPageScrollStateChanged(int i) { if(i==ViewPager.SCROLL_STATE_IDLE) Log.d("VIVZ","onPageScrollStateChanged scroll state idle "+i); if(i==ViewPager.SCROLL_STATE_DRAGGING) Log.d("VIVZ","onPageScrollStateChanged scroll state dragging "+i); if(i==ViewPager.SCROLL_STATE_SETTLING) Log.d("VIVZ","onPageScrollStateChanged scroll state settling "+i); }
  • 45. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment=null; if(i==0) { fragment=new Fragmento1(); } if(i==1) { fragment=new Fragmento2(); } if(i==2) { fragment=new Fragmento3(); } return fragment; } SWIPEABLE TABS
  • 46. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN
  • 47. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:22.2.0‘ } TABS: BUILDS GRANDLE
  • 48. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:background="@android:color/white" />
  • 49. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tabs05); ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(new Adaptador(getSupportFragmentManager(), Tabs05.this)); TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); tabLayout.setupWithViewPager(viewPager); }
  • 50. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN: ESTILOS MANIFEST TEMA STYLES COLOR DIMENS
  • 51. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA TABS CON MATERIAL DESIGN: TABS CON TOOLBAR <android.support.design.widget.CoordinatorLayout CODIGO <android.support.design.widget.AppBarLayout CODIGO <android.support.v7.widget.Toolbar CODIGO <android.support.design.widget.TabLayout CODIGO </android.support.design.widget.AppBarLayout> CODIGO <android.support.v4.view.ViewPager CODIGO </android.support.design.widget.CoordinatorLayout>
  • 52. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA PERSONALIZAR LAS TABS ACTIVIDAD DE INVESTIGACIÓN
  • 53. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES COMENZANDO A PROGRAMAR © J.D.CABRERA PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES