Ver mensagens sem resposta | Ver tópicos ativos Hoje é 06 Dez 2019, 05:30



Responder Tópico  [ 2 Mensagens ] 
 Efeito em galeria 
Autor Mensagem
Hello World!
Hello World!

Data de registro: 18 Set 2013, 09:28
Mensagens: 24
Mensagem Efeito em galeria
Boas pessoal,

Tenho procurado por aqui se existe algo parecido mas não encontrei não. Então o que queria fazer era um efeito tipo coverFlow.

Já testei com vários códigos que vi na net mas têm sempre erros ou linhas de código que não são aceites no meu projecto.

Alguem sabe mesmo como fazer ou tem algum sitio onde me pode ajudar?

Obrigado


19 Set 2013, 13:23
Perfil
Hello World!
Hello World!

Data de registro: 18 Set 2013, 09:28
Mensagens: 24
Mensagem Re: Efeito em galeria
Pessoal já tenho o efeito muito próximo do que queria, agora o problema é que tudo o que incluo no XML não me aparece depois na aplicaçã, ou seja, só aparece mesmo o efeito de coverflow e não o consegui colocar dentro da minha galeria. Alguem me ajuda que estou á 3 dias de volta disto e não estou conseguindo chegar ao resultado final, vou postar meu código para verem.

Class Activity


package com.example.over;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class HomeActivity extends Activity{
   
    private  final static String TAG = "HomeActivity";
    private TextView pageNameTextView;
    private CoverFlow coverFlow;
    private ImageAdapter coverImageAdapter;
    private int itemSelected = 0;
    private Context context;
    private SparseArray<String> listeNomIcons;
    private int currentImagePosition = 0;

    //Info button
    private ImageView infoAccueilImageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_layout);
        //animate Transition
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

        context = this;

        listeNomIcons = new SparseArray<String>();
        listeNomIcons.put(0, "DELAIS D'ATTENTE, RETARD");
        listeNomIcons.put(1, "COURRIER SUBSTITUTION");
        listeNomIcons.put(2, "IR LC");
        listeNomIcons.put(3, "CONTACTS UTILES");
        listeNomIcons.put(4, "TEMPS DE PAUSE");
   

        coverFlow = (CoverFlow)findViewById(R.id.coverflow);  
        coverImageAdapter =  new ImageAdapter(this);  
        coverFlow.setAdapter(coverImageAdapter);
        coverFlow.setSelection(0, true);
        coverFlow.setAnimationDuration(1000);

        //cover

        pageNameTextView = (TextView)findViewById(R.id.page_nameTextView);
//
//        //Info Accueil Image View
//        infoAccueilImageView = (ImageView)findViewById(R.id.infoImageView);
//        infoAccueilImageView.setOnClickListener( new OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                startActivity(new Intent(context, InfoAccueilActivity.class));
//            }
//        } ) ;

        coverFlow.setOnItemSelectedListener(new OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                currentImagePosition = position; //this will update your current marker
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

//  
//        Button goRight = (Button) findViewById(R.id.select_rightButton);
//        goRight.setOnClickListener(new OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                // go to next item
//                coverFlow.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(0, 0));
//            }
//        });

//        coverFlow.setOnItemClickListener(new OnItemClickListener() {
//
//            @Override
//            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
//                    long arg3) {
//
//                if(itemSelected == arg2)
//                {
//                    Log.d(TAG, "arg2 : "+arg2);
//                    switch (arg2) {
//                    case 0:
//                        startActivity(new Intent(context, DelaisAttenteActivity.class));
//                        break;
//                    case 1:
//                        startActivity(new Intent(context, CourrierSubstitutionActivity.class));
//                        break;
//                    case 2:
//                        startActivity(new Intent(context, IRLCActivity.class));
//                        break;
//                    case 3:
//                        startActivity(new Intent(context, ContactsActivity.class));
//                        break;
//                    case 4:
//                        startActivity(new Intent(context, TempsPauseActivity.class));
//                        break;
//                    case 5:
//                        startActivity(new Intent(context, DispertionActivity.class));
//                        break;
//                    case 6:
//                        startActivity(new Intent(context, ProrataReposActivity.class));
//                        break;
//                    case 7:
//                        startActivity(new Intent(context, AlerteDomicileActivity.class));
//                        break;
//                    case 8:
//                        startActivity(new Intent(context, ReserveDomicileActivity.class));
//                        break;                      
//                    case 9:
//                        startActivity(new Intent(context, ReposAdditionnelActivity.class));
//                        break;
//                    case 10:
//                        startActivity(new Intent(context, JokerActivity.class));
//                        break;
//
//                    default:
//                        break;
//                    }
//                }
//            }
//        });
        coverFlow.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                pageNameTextView.setText(listeNomIcons.get(arg2));
                itemSelected = arg2;
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });
    }

    public class ImageAdapter extends BaseAdapter {
        int mGalleryItemBackground;
        private final Context mContext;


        private final Integer[] mImageIds = {
                R.drawable.alipay,
                R.drawable.amazon_payments,
                R.drawable.american_express_gold,
                R.drawable.bank_of_america
           
        };

        private final ImageView[] mImages;

        public ImageAdapter(Context c) {
            mContext = c;
            mImages = new ImageView[mImageIds.length];
        }

        @Override
        public int getCount() {
            return mImageIds.length;
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            //Use this code if you want to load from resources
            ImageView i = new ImageView(mContext);
            i.setImageResource(mImageIds[position]);
            i.setLayoutParams(new CoverFlow.LayoutParams(130, 130));
            i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            //Make sure we set anti-aliasing otherwise we get jaggies
            BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
            drawable.setAntiAlias(true);
            return i;

            //return mImages[position];
        }
        /** Returns the size (0.0f to 1.0f) of the views
         * depending on the 'offset' to the center. */

        public float getScale(boolean focused, int offset) {
            /* Formula: 1 / (2 ^ offset) */
            return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
        }

    }
}

 


