2015-08-01 15 views
7

Volevo avere l'animazione delle immagini proprio come fa whatsapp sulla foto del profilo di un amico. Qualcuno può dirmi come raggiungerlo?Whatsapp like profile picture animation

a cura

ho il mio caso, il imagview è in cima e sotto di essa, c'è listview. quando scorro il listview, il imageview dovrebbe aumentare le sue dimensioni e quando si scorre verso l'alto, la dimensione imageview dovrebbe ridurne le dimensioni. L'altezza massima di imageview può essere 500 e l'altezza minima di imageview può essere 100. Ho già raggiunto questo obiettivo. Quello che sto facendo è, cambiando l'altezza imagview. Ma non è così liscio.

+0

ho preso e aggiunsi la mia risposta per favore controlla e fammi sapere se hai problemi. –

risposta

2

devi usare Supporto alla progettazione Android Biblioteca e l'utilizzo che si può ottenere

Ecco il link :: http://android-developers.blogspot.in/2015/05/android-design-support-library.html

in cui si deve trovare Crollare Barre degli strumenti usando questo controllo è possibile raggiungere questo obiettivo .

per ulteriori informazioni è possibile consultare questo collegamento: https://github.com/chrisbanes/cheesesquare sarà molto utile per voi.

+0

Ma l'immagine non dovrebbe essere completamente invisibile. e l'immagine deve essere in grado di tirare verso il basso per aumentare le sue dimensioni – Bunny

+0

Ehi. Sto cercando lo stesso .. Hai trovato una soluzione? – spaceMonkey

+1

Per iOS, https://github.com/MaitrayeeGhosh/ParallaxScrollingAnimationEffectTutorial –

0

Fai un metodo globale per visualizzare l'immagine in piena vista nella vostra YourApplication.java:

public static void showExpandableImage(Context context, String imageUri, String title, View view) { 
     try { 

      Intent intent = new Intent(context, ViewImageActivity.class); 
      intent.putExtra("image", imageUri); 
      intent.putExtra("title", title); 

      if (TextUtils.isEmpty(imageUri)) { 
       imageUri = getURLForResource(R.drawable.user_placeholder); // default image in drawable 
      } 

      Pair<View, String> bodyPair = Pair.create(view, imageUri); 
      ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(((Activity)context), bodyPair); 

      ActivityCompat.startActivity(context, intent, options.toBundle()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

public static String getURLForResource (int resourceId) { 
     return Uri.parse("android.resource://com.yourpackage.name/" + resourceId).toString(); 
    } 

aggiungere questo codice in image_view_layout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLay" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/black" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="fitCenter" /> 

</LinearLayout> 

aggiungere questo codice in ViewImageActivity:

public class ViewImageActivity extends AppCompatActivity { 
    private ImageView imageView; 
    private TextView title; 
    private String my_title, imgPath; 

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

     imageView = findViewById(R.id.imageView); 
     title = findViewById(R.id.title); 

     imgPath = getIntent().getExtras().getString("image"); 
     my_title = getIntent().getExtras().getString("title"); 

     if (!TextUtils.isEmpty(my_title)) { 
       title.setText(my_title); 
      } 

     if (!TextUtils.isEmpty(imgPath)) { 

      ViewCompat.setTransitionName(imageView, imgPath); 
      Picasso.with(this).load(imgPath) 
         .placeholder(R.drawable.user_placeholder) 
         .error(R.drawable.user_placeholder) 
         .into(imageView); 

     } else { 
       ViewCompat.setTransitionName(imageView, "NotAvailable"); 
       Picasso.with(this).load(R.drawable.user_placeholder) 
         .placeholder(R.drawable.user_placeholder) 
         .error(R.drawable.user_placeholder) 
         .into(imageView); 
      } 

    } 

} 

Basta chiamare questo metodo ovunque tu voglia WhatsApp per mostrare come l'animazione:

un esempio in attività:

ImageView image_view = findViewById(R.id.pic_image_view); 
showExpandableImage(MyActivity.this, "UrlOfImage", "MyTitle", image_view); // replace with your content 

Un esempio in adattatore:

ImageView image_view = itemView.findViewById(R.id.pic_image_view); 
showExpandableImage(context, "UrlOfImage", "MyTitle", image_view); // replace with your content 

Felice di codifica .. :)