transiciones studio programacion personalizar mostrar manipular imagenes imagen agregar android android-animation

studio - toolbar material design android



Animaciones de diseƱo de Android de abajo a arriba y de arriba a abajo en ImageView, haga clic (3)

He creado una vista en Android y necesito animarla desde abajo hacia arriba y viceversa. cuando hice clic en ImageView necesito animar el RelativeLayout completo de abajo hacia arriba y se realiza correctamente. Pero cuando vuelvo a hacer clic en ImageView y no se mueve hacia abajo. Además, cuando hago clic en su lugar original, cuando hago clic en la posición original de la animación de ImageView ejecuta pero el RelativeLayout mueve hacia abajo desde la posición original, no de arriba a abajo.

Este es mi código:

ImageView iv_header; RelativeLayout rl_footer; boolean isBottom = true; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.rateus_layout); 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 if (isBottom) { FooterAnimation(); isBottom = false; } else { headerAnimation(); isBottom = true; } } }); } public void FooterAnimation() { Animation hide = AnimationUtils.loadAnimation(this, R.anim.move); rl_footer.startAnimation(hide); } public void headerAnimation() { Animation hide = AnimationUtils.loadAnimation(this, R.anim.footer); rl_footer.startAnimation(hide); }

El archivo de animación de abajo a arriba (Disposición relativa completa se mueve de abajo a arriba):

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1500" android:fillAfter="true" android:fromYDelta="0%p" android:toYDelta="-85%p" />

El archivo de animación de arriba a abajo (quiero que Relative Layout se mueva de arriba a abajo):

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1500" android:fillAfter="true" android:fromYDelta="0%p" android:toYDelta="84%p" />

El archivo 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>


He resuelto mi problema y ahora mi animación funciona bien :) si alguien necesita, simplemente copie mi código y archivo xml y tenga una codificación feliz :)

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>

simplemente crea un nuevo proyecto de Android y copia, pega mi código y diviértete! :) También recuerde que en xml tengo vista de imagen y sus imágenes de fondo se reemplazan con sus propias imágenes gracias ...


Prueba esto :

Crea una carpeta anim dentro de tu carpeta de res y copia estos cuatro archivos:

slide_in_bottom.xml:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromYDelta="100%p" android:duration="@android:integer/config_longAnimTime"/>

slide_out_bottom.xml:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromYDelta="0" android:duration="@android:integer/config_longAnimTime" />

slide_in_top.xml:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:toYDelta="0%p" android:duration="@android:integer/config_longAnimTime" />

slide_out_top.xml:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:toYDelta="100%p" android:duration="@android:integer/config_longAnimTime" />

Cuando haces clic en la vista de imagen, llama:

overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);

Cuando haces clic en el lugar original llama:

overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_top);

Actividad principal :

package com.example.animationtest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.btn1); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, test.class)); } }); } }

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> </LinearLayout>

test.java:

package com.example.animationtest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class test extends Activity { Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.test); btn1 = (Button) findViewById(R.id.btn1); overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right); startActivity(new Intent(test.this, MainActivity.class)); } }); } }

test.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" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> </LinearLayout>

Espero que esto ayude.


crear directorio en / res / anim y crear bottom_to_original.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="100%" android:toYDelta="1%" /> </set> LinearLayout ll = findViewById(R.id.ll); Animation animation; animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.sample_animation); ll .setAnimation(animation);