Classe do CoverFlow


package com.example.over;

import android.content.Context;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Transformation;
import android.widget.Gallery;
import android.widget.ImageView;

public class CoverFlow extends Gallery {

    /**
     * Graphics Camera used for transforming the matrix of ImageViews
     */

    private final Camera mCamera = new Camera();

    /**
     * The maximum angle the Child ImageView will be rotated by
     */
   
    private int mMaxRotationAngle = 80;

    /**
     * The maximum zoom on the centre Child
     */

    // TODO RENDRE LA VALEUR DYNAMIQUE SUR LA TAILLE DE L'ECRAN

//    private int mMaxZoom = -430;
    private int mMaxZoom = -370;

    /**
     * The Centre of the Coverflow
     */
 
    private int mCoveflowCenter;

 public CoverFlow(Context context) {
  super(context);
  this.setStaticTransformationsEnabled(true);
 }

 public CoverFlow(Context context, AttributeSet attrs) {
  super(context, attrs);
        this.setStaticTransformationsEnabled(true);
 }

  public CoverFlow(Context context, AttributeSet attrs, int defStyle) {
   super(context, attrs, defStyle);
   this.setStaticTransformationsEnabled(true);  
  }

    /**
     * Get the max rotational angle of the image
  * @return the mMaxRotationAngle
  */

 public int getMaxRotationAngle() {
  return mMaxRotationAngle;
 }

 /**
  * Set the max rotational angle of each image
  * @param maxRotationAngle the mMaxRotationAngle to set
  */

 public void setMaxRotationAngle(int maxRotationAngle) {
  mMaxRotationAngle = maxRotationAngle;
 }

 /**
  * Get the Max zoom of the centre image
  * @return the mMaxZoom
  */

 public int getMaxZoom() {
  return mMaxZoom;
 }

 /**
  * Set the max zoom of the centre image
  * @param maxZoom the mMaxZoom to set
  */

 public void setMaxZoom(int maxZoom) {
  mMaxZoom = maxZoom;
 }

 /**
     * Get the Centre of the Coverflow
     * @return The centre of this Coverflow.
     */

    private int getCenterOfCoverflow() {
        return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2 + getPaddingLeft();
    }

    /**
     * Get the Centre of the View
     * @return The centre of the given view.
     */

    private static int getCenterOfView(View view) {
        return view.getLeft() + view.getWidth() / 2;
    }  
    /**
  * {@inheritDoc}
  *
  * @see #setStaticTransformationsEnabled(boolean)
  */

