实现两张图片的交替,像左边移动交替,像右边移动交替,图片左(右)出,右(左)进等。
public class Move extends AbstractAnimation {
private float fromXDelta;
private float toXDelta;
private float fromYDelta;
private float toYDelta;
private ImageView view;
private Context mContext;
private boolean filpLeft;
private boolean filpRight;
//receive the Activity
public Context getmContext() {
return mContext;
}
public void setmContext(Context mContext) {
this.mContext = mContext;
}
public boolean isFilpLeft() {
return filpLeft;
}
public void setFilpLeft(boolean filpLeft) {
this.filpLeft = filpLeft;
}
public boolean isFilpRight() {
return filpRight;
}
public void setFilpRight(boolean filpRight) {
this.filpRight = filpRight;
}
TranslateAnimation translateStart,translateEnd;
public float getFromXDelta() {
return fromXDelta;
}
public void setFromXDelta(float fromXDelta) {
this.fromXDelta = fromXDelta;
}
public float getToXDelta() {
return toXDelta;
}
public void setToXDelta(float toXDelta) {
this.toXDelta = toXDelta;
}
public float getFromYDelta() {
return fromYDelta;
}
public void setFromYDelta(float fromYDelta) {
this.fromYDelta = fromYDelta;
}
public float getToYDelta() {
return toYDelta;
}
public void setToYDelta(float toYDelta) {
this.toYDelta = toYDelta;
}
@Override
public void performAnimation(Handler handler) {
view = (ImageView)getTarget();
//isFilpLeft: when the UI add the String to move left isFilpLeft = true;
if(isFilpLeft()){
translateStart = new TranslateAnimation(fromXDelta,toXDelta,fromYDelta,toYDelta);
translateEnd = new TranslateAnimation(-toXDelta,fromXDelta,-toYDelta,fromYDelta);
setFilpLeft(false);
}else if(isFilpRight()){
translateStart = new TranslateAnimation(fromXDelta,-toXDelta,fromYDelta,-toYDelta);
translateEnd = new TranslateAnimation(toXDelta,fromXDelta,toYDelta,fromYDelta);
setFilpRight(false);
} else{
translateStart = new TranslateAnimation(fromXDelta,toXDelta,fromYDelta,toYDelta);
translateEnd = new TranslateAnimation(toXDelta,fromXDelta,toYDelta,fromYDelta);
}
translateStart.setDuration((long)(getDuration()*1000));
translateEnd.setDuration((long)(getDuration()*1000));
translateStart.setRepeatCount(getRepeat());
translateStart.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
//change the image when the activity call.
if(mContext != null){
Bitmap bmp = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.image2);
view.setImageBitmap(bmp);
view.startAnimation(translateEnd);
}else{
view.startAnimation(translateEnd);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
});
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.startAnimation(translateStart);
}
}, (long)(getDelay()*1000));
}
}
分享到:
相关推荐
`TranslateAnimation`是Android系统提供的四大基本动画类型之一,用于实现视图(View)的平移移动效果。本篇将深入探讨如何利用`TranslateAnimation`实现View的动态移动,并讨论相关设置方法,如`setFillAfter`和...
今天我们要探讨的是视图动画中的平移动画(TranslateAnimation),它允许我们实现元素在屏幕上的左右、上下平滑移动。 Android的TranslateAnimation类是实现平移动画的核心工具,它属于补间动画(Tween Animation)的一...
TranslateAnimation则是在早期版本(API level 1)中就存在的,它是对View动画框架的一部分,主要处理2D平面上的移动动画。 创建一个TranslateAnimation,你需要指定四个关键参数:fromXDelta、toXDelta、...
例如,你可以这样创建一个持续5秒钟的水平移动动画: ```java ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "translationX", startTranslationX, endTranslationX); animator.setDuration(5000); ...
Android提供了多种动画类型,其中包括TranslateAnimation,它是用于实现对象平移(位移)效果的动画。在本文中,我们将深入探讨TranslateAnimation的使用及其重要参数和方法。 TranslateAnimation是Android 2D图形...
例如,我们可以这样创建一个移动动画: ```java ObjectAnimator moveAnim = ObjectAnimator.ofFloat(imageView, "translationX", 0, 100); // 水平移动 moveAnim.addAnimatorListener(new Animator....
这篇博客详细介绍了如何创建一个简单的图标移动动画。首先,我们需要理解Android中的动画系统,它主要分为两种类型:属性动画(Property Animation)和视图动画(View Animation)。属性动画是在API 11及以上版本...
2. 设置动画:为每个菜单项创建一个TranslateAnimation,定义它们在动画过程中的移动路径。这通常涉及到计算每个菜单项相对于中心点的偏移量,并在animation属性中设置。 3. 应用动画:在按钮点击或者其他触发事件...
移动动画由`TranslateAnimation`类实现,用于改变视图的位置。创建移动动画的代码示例: ```java TranslateAnimation translateAnim = new TranslateAnimation( fromXDelta, toXDelta, fromYDelta, toYDelta); ```...
2. **移动动画**(TranslateAnimation):移动动画允许元素在X和Y轴上移动。通过指定起始位置和目标位置,元素可以在屏幕上滑动,实现如淡入淡出、弹跳等效果。这在创建导航或过渡效果时非常有用。 3. **缩放动画**...
而“布局+TranslateAnimation搞定”则表明这个效果是通过布局设计和动画处理来完成的,特别是使用了Android的TranslateAnimation类。 在Android开发中,布局(Layout)是构建用户界面的基础,它定义了屏幕上元素的...
这个Demo利用TranslateAnimation实现的。 刚开始的时候第一个view占满整个屏幕,当点击第一个view中的一个按钮,整体的view向左移动,从而使第二个view显示出来,使得第一个view占屏幕的20%,第二个view占屏幕的80%...
2. **动画库**:Android提供了许多库来帮助开发者实现动画效果,例如`android.view.animation`包下的TranslateAnimation、AlphaAnimation等。另外,Android Support Library中的Animator和Property Animation API也...
标题提到的“动画移动效果”尤其在界面交互中占据着核心地位。此处我们讨论的是在应用标题上实现类似于TabHost的各个Tab之间移动时的动画效果。TabHost是Android提供的一种布局组件,用于管理多个Tab页面,而将动画...
3. `TranslateAnimation`(过时):虽然在新的Android版本中不推荐使用,但TranslateAnimation仍可用于简单的平移动画。不过,它不支持硬件加速,性能上可能不如属性动画。 4. 自定义动画:如果以上内置动画不能...
例如,可以使用TranslateAnimation移动一个按钮,使用AlphaAnimation改变其透明度,或者使用ScaleAnimation缩放视图。 2. **属性动画(Property Animation)**:自Android 3.0(API级别11)引入,属性动画允许...
它允许开发者指定一个物体在X轴和Y轴上的起始位置和结束位置,从而在一段时间内产生平滑的移动动画。在Android应用中,这通常用于增加用户界面的交互性和视觉吸引力,比如在菜单项被点击时,菜单项可以滑动进入或...
下面我们将深入探讨如何在Android中实现一个扇形菜单Demo,基于提供的"TranslateAnimation"标签,我们可以推测这个实现主要依赖于Android的平移动画。 首先,我们需要创建一个自定义的View类来承载扇形菜单。这个...