我们大家都知道android平台提供了两种动画,一种是Tween动画,即通过对场景里的对象不断进行图像变换(平移,缩放,旋转) 来产生动画效果; 第二种就是 Frame 动画,即顺序播放事先做好的图像,和电影类似。
首先来分析 Tween动画,Tween动画通过对View 的内容完成一系列的的图形变换(包括平移、缩放、旋转、改变透明度)来实现动画效果。它主要包括以下四种动画效果:
Alpha: 渐变透明度动画效果 以前也写过一个例子 -->
http://byandby.iteye.com/blog/828799
Scale: 渐变尺寸伸缩动画效果。
Translate: 画面转移位置移动动画效果
Rotate: 画面转移旋转动画效果。
具体来讲,Tween动画是通过预先定义一组指令,这些指令指定了图形变换的类型、触发时间、持续时间。程序沿着时间线执行这些指令就可以实现动画效果。因此我们首先需要定义Animation动画对象,然后设置该动画的一些属性,最后通过 startAnimation 方法来开始动画。网上的大多数例子都是以 xml文件的形式配置的 我们这里用代码实现一下。其实可能也不难就是参数有些多。下面就介绍 各个动画的属性:
AlphaAnimation(float fromAlpha, float toAlpha)
功能:构建一个渐变透明度动画
参数: fromAlpha 为动画起始透明度;toAlpha为动画结束透明度(0.0表示完全透明,1.0表示完全不透明)。
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
功能:构建一个渐变尺寸伸缩动画。
参数:fromX、toX 分别是起始和结束时X坐标上的伸缩尺寸。fromY、toY分别是起始和结束时 Y坐标上的伸缩尺寸。pivotXValue、pivotYValue 分别为动画相对于物件的X、Y坐标的开始位置 pivotYType pivotXType 分别为x、y的伸缩模式。
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
功能:构建一个画面转换位置移动动画。
参数:fromXDelta、fromXDelta分别为起始坐标; toXDelta、toYDelta分别为结束坐标。
RotateAnimation(float fromDegress, float toDegress, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
功能:构建一个旋转动画。
参数:fromDegress 为开始的角度; toDegress 为结束的角度。 pivotXType、pivotYType分别为x、y 的伸缩模式。pivotXValue、pivotYValue 分别为伸缩动画相对于x、y的坐标的开始位置。
setDuration(long durationMillis)
功能:设置动画显示的时间 以毫秒为单位。
startAnimation(Animation animation)
功能:开始播放动画
参数:animation为要播放的动画。
我们下边这个例子 通过 手机的上下左右 来实现这四种动画。
Activity01
package xiaohang.zhimeng;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
public class Activity01 extends Activity {
private GameView mGameView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGameView = new GameView(this);
setContentView(mGameView);
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (mGameView == null) {
return false;
}
mGameView.onKeyUp(keyCode, event);
return true;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mGameView == null) {
return false;
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
GameView
package xiaohang.zhimeng;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.view.KeyEvent;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
public class GameView extends View{
//定义Alpha动画
private Animation mAnimationAlpha = null;
//定义Scale动画
private Animation mAnimationScale = null;
//定义Translate动画
private Animation mAnimationTranslate = null;
//定义Rotate动画
private Animation mAnimationRotate = null;
//定义Bitmap对象
Bitmap mBitQQ = null;
public GameView(Context context) {
super(context);
//装载资源
mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.xh)).getBitmap();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制图片
canvas.drawBitmap(mBitQQ, 0, 0, null);
}
public boolean onKeyUp(int keyCode, KeyEvent event){
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
//创建Alpha动画
mAnimationAlpha = new AlphaAnimation(0.1f,1.0f);
//设置动画时间
mAnimationAlpha.setDuration(3000);
//开始播放动画
this.startAnimation(mAnimationAlpha);
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
//创建Scal动画
mAnimationScale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f
);
//设置动画的时间
mAnimationScale.setDuration(1000);
//开始播放动画
this.startAnimation(mAnimationScale);
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
//创建Translate动画
mAnimationTranslate = new TranslateAnimation(10,100,10, 100);
//设置动画的时间
mAnimationTranslate.setDuration(1000);
//开始播放动画
this.startAnimation(mAnimationTranslate);
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
//创建Rotate动画
mAnimationRotate = new RotateAnimation(0.0f, +360,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
//设置动画的时间
mAnimationRotate.setDuration(1000);
//开始播放动画
this.startAnimation(mAnimationRotate);
break;
}
return true;
}
}
这样的效果也可以通过配置xml文件实现大家可以去看我以前推荐过一些资料 里边有更多关于Animation动画的内容。
http://byandby.iteye.com/blog/827527
源码可以去附件下载