    @Override
    protected boolean getChildStaticTransformation(View child, Transformation t) {

  final int childCenter = getCenterOfView(child);
  final int childWidth = child.getWidth() ;
  int rotationAngle = 0;

  t.clear();
  t.setTransformationType(Transformation.TYPE_MATRIX);

        if (childCenter == mCoveflowCenter) {
            transformImageBitmap((ImageView) child, t, 0);
        } else {      
            rotationAngle = (int) (((float) (mCoveflowCenter - childCenter)/ childWidth) *  mMaxRotationAngle);
            if (Math.abs(rotationAngle) > mMaxRotationAngle) {
             rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle : mMaxRotationAngle;  
            }
            transformImageBitmap((ImageView) child, t, rotationAngle);        
        }    

  return true;
 }

 /**
  * This is called during layout when the size of this view has changed. If
  * you were just added to the view hierarchy, you're called with the old
  * values of 0.
  *
  * @param w Current width of this view.
  * @param h Current height of this view.
  * @param oldw Old width of this view.
  * @param oldh Old height of this view.
     */

     @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
      mCoveflowCenter = getCenterOfCoverflow();
      super.onSizeChanged(w, h, oldw, oldh);
     }

     /**
      * Transform the Image Bitmap by the Angle passed
      *
      * @param imageView ImageView the ImageView whose bitmap we want to rotate
      * @param t transformation
      * @param rotationAngle the Angle by which to rotate the Bitmap
      */

     private void transformImageBitmap(ImageView child, Transformation t, int rotationAngle) {            
      mCamera.save();
      final Matrix imageMatrix = t.getMatrix();;
      final int imageHeight = child.getLayoutParams().height;;
      final int imageWidth = child.getLayoutParams().width;
      final int rotation = Math.abs(rotationAngle);

      mCamera.translate(0.0f, 0.0f, 100.0f);

      //As the angle of the view gets less, zoom in    
      if ( rotation < mMaxRotationAngle ) {
       float zoomAmount = (mMaxZoom + rotation);
       mCamera.translate(0.0f, 0.0f, zoomAmount);          
      }

      mCamera.rotateY(rotationAngle);
      mCamera.getMatrix(imageMatrix);              
      imageMatrix.preTranslate(-(imageWidth/2), -(imageHeight/2));
      imageMatrix.postTranslate((imageWidth/2), (imageHeight/2));
      mCamera.restore();
 }
}
 


e o meu XML


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
   
    <com.example.coverflow.CoverFlow
    android:id="@+id/coverflow"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

   
    <ImageView
        android:id="@+id/infoImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_dialog_alert" />

    <TextView
        android:id="@+id/page_nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

 


Não consigo tambem que o text apareça na minha app


23 Set 2013, 08:46
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 2 Mensagens ] 

Quem está online

Usuários vendo este fórum: Adeja, ademilson, adenilsonsena, adilson, albinoneto, alex.abrantes, alexandreufcg, alylson, ANDRE FELIX DE ASSIS, Andrey, Androidthebest, Aniquiler, arkanjo, Ask Jeeves, attomweb, bernardodauer, Biel, BiG_SerGiO, Bitetti, buccalon, caiodemarco, capo, Cassius, Chanceler Supremo Finis Valorum, Cr-Informática, cyzko, darllan.marinho, Darth Vader, Diego Rufino, Dudi_FC, EduardoYC, elisa, eXagon, fabielp, fernandodotnet, fernandofsf, gapler, garretereis, Google Desktop, gphonemania, Guilherme Cobain, gusrp, hbarroco, Heritrix, icarodavi, IgorBrum, ismaels, ismavolk, ixian, j-menezes, jandersonjc, jcdeveloper, jlucasps, klyff, lafamac, laucode, leo, leoadias, lillian.brandao, lisbao, Liviosousa, lucasB, LucasNascimento, luciano.sml, lucianoedipo, luizcarlosvb, Maiquell, malucouto, marcow, marianatallas, mateusff, Matheus562, Mayron Cimardi, mcurtis, memnoch, monteirojp, nandopierre, neuhaus, nino, nocivus, nq6, onedroid, otpor, Padawan, Patricia, Paulo Bizzo, Petto, pfsmorigo, pjorge, ramonsa, rananfu, rayberg, renatocoliveira, ricdigital, rogerio, rogeriopgomes, Roll, rsl_master, SEO Crawler, sephct, shadow, Shaman286, siker C3PO, sjta, talves, Tangerina, tChAnDy, thiagoalgo, thiagotomais, tonylock, Transtago, ttaranto, unnamedd, vanmars, Vinicius, viniciusllima, wagner_francisco, wcaciano, Wesleyceraso, wil, wilsond e 9 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi