我在Android中创建了一个视图,我需要从下到上为其设置动画,反之亦然.当我点击时,ImageView
我需要RelativeLayout
从底部到顶部动画完整,并且它成功了.但是,当我再次点击ImageView
它并没有向下移动时.此外,当我点击其原始位置时,当我单击ImageView
动画的原始位置时,但从RelativeLayout
原始位置向下移动而不是从上到下.
这是我的代码:
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); }
动画文件从下到上(完全相对布局从底部移到顶部):
从上到下的动画文件(我想再次将相对布局从顶部移动到底部):
Xml文件:
Siddharth_Vy.. 29
试试这个 :
在res文件夹中创建anim文件夹并复制这四个文件:
slide_in_bottom.xml:
slide_out_bottom.xml:
slide_in_top.xml:
slide_out_top.xml:
当您单击图像视图调用时:
overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
当您点击原始地方电话时:
overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_top);
主要活动 :
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:
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:
希望这可以帮助.
试试这个 :
在res文件夹中创建anim文件夹并复制这四个文件:
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" />
当您单击图像视图调用时:
overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
当您点击原始地方电话时:
overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_top);
主要活动 :
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_ android:layout_ tools:context=".MainActivity" > <Button android:id="@+id/btn1" android:layout_ android:layout_ 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_ android:layout_ android:orientation="vertical" > <Button android:id="@+id/btn1" android:layout_ android:layout_ android:text="Button1" /> </LinearLayout>
希望这可以帮助.
我已经解决了我的问题,现在我的动画工作正常:)如果有人需要只需复制我的代码和xml文件,并有一个快乐的编码:)
我的活动主要活动:
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; } }
和我的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_ android:layout_ android:background="@drawable/autograph_bg" > <RelativeLayout android:id="@+id/rl_footer" android:layout_ android:layout_ android:layout_alignParentBottom="true" android:background="@drawable/down_manu_bar1" > <ImageView android:id="@+id/iv_new_file" android:layout_ android:layout_ 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_ android:layout_ 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_ android:layout_ 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_ android:layout_ 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_ android:layout_ 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_ android:layout_ 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_ android:layout_ 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_ android:layout_ android:layout_alignLeft="@+id/iv_save" android:layout_alignParentBottom="true" android:text="Save" android:textColor="#ffffff" /> <ImageView android:id="@+id/iv_settings" android:layout_ android:layout_ 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_ android:layout_ android:layout_alignParentBottom="true" android:layout_marginLeft="260dp" android:text="Settings" android:textColor="#ffffff" /> </RelativeLayout> </RelativeLayout>
只需创建新的Android项目并复制粘贴我的代码,玩得开心!:)还记得在xml我有图像视图和他的背景图像替换你自己的图像谢谢..