动画集内包含自定义的一个动画,和一个缩放动画。
这个是页面
package com.nico;
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;
public class AnimationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView img = (ImageView) findViewById(R.id.img);
AnimationSet ani = new AnimationSet(false);
ani.addAnimation(new MoveAnimation());
ScaleAnimation scale = new ScaleAnimation(1.5f, 1.0f, 1.5f, 1.0f);
scale.setDuration(5000);
scale.setFillAfter(true);
ani.addAnimation(scale);
ani.setDuration(5000);
ani.setFillAfter(true);
// ani.start();
img.startAnimation(ani);
ani.start();
}
}
这个是自定义动画:
package com.nico;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;
public class MoveAnimation extends Animation {
private int halfWidth;
private int halfHeight;
private Camera camera;
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
setDuration(5000);
setFillAfter(true);
halfWidth = width / 2;
halfHeight = height / 2;
setInterpolator(new LinearInterpolator());
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
camera = new Camera();
camera.save();
final Matrix matrix = t.getMatrix();
System.out.println("------------------->" + interpolatedTime);
camera.translate((100.0f * interpolatedTime) ,
(150.0f * interpolatedTime - 150) , 0.0f);
camera.rotateY(45 * (interpolatedTime));
camera.getMatrix(matrix);
// matrix.preScale(interpolatedTime, interpolatedTime);
// matrix.preRotate(interpolatedTime * 360);
matrix.preTranslate(-halfWidth, -halfHeight);
matrix.postTranslate(halfWidth, halfHeight);
camera.restore();
}
}
分享到:
相关推荐
2. **自定义动画**:创建一个自定义的动画类,比如旋转动画,然后在Dialog显示时启动,隐藏时停止。 3. **使用库**:Android社区有许多优秀的开源库提供了各种加载动画,如`CircleProgress`、`MaterialLoadingBar`...
在Android开发中,动画是提升用户体验的关键因素之一。自定义补间动画是Android提供的一种强大的动画...通过`MyAnimation`这样的示例,开发者可以逐步掌握自定义动画的技巧,从而在项目中创造出各种独特的动画效果。
`setPageTransformer`的第一个参数`true`表示动画应该作用于整个页面,而不是仅限于内容区域。第二个参数是我们自定义的Transformer实例。 除了自定义Transformer外,我们还可以结合其他动画库,如NineOldAndroids...
在给定的场景中,“QPropertyAnimation,自定义动画,控件背景色字体色变换”是一个具体的示例,展示了如何利用QPropertyAnimation来创建一个简单的应用,该应用能够动态地改变控件的外观。 首先,让我们深入了解...
在Android中,自定义动画主要包括两种类型:属性动画(Property Animation)和视图动画(View Animation)。属性动画是Android 3.0(API Level 11)引入的新特性,它允许开发者对对象的属性进行直接操作,而不仅仅是...
为了正确响应用户的下拉操作,我们需要在PullToRefreshScrollView中覆盖onTouchEvent()方法,判断用户的滑动行为是否触发了下拉刷新,并在适当的时候启动自定义动画。 总结: 通过上述步骤,开发者可以为...
本文将深入探讨如何实现一个自定义动画,特别是让View在放大时保持不失真的技巧。 首先,我们需要了解Android中的两种主要动画类型:Property Animation(属性动画)和View Animation(视图动画)。视图动画在旧版...
创建一个自定义动画效果按钮,我们首先需要继承QPushButton类,然后重写其paintEvent()方法以绘制自定义的按钮样式。同时,我们还需要利用QPropertyAnimation来实现按钮的动画效果。例如,我们可以创建一个缩放动画...
创建自定义动画面板的第一步是定义一个新的类,继承自System.Windows.Controls.Panel。这个新类将包含我们自定义的布局逻辑和动画代码。在C#中,这通常会涉及到重写MeasureOverride和ArrangeOverride方法,以控制子...
自定义动画通常是通过`ObjectAnimator`或者`ValueAnimator`实现的。例如,可以创建一个动画使按钮在被点击时改变颜色或者改变圆角大小。使用`ViewPropertyAnimator`也可以轻松地实现颜色过渡、缩放等动画效果。 -...
在Qt框架中,帧动画(QPropertyAnimation)是一种强大的工具,可以用来实现各种复杂的动画效果。...对于那些想要深入了解Qt动画的读者,所提供的博客文章将是一个很好的资源,其中包含详细的代码示例和解释。
本教程将详细讲解如何在Android Studio环境下创建一个带有动画效果的自定义PopupWindow。 首先,我们需要了解PopupWindow的基本用法。PopupWindow对象可以通过以下方式初始化: ```java PopupWindow popupWindow =...
// 在这里添加自定义动画代码 } ``` 4. 在你的视图控制器中,你可以像使用普通Switch一样实例化并使用这个自定义的Switch。 ```swift let customSwitch = CustomSwitch(frame: CGRect(x: 0, y: 0, width: 50, ...
例如,我们可以针对QDialog的windowOpacity属性创建一个动画,使其从1(完全不透明)渐变到0(完全透明),从而实现淡出效果。 ```cpp QPropertyAnimation *fadeOutAnim = new QPropertyAnimation(this, ...
本教程将基于给定的"C#自定义漂亮按钮"主题,深入讲解如何利用C#和Visual Studio 2010创建一个自定义的按钮控件。我们将主要探讨以下几个方面: 1. **自定义控件基础**: 在.NET Framework中,自定义控件是通过...
对于切换动画,ViewPager本身并不提供直接的动画设置接口,但我们可以利用`PageTransformer`接口来实现自定义动画。`PageTransformer`有一个`transformPage()`方法,该方法会在页面被滚动时调用,我们可以通过这个...
然而,对于更复杂的自定义动画,开发者需要利用`overridePendingTransition()`方法。这个方法允许我们在Activity启动或结束时指定自定义的动画资源。例如,当启动一个新的Activity时,我们可以在`startActivity()`...
该项目可能包含了一个主布局文件(如activity_main.xml),一个动画资源文件(如layout_anim.xml),以及一个主Activity(MainActivity.java)。在Activity中,可以找到设置和启动布局动画的相关代码,通过运行此...
5. **自定义动画**: 创建一个`ValueAnimator`实例,设置颜色变化的起始和结束值,然后添加一个`AnimatorUpdateListener`来更新视图的颜色。`AnimatorSet`可以协调两个动画的执行顺序和时序。 ```java ...
例如,可以添加一个自定义的OnPaint方法来改变CheckBox的绘制样式,或者添加自定义的Click事件处理来实现更复杂的行为。 ```csharp public partial class CheckBoxEx : Control { public CheckBoxEx() { ...