- 浏览: 2211057 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
请先从网上下载nineOldAndroids这个jar包.
import org.iaiai.alpha.core.activity.BaseActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.animation.AccelerateInterpolator; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationSet; import android.view.animation.DecelerateInterpolator; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; import android.widget.TextView; import com.lidroid.xutils.view.annotation.ContentView; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.Animator.AnimatorListener; import com.nineoldandroids.animation.AnimatorSet; import com.nineoldandroids.animation.ObjectAnimator; @ContentView(R.layout.main) public class StartActivity extends BaseActivity { @ViewInject(R.id.moveLayout) private View moveLayout; @ViewInject(R.id.rootLayout) private View rootLayout; @ViewInject(R.id.hiddenLayout) private View hiddenLayout; @ViewInject(R.id.hiddenTextView) private TextView hiddenTextView; private int mActivePointerId,mLastMotionY; @OnClick(R.id.colorLayout) public void onColorLayoutOnClick(View view){ ValueAnimator colorAnim = ObjectAnimator.ofInt(moveLayout, "backgroundColor", /*Blue*/0xff0000ff, /*Red*/0xffff0000); colorAnim.setDuration(3000); colorAnim.setEvaluator(new ArgbEvaluator()); colorAnim.setRepeatCount(ValueAnimator.INFINITE); colorAnim.setRepeatMode(ValueAnimator.REVERSE); colorAnim.start(); } @OnClick(R.id.moveLayoutLayout) public void onMoveLayoutLayoutOnClick(View view){ AnimatorSet animationSet = new AnimatorSet(); ObjectAnimator animator1 = ObjectAnimator.ofFloat(moveLayout, "y", 0, 100); animator1.setInterpolator(new AccelerateInterpolator()); //在动画开始的地方速率改变比较慢,然后开始加速 ObjectAnimator animator2 = ObjectAnimator.ofFloat(moveLayout, "scaleX", 1, 0); ObjectAnimator animator3 = ObjectAnimator.ofFloat(moveLayout, "scaleY", 1, 0); ObjectAnimator animator4 = ObjectAnimator.ofFloat(moveLayout, "y", 100, 0); animator4.setInterpolator(new DecelerateInterpolator()); //在动画开始的地方快然后慢 ObjectAnimator animator5 = ObjectAnimator.ofFloat(moveLayout, "scaleX", 0, 1); ObjectAnimator animator6 = ObjectAnimator.ofFloat(moveLayout, "scaleY", 0, 1); animationSet.playTogether(animator1,animator2,animator3); animationSet.play(animator4).after(animator1); animationSet.play(animator5).after(animator1); animationSet.play(animator6).after(animator1); animationSet.setDuration(500); animationSet.start(); } @OnClick(R.id.flipVerticalLayout) public void onFlipVerticalOnClick(View view){ ObjectAnimator.ofFloat(view, "rotationY", 0.0F, 360.0F).setDuration(500).start(); } @OnClick(R.id.flipHorizontalLayout) public void onFlipHorizontalOnClick(View view){ ObjectAnimator.ofFloat(view, "rotationX", 0.0F, 360.0F).setDuration(500).start(); } @OnClick(R.id.hiddenTextView) public void onHiddenTextViewOnClick(View view){ AnimatorSet animationSet = new AnimatorSet(); ObjectAnimator translationAnimator = ObjectAnimator.ofFloat(hiddenLayout, "translationY", 0.0F, 250F); translationAnimator.setDuration(2000); ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(hiddenLayout, "alpha", 1, 0); alphaAnimator.setDuration(500); animationSet.playTogether(translationAnimator,alphaAnimator); animationSet.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { hiddenTextView.setVisibility(View.GONE); } @Override public void onAnimationCancel(Animator animation) { } }); animationSet.start(); // AnimationSet animationSet = new AnimationSet(true); // // //透明度 // AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); // alphaAnimation.setDuration(1000); // animationSet.addAnimation(alphaAnimation); // // // 放缩 // ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0, 1,0, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f); // scaleAnimation.setDuration(1000); // animationSet.addAnimation(scaleAnimation); // // // 旋转 // RotateAnimation rotateAnimation = new RotateAnimation(0, 180,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f); // rotateAnimation.setDuration(1000); // animationSet.addAnimation(rotateAnimation); // // // 平移 // TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0f, Animation.RELATIVE_TO_PARENT,0, Animation.RELATIVE_TO_PARENT, 0f,Animation.RELATIVE_TO_PARENT, 1.0f); // translateAnimation.setDuration(1000); // animationSet.addAnimation(translateAnimation); // // //以下两个属性设置动画之后显示在停止位置上 // animationSet.setFillEnabled(true); // animationSet.setFillAfter(true); // animationSet.setAnimationListener(new AnimationListener() { // @Override // public void onAnimationStart(Animation animation) { // } // @Override // public void onAnimationRepeat(Animation animation) { // } // @Override // public void onAnimationEnd(Animation animation) { // hiddenTextView.setVisibility(View.GONE); // } // }); // // hiddenLayout.startAnimation(animationSet); } @OnClick(R.id.showTextView) public void onShowTextViewOnClick(View view){ AnimationSet animationSet = new AnimationSet(true); //透明度 AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1); alphaAnimation.setDuration(1000); animationSet.addAnimation(alphaAnimation); // 放缩 ScaleAnimation scaleAnimation = new ScaleAnimation(0, 1, 0,1, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f); scaleAnimation.setDuration(1000); animationSet.addAnimation(scaleAnimation); // 旋转 RotateAnimation rotateAnimation = new RotateAnimation(180, 0,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setDuration(1000); animationSet.addAnimation(rotateAnimation); // 平移 TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0f, Animation.RELATIVE_TO_PARENT,0, Animation.RELATIVE_TO_PARENT, 1.0f,Animation.RELATIVE_TO_PARENT, 0f); translateAnimation.setDuration(1000); animationSet.addAnimation(translateAnimation); //以下两个属性设置动画之后显示在停止位置上 animationSet.setFillEnabled(true); animationSet.setFillAfter(true); animationSet.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { hiddenTextView.setVisibility(View.VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { } }); hiddenLayout.startAnimation(animationSet); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); moveLayout.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent ev) { final int action = ev.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_MOVE: { move(v,ev); break; } case MotionEvent.ACTION_DOWN: { mActivePointerId = ev.getPointerId(0); mLastMotionY = (int) ev.getY(mActivePointerId); break; } case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: mActivePointerId = -1; break; } return true; } }); } private void move(View v, MotionEvent ev){ RelativeLayout.LayoutParams params = (LayoutParams) v.getLayoutParams(); int dy = (int) ev.getY(mActivePointerId) - mLastMotionY; int t = params.topMargin+dy; // /***********这种方式移动会有个问题,当再有其它组件移动时会把原来用此方式移动的所有组件还原到原来的初始位置,也就是用layout没有改变真正的坐标*****************/ // int dy = (int) ev.getY(mActivePointerId) - mLastMotionY; // int l = 0; // int t = v.getTop()+dy; // int r = v.getRight(); // int b = v.getBottom() + dy; // //// v.layout(l, t, r, b); // Log.i("***","l:"+l+"___t:"+t+"___r:"+r+"___b:"+b); //这种移动 // /*****************************/ if(t<0){ params.topMargin = 0; v.setLayoutParams(params); return; } if(t>(rootLayout.getHeight()-v.getHeight())){ params.topMargin = rootLayout.getHeight()-v.getHeight(); v.setLayoutParams(params); return; } params.topMargin = t; v.setLayoutParams(params); } }
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 649本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1122颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 1016从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1194Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1037Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 856前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 948监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 812在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 992最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1356##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1149当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 808setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1538问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 792底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1799点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1393import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2354TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1588一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 891Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 947最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
CTA自动保存项目小工具Cartoon Animator动画软件自动保存项目小工具
《Android Animator动画与Material Design Ripple效果详解》 在Android开发中,动画效果是提升用户体验的重要手段,而Animator作为Android提供的一种强大的动画工具,能够帮助开发者实现丰富的动态效果。本篇文章将...
### SolidWorks Animator 动画制作精解 SolidWorks Animator 是一款强大的插件,集成于 SolidWorks 软件中,专门用于创建动态演示动画。它不仅简化了产品演示的复杂度,而且增强了产品的视觉吸引力,使得设计师能够...
Animator动画的录制与回播,方便快捷,只要往前走的动画就能用此代码完成往后退的动画。
在Unity引擎中,Animator是动画系统的核心组件,用于管理和控制对象的动画状态。Animator控制器是一个复杂的系统,可以处理复杂的动画状态机逻辑,包括过渡、条件触发器和参数控制。在这个场景中,我们看到一个名为...
SketchUp 草图大师动画演示插件中文版,可以做家具拼装动画演示
多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加 多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加 多个关键字请用空格分隔,最多填写5个。...多个关键字请用空格分隔,最多填写5个。...
总的来说,使用`Animator`创建开场动画结合预加载策略,能够使应用在启动时既有吸引人的视觉效果,又能快速进入可用状态。在实际开发中,需要注意动画的流畅性和预加载的效率,以提供最佳的用户体验。
Animator(参数动画)是一个专门用于SketchUp模型动画的插件,通过参数化的交互式框架来控制对象和相机沿时间轴的移动。获取生成高质量视频外部工具FFmpeg,可以到免费SU插件下载网站-SU插件百科:...
**Ulead GIF Animator 5教程8动画制作实例详解** 在数字媒体领域,GIF动图是一种广泛使用的格式,尤其在网络和社交媒体上。Ulead GIF Animator 5是一款强大的工具,专为创建、编辑和优化GIF动画设计而生。本教程将...
《Unity文字动画插件Text Animator详解》 Unity是一款强大的跨平台游戏开发引擎,它提供了丰富的功能,让开发者能够创建各种类型的游戏和交互式体验。在众多的Unity资源中,Text Animator是一个专门针对文字动画...
标题中的“做GIF动画原来可以这么简单 EasyGIFAnimator”指的是使用名为EasyGIF Animator的软件来创建GIF动画的简易过程。EasyGIF Animator是一款功能强大的GIF动画制作工具,适合那些想要轻松快捷地制作动态图像的...
接下来,我们将深入探讨"animator属性动画效果"。 ### 1. 属性动画的基本概念 属性动画系统在Android 3.0(API级别11)引入,主要由三个核心组件构成:`ValueAnimator`、`ObjectAnimator`和`PropertyValuesHolder`...
Easy GIF Animator是一款非常小巧、轻便、操作简单且功能非常强大的一款专业制作gif动画的软件。在制作gif动画的过程中,它可将动画转成灰阶、可设定动画回转数、可设定每个图片的透明色、可设定显示位置和影格持续...
15年新版本的Easy GIF Animator V6.2,一款易于使用且功能很强大的GIF动画制作工具,软件内建有简易使用向导,通过向导你可以创建新的动画或者动画横幅,创建动画效果的按钮。能够从现有的视频中创建动画,将视频...
GIF转换ASCII动画-“ASCII ANIMATOR”
Ease Curves :控制动画的速度,在特定的停止点的动画。 Events"将事件添加到其他对象的路径,或者可以调用其他对象,或广播事件; Orientations :通过路径控制摄像头的方向,只用于自定义动画模式。 Tilts:控制摄像机...
在本文中,我们将深入探讨如何在C#编程环境中利用Animator控件来实现动画效果。Animator.zip文件包含了一个方便易用的动画控件,它能够帮助开发者轻松地在应用程序中添加动态视觉元素,提升用户体验。 首先,C#是...
在介绍Unity角色动画中Animator Controller的相关知识之前,我们首先要了解,随着游戏开发技术的发展,动画系统也在不断地升级改进。在Unity中,老版本的动画系统主要是通过Animation组件来控制动画的播放和混合,而...
Animator 动画的实现机制说起来其实更加简单一点,因为他其实只是计算动画开启之后,结束之前,到某个时间点得时候,某个属性应该有的值,然后通过回调接口去设置具体值,其实 Animator 内部并没有针对某个 view 进行刷新,...