- 浏览: 255986 次
- 性别:
- 来自: 上海
-
最新评论
-
aduovip:
博主, 这样做,列表还能通过下拉刷新,上拉加载 实现分页吗
ListView的横向滚动(带表头与固定列) -
aduovip:
赞,谢谢博主分享!
ListView的横向滚动(带表头与固定列) -
eddya:
超赞,谢谢分享!
ListView的横向滚动(带表头与固定列) -
a5601564:
public void jsonToObj(St ...
Java获取服务端Json数据 -
cyt1030:
如果在表格的头部 加上添加一个按钮 在点击按钮时动态添加的vi ...
ListView的横向滚动(带表头与固定列)
Android的实现分为两种Tween与Frame动画 Tween动画的实现是通过图片在Canvas变化的轨迹而成,而Frame动画是由一幅幅图片变换而成
1. Tween有以下几种运行轨迹
a. Alpha:透明度的变化;
b. Scale:缩放
c. Translate:平移
d. Rotate:旋转
Tween通过Java代码实现:
public class TweenView extends View { Context context; Animation animation; Bitmap bitmap; long durationTime = 2000; public TweenView(Context context) { super(context); this.context = context; bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.gallery_photo_5); setFocusable(true); } @Overrideprotected void onDraw(Canvas canvas) { canvas.drawBitmap(bitmap, 100, 100, null); } // 透明度的变化 private void alpha() { animation = new AlphaAnimation(0.1f, 1); animation.setDuration(durationTime); this.startAnimation(animation); } // 缩放 private void scale() { //在scale中,该处是相对绝对位置的,绝对位置是(0,0),好像设置相对parent没有什么效果 animation = new ScaleAnimation(1, 0.4f, 1, 0.5f, getWidth() / 2, 0); animation.setDuration(durationTime); this.startAnimation(animation); } // 平移 private void tran() { // Animation.RELATIVE_TO_PARENT,相对于父容器 // Animation.RELATIVE_TO_SELF,相对于自己 // Animation.ABSOLUTE,绝对位置 animation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, getWidth(), Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, getHeight()); animation.setInterpolator(new AccelerateInterpolator()); animation.setDuration(durationTime); this.startAnimation(animation); } // 旋转 private void rotate() { //前面两个参数设置从什么角度旋转到什么角度,从小角度到大角度时,顺时针旋转 animation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f); animation.setDuration(durationTime); this.startAnimation(animation); } //在Activity中调用 public void onKeyEvent(KeyEvent ev) { switch (ev.getKeyCode()) { case KeyEvent.KEYCODE_DPAD_UP: alpha(); break; case KeyEvent.KEYCODE_DPAD_DOWN: scale(); break; case KeyEvent.KEYCODE_DPAD_LEFT: tran(); break; case KeyEvent.KEYCODE_DPAD_RIGHT: rotate(); break; } } }
通过xml进行实现:
在res/anim下建立需要的xml文件
如:缩放
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <scale android:interpolator="@android:anim/decelerate_interpolator" android:duration="5000" android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:toXScale="0" android:toYScale="0" /> </set>
在代码中进行这个加载(在给xml取名字的时候要注意,不要取的名字和android系统中的有些名字一致,如果这样,在代码中进行引用的时候,是找不到的,它不会在R中生成对应的资源引用ID的):
AnimationUtils.loadAnimation(context, R.anim.sc_small);
2. Frame动画(属于帧动画,即把多张图片进行相同时间的变换得到的动画)
public class FrameView extends View { AnimationDrawable animationDrawable; Context context; Drawable bitDrawable; public FrameView(Context context) { super(context); this.context = context; animationDrawable = new AnimationDrawable(); setFocusable(true); for(int i = 1 ; i <= 15; i++) { //查找资源文件的ID int id = context.getResources().getIdentifier("a" + i, "drawable", context.getPackageName()); bitDrawable = context.getResources().getDrawable(id); //将资源文件的Drawable添加到Frame里 animationDrawable.addFrame(bitDrawable, 500); } //是否只运行一次 animationDrawable.setOneShot(false); //加入到背景中 this.setBackgroundDrawable(animationDrawable); /** //以下是从xml中加载,对应的xml在res/anim/animation_list.xml animationDrawable = (AnimationDrawable) context.getResources().getDrawable(R.anim.animation_list); animationDrawable.setOneShot(false); this.setBackgroundDrawable(animationDrawable); **/ } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); //让视图获得焦点时,启动,默认情况下是不会启动的 animationDrawable.start(); } }
对应的XML部分的XML代码(该图片放在res/drawable下,该xml文件放在res/anim下):
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/a1" android:duration="500"/> <item android:drawable="@drawable/a2" android:duration="500"/> <item android:drawable="@drawable/a3" android:duration="500"/> <item android:drawable="@drawable/a4" android:duration="500"/> <item android:drawable="@drawable/a5" android:duration="500"/> <item android:drawable="@drawable/a6" android:duration="500"/> <item android:drawable="@drawable/a7" android:duration="500"/> <item android:drawable="@drawable/a8" android:duration="500"/> <item android:drawable="@drawable/a9" android:duration="500"/> <item android:drawable="@drawable/a10" android:duration="500"/> <item android:drawable="@drawable/a11" android:duration="500"/> <item android:drawable="@drawable/a12" android:duration="500"/> <item android:drawable="@drawable/a13" android:duration="500"/> <item android:drawable="@drawable/a14" android:duration="500"/> <item android:drawable="@drawable/a15" android:duration="500"/> </animation-list>
发表评论
-
Retrofit反射修改baseUrl
2020-06-23 14:32 751背景:Android开发时,需要两个平台切换,项目中网络请 ... -
Intent
2014-04-08 00:08 0Intent 小记 1.在自己的应用程序中,利用第三方应用 ... -
Android 解压中文乱码
2014-03-21 12:24 4208背景:在java自带的ZipEntry解压含有中文名名文件 ... -
DatePicker月份字体大小,月份宽度,隐藏月份
2014-01-06 09:33 9337背景:DatePicker中的字体大了,或想隐藏月份,或想 ... -
android边栏菜单<上下左右四个方向>
2013-12-31 16:06 4034背景:项目中应用到边菜单栏,开源项目SlidingMenu ... -
图片热区点击之二(边界反弹,缩放,移动)
2013-12-31 14:51 4537背景:对图片的部分区域进行点击,响应相应的事件(可对图片进 ... -
用fragment 时出错
2013-06-06 17:46 01.在用support-v13时出错 java.lang. ... -
android 图片区域点击(图片热区)
2013-06-06 16:55 17970背景:在一张图片中,有时希望点击不同的区域时,有不同的表现 ... -
真机在Eclipse中File Explore无法显示
2013-06-03 09:47 2464背景:手机刷ROM后,连接Eclipse发现以前可以看见的F ... -
ListView的横向滚动(带表头与固定列)
2013-05-20 22:02 32788问题背景:在做图表展示的时候,ListView可以上下左右 ... -
事件的传递
2012-12-21 08:51 01、onInterceptTouchEvent()是用于 ... -
EditText多行文本自动换行
2012-07-25 23:05 32874背景:有的地方需要用到多行的文本输入框,但EditText在默 ... -
is not valid; is your activity running?
2012-06-21 17:02 0是由于有activity时依附于另一个activity的 ... -
申请android google map API key
2012-06-12 14:09 01.首先找到debug keystore位置: ... -
eclipse中导出sqlite时出错
2012-06-12 13:52 1383在Eclipse中导出sqlite时出错:Failed to ... -
读取word文件,字体,颜色
2012-05-22 22:13 8046在Android读取Word文件时,在网上查看时可以用tm-e ... -
android应用添加三方jar包出错
2012-05-08 00:01 1878场景:在进行添加三方jar包后,布署运行时出现ClassNot ... -
kill当前进程
2012-03-31 12:06 0android.os.Process.killPro ... -
Tabhost与popupwindow
2012-02-26 14:26 3519软件应用中,常看到一种效果是在点击更多时,弹出一更多的弹出框, ... -
Intent中的Flags
2012-01-04 17:26 0Activity有四种加载模式:standard(默认) ...
相关推荐
本篇文章将深入探讨如何通过XML在Android中实现Tween动画。 首先,让我们了解Tween动画的基本原理。Tween动画基于帧动画,它通过在指定时间内改变对象的属性(如位置、大小、旋转角度或透明度)来创建平滑的过渡...
在"用tween.js技术实现的打开盒子的动画"项目中,我们将深入探讨这两个库如何协同工作,以实现逼真的动画效果。 首先,`tween.js`提供了简单易用的API,用于创建和管理动画序列。通过定义物体的起始和结束状态,`...
Android 平台提供了两类...本例子主要实现了Tweene动画,实现了页面等待、开门、元素旋转平移缩放渐变等功能,并且使用了在Activity界面直接操作动画、重写View处理动画、利用XML处理动画等技术,是非常不错的资源。
在编程中,Tween动画主要通过改变对象的透明度、位置、大小、颜色等属性来实现动态效果。这种技术的核心在于计算和插值两个关键帧之间的中间状态,使得变化过程自然且平滑。 Tween动画有多种实现方式,包括使用编程...
在本示例中,“Tween动画的旋转缩放透明度和平移 demo”着重展示了如何通过Tween动画实现对象的旋转、缩放、透明度变化和移动效果。 首先,Tween动画的旋转功能允许我们以平滑的方式改变对象的角度。这通常通过设置...
Tween动画,全称为“Tween动画效果”,主要用于实现对象在屏幕上的平移、旋转、缩放以及透明度变化等效果,是Android SDK提供的一种基本的动画类型。 在Android中,Tween动画主要通过`Animation`类的子类来实现,...
在Android游戏开发中,Tween动画是一种非常常见的动画形式,它主要用于实现对象的平滑移动、缩放、旋转等效果。Tween动画,源自于图形设计领域,意为“时间插值”,在Android中,它是通过`android.animation....
在本文中,我们将深入探讨如何使用ArcGIS JavaScript API(JS API)与Tween.js库来创建图层闪烁动画效果。这是一个非常实用的技术,特别是在地理信息系统(GIS)应用中,可以吸引用户的注意力或者突出显示特定的地理...
本篇文章将深入探讨Tween补间动画的工作原理、实现方式以及如何在实际项目中应用。 一、Tween补间动画简介 Tween动画,又称补间动画,源自传统动画术语,表示在两个关键帧之间进行平滑过渡的过程。在Android中,...
总的来说,Android Tween动画的源码解析涉及到了动画的基本操作,如透明度、缩放、平移和旋转的计算与应用,以及如何通过XML或代码创建和控制动画。理解和掌握这些知识对于优化用户界面和提升应用程序的动态性能至关...
在Android中,TweenAnimation是基于帧的动画,通过在一定时间内连续更改View的属性来实现动画效果。它分为两种类型:AlphaAnimation(透明度动画)和ScaleAnimation(缩放动画),TranslateAnimation(平移动画)...
这个Tween动画由两个scale和一个rotate元素组成,第一个scale让对象放大,第二个scale和rotate则让对象缩小并旋转,整个过程通过设置不同的interpolator(插值器)和duration(持续时间)实现平滑过渡。 其次,...
本篇将深入探讨如何通过硬编码方式实现Tween动画,并通过源码分析增强理解。 一、Tween动画基本概念 Tween动画基于帧动画,它在两个关键帧之间进行插值计算,以创建平滑的过渡效果。这种动画适用于简单的视图属性...
Tween动画还可以与ValueAnimator配合使用,ValueAnimator允许你在动画过程中更新自定义的属性。这在处理自定义View或者需要在动画过程中更新其他状态的场景下非常有用。通过`ObjectAnimator.ofFloat()`或`...
这个“tween-engine-demo.jar”文件很可能是一个Tween动画引擎的示例库,它包含了实现Tween动画所需的各种类和方法。开发者可以导入这个库,然后根据需求创建和控制动画。"data"可能包含了一些配置文件或者资源,...
Tween.js则是一款轻量级的库,适用于简单的动画需求,它提供了基本的缓动函数和链式调用接口,便于开发者快速实现动画效果。 在Unity3D游戏引擎中,Tween系统被称为“LeanTween”或“DOTween”。这些库允许开发者...
Tween动画,也称为平移动画,是Android系统提供的一种基础动画类型,用于实现对象在屏幕上的位置、大小、透明度等属性的平滑过渡。在本篇中,我们将深入探讨如何在Android环境中实现Tween动画。 首先,Tween动画的...
本文将深入探讨如何将Tween动画与Frame动画相结合,以实现更丰富的动画效果。通过这两种动画类型的组合使用,可以制作出既有趣又实用的动画场景。 #### 二、基本概念 ##### 1. Tween动画 Tween动画(即“时间扭曲...
Tween动画是Android中最基础的动画形式,它通过改变对象的透明度、大小、位置或旋转等属性来实现平滑的过渡效果。Tween动画通过`Animation`类及其子类如`TranslateAnimation`、`ScaleAnimation`、`RotateAnimation`...
二、Tween动画实现 1. 创建动画资源文件:在res/anim目录下创建XML文件,例如translate_anim.xml,定义动画的起始和结束属性,如: ```xml android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta...