Android animar mi diseño relativo de abajo hacia arriba y de arriba a abajo usando la animación de traducción en la vista de imagen haga clic
Necesito hacer animar mi diseño relativo cuando haga clic en la vista de imagen.
1.Moviendo el diseño relativo desde abajo hacia arriba (al hacer clic en él en la vista de imagen).
- Mostrar una animación de barra de herramientas oculta no suave
- Botón de rebote en el grifo
- Animación Drawable causando OutOfMemoryError en segunda ejecución en Android
- IOS como sobre el efecto de desplazamiento en Android
- Android: obtener animaciones de transición de actividad por defecto del sistema
2. Mover de nuevo de arriba a abajo (al hacer clic de nuevo en la vista de imagen).
Primero, cuando hago clic en la vista de la imagen, funciona bien y el diseño relativo se mueve de arriba a abajo, pero cuando vuelvo a hacer clic en la vista de la imagen, se anima de arriba a abajo cuando se alcanza la posición original. Ayuda y gracias de antemano.
Esta es mi Actividad:
public class MainActivity extends Activity { RelativeLayout rl_footer; ImageView iv_header; boolean isBottom = true; Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rl_footer = (RelativeLayout) findViewById(R.id.rl_footer); iv_header = (ImageView) findViewById(R.id.iv_up_arrow); iv_header.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub iv_header.setImageResource(R.drawable.down_arrow); // iv_header.setVisibility(View.INVISIBLE); // iv_down.setVisibility(View.VISIBLE); iv_header.setPadding(0, 10, 0, 0); // substitute parameters for // left, top, right, bottom rl_footer.setBackgroundResource(R.drawable.up_manu_bar); // FooterAnimation(); if (isBottom) { FooterAnimation(); isBottom = false; } else { iv_header.setImageResource(R.drawable.up_arrow); iv_header.setPadding(0, 0, 0, 10); rl_footer.setBackgroundResource(R.drawable.down_manu_bar1); headerAnimation(); isBottom = true; } } }); } public void FooterAnimation() { Animation slide = null; slide = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -5.0f); slide.setDuration(400); slide.setFillAfter(true); slide.setFillEnabled(true); rl_footer.startAnimation(slide); slide.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { rl_footer.clearAnimation(); if (isBottom) { RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); lp.setMargins(rl_footer.getWidth(), 0, 0, 0); rl_footer.setLayoutParams(lp); } else { RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); lp.setMargins(0, 0, 0, 0); rl_footer.setLayoutParams(lp); } } }); } public void headerAnimation() { Animation slide = null; slide = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 5.2f); slide.setDuration(400); slide.setFillAfter(true); slide.setFillEnabled(true); rl_footer.startAnimation(slide); slide.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { rl_footer.clearAnimation(); if (isBottom) { RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); lp.setMargins(rl_footer.getWidth(), 0, 0, 0); rl_footer.setLayoutParams(lp); } else { RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); lp.setMargins(0, 0, 0, 0); rl_footer.setLayoutParams(lp); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Y mi Xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/autograph_bg" > <RelativeLayout android:id="@+id/rl_footer" android:layout_width="fill_parent" android:layout_height="70dp" android:layout_alignParentBottom="true" android:background="@drawable/down_manu_bar1" > <ImageView android:id="@+id/iv_new_file" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="18dp" android:onClick="onNewFileClick" android:src="@drawable/file_icon" /> <TextView android:id="@+id/tv_new_file" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_new_file" android:layout_below="@+id/iv_new_file" android:text="New" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_insert" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_new_file" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/iv_new_file" android:src="@drawable/insert_icon" /> <TextView android:id="@+id/tv_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_insert" android:layout_below="@+id/iv_insert" android:text="Insert" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_up_arrow" android:layout_width="45dp" android:layout_height="45dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:paddingBottom="10dp" android:src="@drawable/up_arrow" /> <ImageView android:id="@+id/iv_down_arrow" android:layout_width="45dp" android:layout_height="45dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/down_arrow" android:paddingBottom="10dp" android:visibility="gone" /> <ImageView android:id="@+id/iv_save" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_insert" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/iv_up_arrow" android:src="@drawable/save" /> <TextView android:id="@+id/tv_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_save" android:layout_alignParentBottom="true" android:text="Save" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_settings" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_save" android:layout_marginLeft="27dp" android:layout_toRightOf="@+id/tv_save" android:paddingTop="2dp" android:src="@drawable/icon_settings" /> <TextView android:id="@+id/tv_settings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginLeft="260dp" android:text="Settings" android:textColor="#ffffff" /> </RelativeLayout> </RelativeLayout>
- Problema de animación de botones de acción flotante
- Animación personalizada para Toast entrar / salir?
- Efecto de publicación de carta o efecto genio como animación en android
- Traducción relativa en animación de propiedades en xml
- ¿Es este efecto posible en viewpager?
- El atributo Alpha sólo funciona en Android Lollipop, ¿por qué?
- Simular la animación dentro de la vista personalizada en Android
- Cómo animar la traducción de una vista
He resuelto mi problema y ahora mi animación funciona bien 🙂 si alguien necesita sólo copiar mi código y xml y plz no gracias: p
Mi actividad MainActivity:
import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; public class MainActivity extends Activity { RelativeLayout rl_footer; ImageView iv_header; boolean isBottom = true; Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rl_footer = (RelativeLayout) findViewById(R.id.rl_footer); iv_header = (ImageView) findViewById(R.id.iv_up_arrow); iv_header.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub iv_header.setImageResource(R.drawable.down_arrow); iv_header.setPadding(0, 10, 0, 0); rl_footer.setBackgroundResource(R.drawable.up_manu_bar); if (isBottom) { SlideToAbove(); isBottom = false; } else { iv_header.setImageResource(R.drawable.up_arrow); iv_header.setPadding(0, 0, 0, 10); rl_footer.setBackgroundResource(R.drawable.down_manu_bar1); SlideToDown(); isBottom = true; } } }); } public void SlideToAbove() { Animation slide = null; slide = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -5.0f); slide.setDuration(400); slide.setFillAfter(true); slide.setFillEnabled(true); rl_footer.startAnimation(slide); slide.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { rl_footer.clearAnimation(); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); // lp.setMargins(0, 0, 0, 0); lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); rl_footer.setLayoutParams(lp); } }); } public void SlideToDown() { Animation slide = null; slide = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 5.2f); slide.setDuration(400); slide.setFillAfter(true); slide.setFillEnabled(true); rl_footer.startAnimation(slide); slide.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { rl_footer.clearAnimation(); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( rl_footer.getWidth(), rl_footer.getHeight()); lp.setMargins(0, rl_footer.getWidth(), 0, 0); lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); rl_footer.setLayoutParams(lp); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Y mi Xml activity_main:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/autograph_bg" > <RelativeLayout android:id="@+id/rl_footer" android:layout_width="fill_parent" android:layout_height="70dp" android:layout_alignParentBottom="true" android:background="@drawable/down_manu_bar1" > <ImageView android:id="@+id/iv_new_file" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="18dp" android:onClick="onNewFileClick" android:src="@drawable/file_icon" /> <TextView android:id="@+id/tv_new_file" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_new_file" android:layout_below="@+id/iv_new_file" android:text="New" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_insert" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_new_file" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/iv_new_file" android:src="@drawable/insert_icon" /> <TextView android:id="@+id/tv_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_insert" android:layout_below="@+id/iv_insert" android:text="Insert" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_up_arrow" android:layout_width="45dp" android:layout_height="45dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:paddingBottom="10dp" android:src="@drawable/up_arrow" /> <ImageView android:id="@+id/iv_down_arrow" android:layout_width="45dp" android:layout_height="45dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/down_arrow" android:paddingBottom="10dp" android:visibility="gone" /> <ImageView android:id="@+id/iv_save" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_insert" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/iv_up_arrow" android:src="@drawable/save" /> <TextView android:id="@+id/tv_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/iv_save" android:layout_alignParentBottom="true" android:text="Save" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_settings" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignTop="@+id/iv_save" android:layout_marginLeft="27dp" android:layout_toRightOf="@+id/tv_save" android:paddingTop="2dp" android:src="@drawable/icon_settings" /> <TextView android:id="@+id/tv_settings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginLeft="260dp" android:text="Settings" android:textColor="#ffffff" /> </RelativeLayout> </RelativeLayout>
Sólo crear nuevo proyecto androide y copia pegar mi código y divertirse! 🙂 También recuerdo en xml tengo vista de imagen y sus imágenes de fondo reemplazar con yout propias imágenes gracias ..
- ¿Configurar la imagen de fondo para el diseño relativo?
- ¿Se aplican los límites API de Google Maps a las aplicaciones de Android?