- 大小: 38.6 KB

- 大小: 21.7 KB

- 大小: 19.1 KB

- 大小: 35 KB
分享到:
相关推荐
9. **TweenAnimationSample**:Tween动画是Android中改变视图属性(如大小、位置、透明度等)的动画类型。示例可能会演示如何创建和实现平移、旋转、缩放和透明度变化的动画。 10. **RegeditTable**:此名称可能是...
- **Tween动画**: 改变视图的位置、大小或透明度。 - **Frame动画**: 通过连续显示一系列图像来创建动画效果。 #### 八、OpenGL3D图形的使用 ##### 10.1 使用OpenGL图形接口的程序结构 - **OpenGL ES**: 专为...
内容概要:本文详细介绍了利用Matlab、YALMIP和CPLEX实现微电网两阶段鲁棒优化经济调度的方法。首先,主问题部分通过定义决策变量如机组出力、储能充放电状态等,建立目标函数以最小化总成本,并设置相应的约束条件。接着,子问题部分模拟最恶劣场景,通过引入不确定性和惩罚系数,最大化系统成本,从而找到系统的薄弱环节。两者通过列与约束生成算法(CCG)进行迭代优化,直至达到收敛条件。文中还提供了多个实战避坑指南,如变量维度对齐、CPLEX参数调优以及不确定性集合的选择等。 适合人群:从事电力系统优化研究的专业人士,尤其是对微电网调度感兴趣的工程师和技术研究人员。 使用场景及目标:适用于需要确保微电网在面对极端天气或其他不确定性因素时仍能稳定运行的情况。主要目标是在保障系统可靠性的前提下,降低运营成本,提高经济效益。 其他说明:文章不仅提供了详细的代码实现步骤,还包括了许多实用的经验分享和技巧提示,帮助读者更好地理解和应用两阶段鲁棒优化方法。此外,还强调了在实际应用中应注意的问题,如避免过度保守、合理设定不确定集参数等。
内容概要:本文介绍了H6逆变器拓扑结构及其离网和并网仿真模型的特点。H6逆变器采用六开关器件设计,支持非单位功率因数负载、功率因数调节、共模电流抑制等功能。文中详细讨论了PR单环控制策略、锁相环(SOGI-PLL)、LC和LCL滤波器的应用,并提供了相关代码示例。此外,文章还探讨了仿真环境设置以及常见调试技巧,验证了H6逆变器在不同负载条件下的优越性能。 适合人群:从事电力电子、逆变器设计与仿真的工程师和技术研究人员。 使用场景及目标:①理解和掌握H6逆变器的工作原理和控制策略;②优化逆变器的设计参数,提高其在离网和并网场景中的性能;③通过仿真验证设计方案的有效性和可靠性。 其他说明:本文提供了丰富的代码片段和调试经验分享,有助于读者快速上手H6逆变器的实际应用。
内容概要:本文详细介绍了松下FP-X系列PLC在空调冷冻泵模拟量控制中的应用,特别是AFPX-TC2模拟量输入模块和AFPX-DA2模拟量输出模块的使用方法。文章涵盖了硬件连接、手动控制程序、自动控制程序以及模式切换逻辑的设计。通过这些模块和程序,可以实现对冷冻泵转速的手动和自动控制,确保系统的稳定性和高效性。文中还提供了详细的代码示例和调试技巧,如PID参数调整、信号量程转换、无扰动模式切换等。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和模拟量控制的人士。 使用场景及目标:适用于需要对空调冷冻泵进行精确控制的工程项目,旨在提高系统的响应速度和稳定性,减少人工干预,提升工作效率。 其他说明:文章不仅提供了理论指导,还包括了许多实用的经验和注意事项,如硬件接线细节、常见问题解决方法等,有助于读者快速掌握并应用于实际项目中。
内容概要:本文详细介绍了如何利用COMSOL软件在光子晶体超表面中实现偏离Gamma点的BICs(连续谱中的束缚态)合并。首先,作者通过设置偏离Gamma点的波矢,调整晶格参数如孔半径和晶格常数,成功实现了BICs的合并。接着,作者分享了多个实用技巧,如正确设置周期性边界条件、使用六重旋转对称条件以及优化网格划分方法。此外,文中提供了详细的MATLAB和COMSOL代码片段,帮助读者理解和复现实验结果。最后,作者强调了磁场涡旋对于识别BICs的重要性,并讨论了BICs合并过程中的一些反直觉现象及其背后的物理机制。 适合人群:从事光子晶体超表面研究的科研人员和技术爱好者,尤其是那些希望深入了解BICs合并机制并对COMSOL有一定基础的读者。 使用场景及目标:① 使用COMSOL进行光子晶体超表面的数值模拟;② 实现偏离Gamma点的BICs合并;③ 优化仿真参数以提高Q值和模式稳定性;④ 理解BICs合并的物理机制及其应用前景。 其他说明:本文不仅提供了理论指导,还附带了大量的实际操作步骤和代码示例,使读者能够快速上手并在实践中不断优化自己的模型。同时,作者提醒了一些常见的错误和注意事项,有助于避免不必要的调试时间。
分享一些R包,用于GBD数据库BAPC分析
内容概要:本文档详细介绍了A10 ACOS v4平台上的VRRP-A(高级虚拟路由器冗余协议)配置方法及其工作机制。VRRP-A旨在提高网络的高可用性和冗余度,支持多达八个ACOS设备作为IP互备份,适用于网关(路由)模式及单臂模式部署。文档涵盖了VRRP-A的基本概念、配置流程、主备选举机制、故障切换逻辑、浮动IP管理、配置同步、会话同步以及接口配置等内容。此外,还提供了具体的配置示例和故障切换策略模板的创建方法,以帮助管理员更好地理解和应用VRRP-A。 适合人群:具备一定网络基础知识,尤其是熟悉ACOS平台的网络管理员和工程师。 使用场景及目标:①实现多台ACOS设备之间的冗余备份,确保网络服务的连续性和稳定性;②通过配置浮动IP、主备选举、故障切换策略等,提升网络的高可用性;③利用配置同步和会话同步功能,简化管理和维护工作。 其他说明:本文档不仅提供了详细的配置指南,还通过具体示例展示了各种配置的实际操作步骤,帮助用户快速掌握VRRP-A的配置和优化技巧。此外,文档强调了VRRP-A与传统VRRP的区别,指出两者不可互操作,因此在实际部署中需要注意选择合适的协议。
内容概要:本文详细介绍了如何利用OpenSEES平台建立单柱墩模型,并深入探讨了钢筋与混凝土之间的滑移粘接及其捏缩效应。主要内容涵盖模型初始化、节点定义、边界条件设定、材料和截面定义、单元创建以及基于位移控制的滞回分析。文中提供了完整的建模过程和相关源代码,帮助读者理解并实现这一复杂结构的数值模拟。 适合人群:从事结构工程、土木工程及相关领域的研究人员和技术人员,特别是那些对钢筋混凝土结构的非线性行为感兴趣的学者。 使用场景及目标:适用于桥梁、建筑等基础设施的设计和评估,旨在提高结构在地震等极端荷载下的安全性和耐久性。通过模拟钢筋与混凝土间的粘接滑移现象,优化结构设计,增强抗震能力。 其他说明:文章不仅提供了理论背景,还包括大量实用的代码示例和实践经验分享,有助于读者快速掌握OpenSEES平台的应用技巧。同时,针对可能出现的问题给出了具体的解决方案,如收敛困难时的处理方法等。
黔轻职院团字〔2025〕5号关于开展2025年大学生社区实践计划工作的通知.zip
内容概要:本文详细介绍了基于Matlab/Simulink构建的100kW光伏发电三相并网系统的建模与仿真。系统主要包括100kW光伏模块及其MPPT控制、两级式并网逆变器(boost电路和三相桥式逆变)、复杂的控制策略(坐标变换、锁相环、dq功率控制、解耦控制、电流内环电压外环控制、SPWM调制)以及LC滤波器。文中不仅提供了详细的理论背景和技术实现方法,还展示了具体的仿真结果,验证了系统的性能。主要内容涵盖MPPT控制算法、逆变器拓扑结构、控制策略的设计与实现、LC滤波器的作用及效果评估。 适合人群:从事电力电子、新能源发电、控制系统设计的研究人员和工程师,特别是对光伏发电并网系统感兴趣的读者。 使用场景及目标:适用于希望深入了解光伏发电并网系统工作原理和控制策略的技术人员。目标是掌握如何利用Matlab/Simulink进行光伏发电系统的建模与仿真,提高系统的发电效率和稳定性。 其他说明:文章强调了各个组件之间的协同工作对于系统整体性能的影响,并提供了大量实用的代码片段和调试技巧,有助于读者更好地理解和应用所学知识。
内容概要:本文详细介绍了电导增量法(INC)在光伏发电系统中的最大功率点跟踪(MPPT)算法。首先解释了INC算法的核心逻辑,即通过电导变化量判断爬山方向,并讨论了关键参数如阈值、步长的选择及其对系统稳定性的影响。接着探讨了PWM调制的具体实现方式,强调了V_pv_max的实时获取重要性和自适应步长策略的应用。此外,还分享了一些实用的仿真技巧,如加入噪声处理、动态调整I-V曲线以及使用卡尔曼滤波提高跟踪精度。最后,通过实验数据验证了改进后的INC算法在不同光照条件下的优越性能。 适合人群:从事光伏系统研究与开发的技术人员,尤其是对MPPT算法感兴趣的工程师。 使用场景及目标:适用于需要深入了解和优化光伏系统MPPT算法的研究和开发工作,旨在提升光伏系统的能量转换效率。 其他说明:文中提供了大量代码片段和实践经验,帮助读者更好地理解和应用电导增量法。同时提醒读者关注一些常见的陷阱和技术细节,确保仿真的准确性和可靠性。
内容概要:本文详细介绍了裂缝检测中的数据标注方法,涵盖了目标检测和语义分割两大主要技术。对于目标检测部分,重点讲解了YOLO算法的数据标注流程,包括工具选择、标注操作以及保存格式。而对于语义分割,则深入探讨了像素级标注的具体步骤,涉及多边形绘制、掩码图像生成及其优化处理。此外,还分享了一些实战经验和技巧,如如何应对复杂裂缝形态、提高标注精度的方法等。 适合人群:从事计算机视觉领域的研究人员和技术人员,尤其是专注于物体检测和图像分割方向的专业人士。 使用场景及目标:①帮助开发者掌握裂缝检测数据标注的基本技能;②提供实用的操作指南,解决实际工作中遇到的各种难题;③为构建高效准确的裂缝检测模型奠定坚实的数据基础。 其他说明:文中不仅包含了理论知识,还附带了许多具体的代码实例,有助于读者更好地理解和应用相关技术。
内容概要:本文详细介绍了半车悬架主动控制系统中MPC(模型预测控制)的应用及其调参技巧。首先解释了MPC的基本概念,即通过优化未来一段时间内的性能指标来确定当前时刻的最佳控制输入。接着展示了具体的实现步骤,包括建立状态空间模型、定义性能指标函数和采用优化算法进行求解。文中特别强调了参数调优的经验,如预测时域和控制时域的选择、权重矩阵的设计以及约束条件的设置。此外,作者还分享了一些调试细节,例如QP求解器的选项设置和作动器延迟补偿的方法。最终的效果表明,MPC能够显著提高乘坐舒适性和操控稳定性。 适合人群:从事车辆工程、自动化控制领域的研究人员和技术人员,尤其是对悬架系统和MPC感兴趣的读者。 使用场景及目标:适用于需要提升汽车行驶品质的研究项目或产品开发,旨在通过先进的控制算法改善车辆的动态性能。 其他说明:文章提供了丰富的代码片段和实践经验,有助于读者更好地理解和应用MPC技术。同时提醒读者注意参数之间的相互影响,确保系统稳定可靠地运行。
内容概要:本文详细介绍了利用Simulink模型进行高频注入以实现电机电角度精确观测的方法和技术细节。首先,通过在d轴注入特定频率的正弦波电压信号,使高频信号与转子位置产生相互作用,从而携带角度信息。其次,采用低通和带通滤波器组合对信号进行处理,分别去除高频成分并提取有用的调制信号。最后,通过锁相环结构解调相位差,得到最终的角度估计。文中还讨论了不同频率选择的影响以及启动阶段的扫频注入优化方法,并分享了一些实际应用中的经验和注意事项。 适合人群:从事电机控制系统研究与开发的专业技术人员,特别是对无位置传感器控制感兴趣的工程师。 使用场景及目标:适用于需要提高电机控制精度的应用场合,特别是在低速条件下无法使用传统位置传感器的情况下。目标是通过高频注入技术实现对电机转子位置的高精度测量,进而提升整个系统的性能。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为示例,帮助读者更好地理解和实现相关算法。同时强调了实际工程实践中可能遇到的问题及其解决方案,如信噪比优化、硬件干扰排除等。
1、文件说明: Centos8操作系统texlive-csquotes-7:20180414-23.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf texlive-csquotes-7:20180414-23.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文详细介绍了风光储并网协同运行模型中的关键技术——双闭环控制策略和单极调制方法。双闭环控制策略由电流内环和电压外环构成,分别用于快速跟踪电流指令和维持输出电压稳定,确保并网电能质量。单极调制作为一种PWM技术,能够降低开关损耗,提高系统效率。文中还提供了具体的MATLAB代码示例和Simulink建模步骤,展示了如何在仿真环境中实现和优化这些控制策略。 适合人群:对风光储并网系统感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解风光储并网系统控制机制的研究者,旨在帮助他们掌握双闭环控制和单极调制的具体实现方法,从而应用于实际项目中,提高系统的稳定性和效率。 其他说明:文章不仅提供了理论解释,还包括了详细的代码示例和仿真指导,使读者能够在实践中加深理解。此外,文中还分享了一些实用的调试技巧和注意事项,如避免过冲、设置死区时间和选择合适的仿真求解器等。
内容概要:本文详细介绍了基于S7-200 Smart PLC的速度与频率同步控制程序,主要用于卷板材生产线和造纸设备。程序通过设置速度同步地址vw10作为基准,利用频率调整系数factor[i]实现1-15回路的频率同步。此外,还支持主从单机微调功能,确保各回路能够精确同步。文中提供了具体的代码示例,解释了如何通过简单逻辑实现多机同步,并强调了微调和异常检测的重要性。对于16-30回路,考虑到设备布局和负载差异,提出了相应的优化建议,如地址映射调整和滤波算法的应用。 适合人群:从事自动化控制系统开发的技术人员,尤其是熟悉PLC编程和变频器应用的专业人士。 使用场景及目标:①帮助技术人员理解和掌握S7-200 Smart PLC在卷板材生产线和造纸设备中的速度与频率同步控制方法;②提供实用的代码示例和技术细节,便于快速部署和调试;③提高生产线的稳定性和效率,降低故障发生率。 其他说明:本文不仅涵盖了基本的同步控制逻辑,还包括了许多实际应用中的经验和技巧,如微调处理、异常检测和滤波算法等,有助于解决实际工程中的常见问题。
内容概要:本文详细介绍了将EBSD(电子背散射衍射)数据转换为有限元inp格式文件的方法和技术细节。首先解释了EBSD数据的重要性和有限元分析的作用,随后通过Python编程展示了完整的转换流程,包括数据读取、处理、节点生成、材料方向赋值以及最终生成inp文件。文中不仅提供了具体的代码示例,还讨论了常见的挑战及其解决办法,如坐标对齐、网格拓扑构建、材料方向赋值等。此外,作者分享了一些实践经验,强调了注意事项,如确保单位一致性和格式准确性。 适合人群:从事材料科学研究的专业人士,尤其是那些需要将微观材料特性应用于宏观有限元模拟的工程师和科学家。 使用场景及目标:适用于需要将EBSD数据用于有限元分析的研究项目,旨在提高材料模拟的精度和可靠性。主要目标是帮助研究人员掌握如何利用编程手段高效地将EBSD数据转化为可用于有限元分析的inp文件。 其他说明:文中提到的技术和方法不仅可以应用于二维数据,也可以扩展到三维情况,尽管后者涉及更多复杂性。同时,文中提供的代码片段可以直接用于实际工作中,但可能需要根据具体情况调整参数设置。
matlab-PSO调谐模糊逻辑基于电源系统的智能负载频率控制