¿Cómo configurar el icono de cada ficha en un fragmentopageradapter a una animación gif?
Quiero establecer el icono de cada ficha en un fragmentoapagador de una animación gif. Cuando el usuario pasa a cada pestaña específica, la animación se iniciará.
Por ejemplo:
- ¿Hay una manera de evitar el uso del nombre completo del paquete en xml con vistas personalizadas (Android)?
- ¿Cómo puedo analizar XML android?
- ¿Hay alguna documentación de Android XML?
- Escapar comillas simples en el recurso xml para Android
- Espacio entre editText y softkeyboard
El usuario inicia la pestaña 1. Comenzará la animación de la pestaña 1. Ahora el usuario pasa a la pestaña 2. El icono de la pestaña 1 se detendrá y el icono de la pestaña 2 comenzará. El siguiente usuario pasa a la pestaña 3. El icono de la pestaña 3 se iniciará y la pestaña 1 y la pestaña 2 se pausarán .. etc etc.
MyHome.java
import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabContentFactory; import java.util.List; import java.util.Vector; public class MyHome extends Fragment implements OnTabChangeListener, OnPageChangeListener { private TabHost tabHost; private ViewPager viewPager; private MyFragmentPagerAdapter myViewPagerAdapter; private String[] tabsTitles = {"About Me", "Connections", "Messages", "Open Forum", "Music", "Books", "Sports", "Title 8", "Title 9"}; private boolean flag = false; int i = 0; View v; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ((MainActivity)getActivity()).getSupportActionBar().setTitle("Home"); v = inflater.inflate(R.layout.tabs_viewpager_layout, container, false); i++; this.initializeTabHost(savedInstanceState); this.initializeViewPager(); return v; } class FakeContent implements TabContentFactory { private final Context mContext; public FakeContent(Context context) { mContext = context; } @Override public View createTabContent(String tag) { View v = new View(mContext); v.setMinimumHeight(0); v.setMinimumWidth(0); return v; } } private void initializeViewPager() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(new Home1Fragment()); fragments.add(new Home2Fragment()); fragments.add(new Home3Fragment()); fragments.add(new Home4Fragment()); fragments.add(new Home5Fragment()); fragments.add(new Home6Fragment()); fragments.add(new Home7Fragment()); this.myViewPagerAdapter = new MyFragmentPagerAdapter(getChildFragmentManager(), fragments); this.viewPager = (ViewPager) v.findViewById(R.id.viewPager); this.viewPager.setAdapter(this.myViewPagerAdapter); this.viewPager.setOnPageChangeListener(this); //this.viewPager.setCurrentItem(4); } private void initializeTabHost(Bundle args) { tabHost = (TabHost) v.findViewById(android.R.id.tabhost); tabHost.setup(); for (int i = 1; i <= 7; i++) { TabHost.TabSpec tabSpec; tabSpec = tabHost.newTabSpec("Home " + i); //Here is where each tab is set to a particular icon from the drawable folder if(i == 1) { //tabSpec.setIndicator(""); tabSpec.setIndicator("", getResources().getDrawable(R.drawable.aboutme)); }else if(i == 2) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.connections)); }else if(i == 3) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.messages)); }else if (i == 4) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.mics)); }else if(i == 5) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.music)); }else if(i == 6) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.books)); }else if(i == 7) { tabSpec.setIndicator("",getResources().getDrawable(R.drawable.sports)); } tabSpec.setContent(new FakeContent(getActivity())); tabHost.addTab(tabSpec); } tabHost.setOnTabChangedListener(this); } @Override public void onTabChanged(String tabId) { int pos = this.tabHost.getCurrentTab(); this.viewPager.setCurrentItem(pos); HorizontalScrollView hScrollView = (HorizontalScrollView) v.findViewById(R.id.hScrollView); View tabView = tabHost.getCurrentTabView(); int scrollPos = tabView.getLeft() - (hScrollView.getWidth() - tabView.getWidth()) / 2; hScrollView.smoothScrollTo(scrollPos, 0); } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { this.tabHost.setCurrentTab(position); ((MainActivity)getActivity()).getSupportActionBar().setTitle(tabsTitles[position]); } }
Tabs_viewpager_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:id="@+id/hScrollView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="none"> <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TabWidget> </HorizontalScrollView> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout>
- Sincronizar datos en el dispositivo con el servidor?
- Animación de agitación de botón de Android
- Configuración de alfa de dibujable a través de xml
- Creación de servicio web para aplicaciones de Android
- ¿Cómo agregar la imagen en un texto de TextView?
- XmlPullParser: obtener texto interno incluyendo etiquetas XML
- Cómo convertir TextView en ImageView en android
- ¿Cómo mantener la consistencia con XML drawables a través de diferentes tamaños de pantalla?
One Solution collect form web for “¿Cómo configurar el icono de cada ficha en un fragmentopageradapter a una animación gif?”
Tendría dos trazos para cada ficha, una versión animada y una versión no animada.
Entonces registraría un oyente del cambio de la página en el ViewPager
para alternar los drawables:
viewPager.addOnPageChangeListener(new SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { if (mLastPageSelected != -1) { // check for first time switch (mLastPageSelected) { // case statements to set last tab icon to non-animated drawable } } switch (position) { // case statements to set current tab icon to animated drawable } mLastPageSelected = position; } });
- ¿Los objetos de Scala sobreviven a que la actividad se reinicie en Android?
- Seguridad y autenticación cliente-servidor