自Android 3.0以上的版本,SDK新增了一个android.animation包,里面的类都是跟动画效果实现相关的,通过Honeycomb API,能够实现非常复杂的动画效果。但如果开发者想在3.0以下的版本中也能使用到这套API,那么Nine Old Androids就会是你最好的选择,该API和Honeycomb API完全一样,只是改变了你使用com.nineoldandroids.XXX的入口。
该项目包含两个工程,一个是Library,即为动画效果的实现库,另一个则是Sample,是对如何使用该API的演示。开发者可以直接登陆Google Play下载安装Nine Old Androids Sample,查看演示。
github地址:https://github.com/JakeWharton/NineOldAndroids
官网:http://nineoldandroids.com/
这里借助这个工具包,可以实现游戏吃了什么后,金币增加的上升消失的提示动画,代码非常简单:
(1)主界面:
package com.example.nineoldandroidstest; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.LinearInterpolator; import android.widget.Button; import android.widget.TextView; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.Animator.AnimatorListener; import com.nineoldandroids.animation.AnimatorSet; import com.nineoldandroids.animation.ObjectAnimator; public class MainActivity extends Activity { private TextView textView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.test_tv); Button button = (Button) findViewById(R.id.test_btn); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { dismissAnimation(textView); } }); } /** * 使用示例http://nineoldandroids.com/: * AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(myView, "rotationX", 0, 360), ObjectAnimator.ofFloat(myView, "rotationY", 0, 180), ObjectAnimator.ofFloat(myView, "rotation", 0, -90), ObjectAnimator.ofFloat(myView, "translationX", 0, 90), ObjectAnimator.ofFloat(myView, "translationY", 0, 90), ObjectAnimator.ofFloat(myView, "scaleX", 1, 1.5f), ObjectAnimator.ofFloat(myView, "scaleY", 1, 0.5f), ObjectAnimator.ofFloat(myView, "alpha", 1, 0.25f, 1) ); set.setDuration(5 * 1000).start(); * */ /** * 消失动画 * @param v */ @SuppressLint("NewApi") public void dismissAnimation(View v){ AnimatorSet mHeartAnimator; ObjectAnimator localObjectAnimator1 = ObjectAnimator.ofFloat(v, "translationY", new float[] { -200.0F }); ObjectAnimator localObjectAnimator2 = ObjectAnimator.ofFloat(v, "alpha", new float[] { 0.0F }); mHeartAnimator = new AnimatorSet(); mHeartAnimator.playTogether(new Animator[] { localObjectAnimator1, localObjectAnimator2 }); mHeartAnimator.setDuration(270L); mHeartAnimator.setInterpolator(new LinearInterpolator()); mHeartAnimator.start(); mHeartAnimator.addListener(new AnimatorListener() { public void onAnimationStart(Animator arg0) { // TODO Auto-generated method stub } public void onAnimationRepeat(Animator arg0) { // TODO Auto-generated method stub } public void onAnimationEnd(Animator arg0) { textView.clearAnimation(); } public void onAnimationCancel(Animator arg0) { // TODO Auto-generated method stub } }); } }
(2)布局activity_main.xml
<RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/test_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="@string/hello_world" android:background="@drawable/shape_text" /> <Button android:id="@+id/test_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp" android:layout_centerHorizontal="true" android:text="测试动画" /> </RelativeLayout>
实现效果如下:
点击按钮文字上升消失
可以使用该包,实现如path的弧形菜单效果:
Android动画进阶—使用开源动画库nineoldandroids
相关推荐
SWF是Adobe Flash的文件格式,通常用于展示交互式内容,包括动画和小游戏。要查看和理解这个文件,你需要一个支持SWF播放的浏览器插件或者使用独立的Flash Player。 总之,Flex布局动画主要依赖于CSS的`transition`...
总的来说,实现“自定义View实现音量亮度等增减效果”涉及到Android UI编程的多个方面,包括事件处理、动画制作、系统接口的使用以及性能优化等。通过掌握这些知识点,开发者可以创造出更加个性化的用户界面,提升...
5. 数据可视化动画:动态展示数据变化,如图表的增减、折线图的绘制过程。 在实际应用中,我们还需要考虑性能优化。过度频繁的动画可能会对设备性能造成影响,因此我们需要合理地使用缓动函数来控制动画的速度变化...
首先,渐变发光加载动画是一种视觉效果,它通过色彩的逐渐变化以及亮度的增减,营造出一种动感十足的视觉体验,通常用于数据加载、页面切换或网络请求等待的过程中,让用户知道程序正在进行后台操作。在微信小程序中...
3. **边框动画**:利用`border-width`、`border-radius`和`transition`属性,可以实现边框在hover时的动态变化,如边框颜色的渐变或边框宽度的增减。 4. **旋转与缩放**:`transform`属性允许按钮在鼠标悬停时进行...
- **数量增减**:商品数量的增加或减少可以通过数字计数器的动画展示,如数字飞入飞出或渐变。 - **购物车更新**:购物车总金额和商品数量的变化也需要动态显示,比如总价标签的数字跳动,购物车图标上的小红点...
脉冲雷达动画是一种常用于展示地理位置、探测范围或者数据更新的动画效果,而动态增减元素则涉及数组操作和UI刷新,这两者结合可以为用户呈现一种生动且实时的数据展示方式。 首先,我们需要理解Swift中的Core ...
"Android-ShoppingCart"项目是一个实例,它专注于实现购物车页面及其点击动画效果,这在提升用户体验方面至关重要。在这个项目中,开发者将学习到如何构建一个功能完备且具有视觉吸引力的购物车界面。 首先,我们要...
本教程将详细讲解如何使用jQuery实现动态增减选项卡的功能,这种功能常见于各种Web应用中,如浏览器界面或者自定义用户面板。 首先,我们需要创建HTML结构来承载选项卡。每个选项卡由一个标题(通常为链接)和对应...
10. **交互式图表**:利用交互式图表插件,如Power Query和Power Pivot,可以创建动态数据模型,用户可以直接在图表上进行筛选、排序和聚合操作,达到类似动画的互动效果。 总的来说,虽然Excel不是专业的动画制作...
### 超酷动画效果的PPT:精美的模板与高效传达 #### 一、引言 在现代商业环境中,有效的沟通方式对于个人和企业来说至关重要。PowerPoint(PPT)作为一款广受欢迎的演示工具,被广泛应用于各种场合,如会议、培训...
同时,`transition`属性可以添加平滑过渡效果,当风车的旋转状态发生变化时,如鼠标悬停,旋转速度的增减等。 此外,为了营造月夜星空的背景,我们可以利用CSS3的背景属性,设置星空背景图或使用渐变色来模拟星空...
5. **数学运算**:C语言提供了丰富的数学函数库,如`math.h`,我们可以用其中的函数进行加减乘除、指数、对数等计算,以模拟波浪的增减变化。 6. **循环和条件判断**:通过循环结构遍历波浪数据,进行逐点计算。...
在网页设计中,"带增减按钮的输入框"是一种...在实际项目中,你可能需要根据具体需求进行调整,比如添加动画效果、自定义样式或者处理其他交互逻辑。通过这种方式,你可以为用户提供更友好的界面,提升他们的使用体验。
这些效果利用JavaScript库,如jQuery或自定义的动画函数来实现,旨在提升用户体验,使焦点图更具吸引力。 为了实现以上功能,开发者可能采用了HTML5的`<figure>`和`<figcaption>`标签来结构化图片和其描述,结合CSS...
在本项目中,我们主要探讨如何使用jQuery和CSS3技术来实现一个动态的图片摇摆动画效果,当鼠标悬停在图片上时,图片会呈现出摇摆的效果,为用户界面增添交互性和趣味性。以下是对这个功能的详细解析: 1. **jQuery...
jQuery Spin button 是一款非常实用的前端插件,它主要用于文本框(input[type="text"])中的数值自动增减功能。这款插件利用了JavaScript库jQuery的强大功能,为用户提供了一种直观且易于操作的方式,以便在网页...
这些动画可以是折线图、柱状图或者饼图等形式,通过平滑过渡展示数据的增减。在设计趋势图动画时,要注意保持数据的准确性,同时通过颜色、大小变化等视觉元素强化数据的趋势。例如,使用ECharts、D3.js等数据可视化...
`SPScrollNumLabel`是一个专为iOS设计的Swift库,它提供了一个动态展示点赞数增减的动画效果,使得数字的变化过程更加生动有趣,从而提升用户的交互体验。 `SPScrollNumLabel`的核心功能在于其能够平滑地滚动显示...