Recomendado del mes

Proyecto IDeA I+D 2026 impulsará el desarrollo de una tecnología innovadora para el ...

Proyecto IDeA I+D 2026: Una revolución en el diagnóstico temprano del cáncer de próstata El Proyecto IDeA I+D 2026 se perfila como una iniciativa innovadora en el ámbito de la tecnología médica , enfocada en el desarrollo de una tecnología avanzada para el diagnóstico temprano del cáncer de próstata . Esta iniciativa, liderada por la Universidad de Chile, busca mejorar significativamente las tasas de detección y tratamiento de esta enfermedad, que afecta a miles de hombres en todo el mundo. El diagnóstico temprano es clave en la lucha contra el cáncer de próstata, ya que aumenta las posibilidades de tratamiento efectivo y supervivencia. La tecnología que se desarrollará en el marco del Proyecto IDeA I+D 2026 promete ser una herramienta valiosa para los profesionales de la salud, permitiéndoles detectar la enfermedad en sus primeras etapas, cuando es más fácil de tratar. La Universidad de Chile, a través de este proyecto, busca no solo contribuir al avance de la medicina y la tecn...

Slider en Android Nativo

Bueno hemos traído hoy un tutorial de Android que los ayudara a implementar un Slider nativo con un par de librerías como lo son picasso y slider.

Bueno lo primero que vamos hacer es crear un nuevo proyecto llamado (ejemplosliderimages), recuerden que el nombre lo pueden cambiar si lo desean.

Luego damos clic en siguiente, luego seleccionamos la opción de Blank Activity, damos nuevamente clic en siguiente y luego finalizar.

Listo una vez tengamos el proyecto creado vamos a incluir las librerías que necesitamos para que todo funcione bien.

Nos dirigimos a el archivo build.gradle donde colocamos dentro de dependencies lo siguente:

  • compile 'com.squareup.picasso:picasso:2.5.2'
  • compile 'com.nineoldandroids:library:2.4.0'
  • compile 'com.daimajia.slider:library:1.1.5@aar'

Damos clic sobre Sync Now para que nuestro proyecto implemente las librerías. esto tardara un poco en sincronizar.

Una vez hecho lo anterior vamos a modificar el activity_main.xml agregando el siguiente código.

En layout vamos a crear un xml llamado item.xml con el siguiente codigo:

Ahora vamos a crear una clase al nivel de MainActivity llamada TransformerAdapter en la que vamos a colocar el siguiente codigo:

  

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.daimajia.slider.library.SliderLayout;

/**
 * Created by jcmolanoro on 07/07/2015.
 */
public class TransformerAdapter extends BaseAdapter {
    private Context mContext;
    public TransformerAdapter(Context context) {
        mContext = context;
    }

    @Override
    public int getCount() {
        return SliderLayout.Transformer.values().length;
    }

    @Override
    public Object getItem(int position) {
        return SliderLayout.Transformer.values()[position].toString();
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView t = (TextView) LayoutInflater.from(mContext).inflate(R.layout.item,null);
        t.setText(getItem(position).toString());
        return t;
    }
}

Solo nos falta modificar el MainActivity, que es el encargado de implementar el Slider de nuestra app.

Vamos a implementar el BaseSliderView.OnSliderClickListener y ViewPagerEx.OnPageChangeListener.

Luego vamos a crear una variable privada private SliderLayout mDemoSlider;

Dentro de onCreate hacemos el llamado de nuestra vista mDemoSlider = (SliderLayout) findViewById(R.id.slider); y creamos un HashMap para hacer un arreglo de las imagenes que vamso a mostrar en nuestro Slider.

  • HashMap url_maps = new HashMap();
  • url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png");
  • url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");

Luego de esto de damos la función al ListView para que al hacer clic sobre el nos cambie la animación del Slider.

Quedando nuestra clase de la siguiente manera.

  

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import com.daimajia.slider.library.Tricks.ViewPagerEx;

import java.util.HashMap;


public class MainActivity extends ActionBarActivity implements BaseSliderView.OnSliderClickListener, ViewPagerEx.OnPageChangeListener{
    private SliderLayout mDemoSlider;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDemoSlider = (SliderLayout) findViewById(R.id.slider);
        HashMap url_maps = new HashMap();
        url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png");
        url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");
        url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");

        for(String name : url_maps.keySet()){
            TextSliderView textSliderView = new TextSliderView(this);
            // initialize a SliderLayout
            textSliderView
                    .description(name)
                    .image(url_maps.get(name))
                    .setScaleType(BaseSliderView.ScaleType.Fit)
                    .setOnSliderClickListener(MainActivity.this);

            //add your extra information
            textSliderView.bundle(new Bundle());
            textSliderView.getBundle()
                    .putString("extra",name);

            mDemoSlider.addSlider(textSliderView);
        }
        mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
        mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
        mDemoSlider.setCustomAnimation(new DescriptionAnimation());
        mDemoSlider.setDuration(4000);
        mDemoSlider.addOnPageChangeListener(MainActivity.this);
        ListView l = (ListView) findViewById(R.id.transformers);
        l.setAdapter(new TransformerAdapter(this));
        l.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                mDemoSlider.setPresetTransformer(((TextView) view).getText().toString());
            }
        });
    }


    @Override
    public void onStop() {
        // To prevent a memory leak on rotation, make sure to call stopAutoCycle() on the slider before activity or fragment is destroyed
        mDemoSlider.stopAutoCycle();
        super.onStop();
    }

    @Override
    public void onSliderClick(BaseSliderView slider) {
        Toast.makeText(this,slider.getBundle().get("extra") + "",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    @Override
    public void onPageSelected(int position) {
        Log.d("Slider Demo", "Page Changed: " + position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

al implementar las clases se nos crean nuevos métodos como lo son onStop(), onSliderClick(), onPageScrolled(), onPageSelected() y onPageScrollStateChanged().

Les dejo un vídeo y el código para que puedan trabajar este tutorial. no olviden comentar.

Video

Comentarios

Publicar un comentario

Gracias por compartir tus comentarios con nosotros, si el comentario requiere de alguna respuesta por parte de nosotros, trataremos de responderte lo mas pronto posible.

Entradas populares de este blog

“La tecnología es sinónimo de rechazo y competencia”: ¿por qué la gestión del cambio ...

Egipto impulsa una tecnología innovadora que limpia los paneles solares en el desierto sin ...

Revisa acá el calendario astronómico de diciembre de 2025 - BioBioChile