首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Object animator只工作到滚动的中间,而不是底部

Object Animator是Android平台上的一个动画类,用于实现属性动画。它可以对任意对象的属性进行动画操作,包括但不限于视图的位置、大小、透明度等。

Object Animator的工作方式是通过不断改变目标对象的属性值来实现动画效果。它可以指定动画的起始值和结束值,并根据设定的插值器(Interpolator)来计算中间值,从而实现平滑的动画过渡效果。

在滚动的场景中,Object Animator可以用于实现滚动视图的动画效果。例如,可以通过设置滚动视图的滚动位置属性来实现滚动动画。当滚动到指定位置时,可以使用Object Animator来控制滚动的中间位置,而不是滚动到底部。

Object Animator的优势在于它可以实现更加灵活和自定义的动画效果。通过设置不同的属性和插值器,可以实现各种各样的动画效果,提升用户体验。

在移动应用开发中,Object Animator可以应用于各种场景,例如页面切换动画、按钮点击动画、列表项展开动画等。它可以为应用增加动感和交互性,提升用户对应用的满意度。

腾讯云提供了一系列与移动应用开发相关的产品,可以帮助开发者实现更好的动画效果。其中,腾讯云移动应用分析(Mobile Analytics)可以帮助开发者分析用户行为和应用性能,优化动画效果的展示。详情请参考腾讯云移动应用分析产品介绍:https://cloud.tencent.com/product/ma

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android魔术系列:一步步实现淹没、展开效果

    比如使用scaleAnimation使布局缩放,但是布局实际大小并没有改变,所以会遮盖旁边布局,并不是把布局撑开,挤压其他布局。...整个粉红色区域向上淹没整个页面 展开 —— 从状态2到状态3。当淹没整个页面后,从中间展开直至整个页面 整体布局 这两个阶段就是实际上就是通过两部分动画依次执行来实现,我们先来看看布局: <?...spread_view —— 这个是黑色区域部分,一开始高度是0 两个textview —— 中间圆形button实际上由上下两个独立部分组成,而且这两部分中间夹着spread_view(这么布局是为了第二阶段动画...,下面会详细讲解) 这里要注意,我们使用了textview不是imageview来实现button布局,是因为如果使用imageview,当第二阶段展开到button两部分超出屏幕顶部和底部时,imageview...区域压缩导致图片会被缩小不是溢出,差别如下 使用ImageView效果 使用TextView效果 所以我们这里使用TextView。

    59420

    自定义View | ofObject详解与实战(ValueAnimator进阶)

    ; 第二个参数是可变长参数,属于Object类型; 第一个参数Evaluator作用: 根据当前动画数值进度计算出当前进度所对应值。...既然Object对象是我们自定义, 那必然从进度到值转换过程也必须由我们来做, 否则系统不可能知道我们要将数值进度转换成什么具体值。...结果转换成Character返回; 案例:抛物动画 插值器只能改变动画进展快慢, Evaluator则可以改变返回值。...而在这里我们是没有时间概念,只有fraction表示进度, 所以要想完美匹配这个自由落体公式, 需要复杂计算,这不是本例重点。 这里取一个折中公式:将实时进度乘以2作为当前进度。...很显然,Y轴进度会首先完成(变成1), 这时X轴还是会继续前进, 所以在视觉上会产生落地后继续滚动效果。

    67820

    Android实现美团外卖底部导航栏动画

    体验了一下美团外卖底部导航栏,感觉动画很流畅,分割线被顶起,还有图标的动画,可能用lottie,觉得分割线被顶起可以自己写动画,所以试着写了一下 。 ?...开始绘制view,被顶起曲线分三段,前后两端曲线对称,用path绘制曲线,中间段绘制贝塞尔曲线。 ?...(startValue, halfValue, endValue); // animator.setInterpolator(new DecelerateInterpolator()); animator.addUpdateListener...(ANIM_TIME); animator.start(); } 动画执行过程中有个回弹,那么value变化需要一个中间值, startValue = 0; halfValue = -DensityUtils.dp2px...因为有曲线衔接贝塞尔曲线,感觉弧度有时候改变曲线不是很流畅,大家应该会有更好办法 欢迎补充! 以上就是本文全部内容,希望对大家学习有所帮助。

    1.7K20

    里程表式跑马灯自定义控件

    20180628.gif 优点: 内容item复用,节约内存 基于ViewGroup,比较轻量 支持recyclerview中使用 item布局支持自定义 极端需求(支持嵌套) 缺点: item布局只能唯一...不能手动开始和结束动画(不是不可以加,只是本人觉得没必要。。)...参数名 意义 orientation 动画滚动方向 animator_duration 动画时间 stay_duration 每个item动画结束后停留时间 reverse_animator 是否反向动画...给MarqueeView设置Adapter marqueeView.setAdapter(object : MarqueeView.MarqueeViewAdapter(){...: 方法名 意义 getItemLayout 决定滚动内容布局,当前版本默认内容布局只有一种 onBindItemView 给当前position内容布局绑定数据 getItemCount 决定内容

    52420

    Android ScrollView设置初始position方法

    后来改用Animator来实现,具体实现代码如下: ? 但是为难是如何做到初始化ScrollView默认滚动值。...当我看着上面动画代码发呆时候,突然注意到了scrollY这个值,为什么Animator能够通过这个值来调整ScrollView滚动位置呢?...查看了一下Animator底层实现,发现scrollY并不是一个具体属性成员 ?...也就是说其实Animator是通过setScollY这个方法来实现动态滚动ScrollViewsetScrollY底层其实就是调用scrollTo。 ? 到此似乎饶了个大圈子又回到了起点。...通过断点和查看源码确认,这个保存ScrollView当前滚动位置scrollY属性全名叫做mScrollY,而这个mScrollY并不是ScrollView成员,而是其父类View属性成员。

    4K80

    Android微信右滑退出功能实现代码

    act2是Main2Activity,act3是Main3Activity 原理 滚动 首先我们知道每个Activity展示内容一般都是DecorView去承载,不知道看下图,其中状态栏背景也包括在内...DecorView 所以我们第一步,只需要滚动DecorView内容或者平移DecorView就行了。...A:看上面的DecorView那张图,我们Activity布局只是填充content里面的内容,也就是说我们是被ContentFrameLayout包裹住,Activity布局文件根元素并不是Activity...滚动DecorView内容 这里我们使用滚动DecorView内容不是滚动整个DecorView。...(); } return super.onTouchEvent(event); } } 写在最后 这是最简单最简单做法,无任何封装与扩展,包括一些可能存在滚动冲突也没有去处理。

    1K20

    自定义View(五)-动画- ObjectAnimator

    ObjectAnimator可以针对某一个控件某个属性直接做动画,不需要设置监听,并让我自己手动修改控件属性。相对来说使用更加简单方便。 ---- 使用 在介绍完之后我们来看下如何使用。...在这里我们只要知道在传入属性值时候不是随便传入,比如:setAlpha(float alpha) 在传入是只能传入"alpha"或"Alpha"其他其他格式是没有效果,因为反射区找回找不到setAlpha...所以让动画生效要同时满足以下条件(缺一不可): 要做动画对象(如上面的TextView)必须提供set方法,如果对象没有传递初始值(如:传递一个值...但是我们之前讲过,在初始化时候没有设置初始值将会调用get方法,首先我们设置时传入了400,并没有传入0,但是从效果上来看和ValueAnimator是一样,这是为什么呢?...TextView中虽然有setText(CharSequence text) 函数,但这个函数参数类型是CharSequence,不是Character类型。

    2.3K10

    实战|Android文字滚动自定义动画

    实现效果 上面视频中可以看到,我们把视频开始那串文本“微卡智享,学更好别人,做更好自己”通过动画效果逐一滚动显示出来,并且在显示过程中字体在不断放大和向右下移动,当显示完后再按原路径显示回去...evaluate(float v, Object int1, Object int2) { int starti=(int) int1; int endi=(int)...我没用到泛型,是因为我输入参数为两个integer类型,用于设置输入移动开始和结束距离,返回参数就是我们PointText类,所以就用默认Object类型后进入强制转换。...animator.setDuration(5000); //设置播放完后倒序播放回来 animator.setRepeatCount(1);...animator.setRepeatMode(ValueAnimator.REVERSE); animator.start(); } 整个ValueAnimator创建代码,首先定义了

    1.6K20

    自定义View(三)-动画-属性动画ValueAnimator

    有人会觉得直接用缩放(scaleX)来做,但是做出来效果却是将控件宽度拉长不是增加。不管是从视觉上还是理解上都不是我们想要效果。后期我们会做实验来试一下。...正因为属性动画能够针对控件某一个属性来做动画,所以也就造就了他能单独改变控件某一个属性值!比如颜色!这就是Property Animator能实现补间动画无法实现功能最重要原因。...View Animation仅能对指定控件做动画,Property Animator是通过改变控件某一属性值来做动画。...Property Animator则是恰恰相反,Property Animator是通过改变控件内部属性值来达到动画效果。 那事实到底是不是这样呢?下面我们就用实际例子来证实一下。...中移除指定监听器,removeAllListeners()用于移除animator中所有的AnimatorListener监听器; 下面我们测试一下,效果: ?

    1.4K31

    在 View 上使用挂起函数

    不是所有的操作都有已取消或出错状态,但是这些操作有。就像后面 Animator 示例中那样,我们必须把这些状态传递到协程中,让调用者可以处理错误状态。...表达式会被立即调用,允许我们创建一个监听器 val listener = object : View.OnLayoutChangeListener { override fun...,我们可以分别取消动画或者协程: #1: 在 Animator 运行时候,协程被取消 。...但是这里使用方法适用于不同类型异步操作: 我们使用一个 ValueAnimator,一个 RecyclerView 平滑滚动,以及一个 Animator 来举例: viewLifecycleOwner.lifecycleScope.launch...如果我们希望 ValueAnimator 和平滑滚动同时开始,然后在两者都完成之后启动 ObjectAnimator,该怎么做呢?

    2.3K30

    Android入门之动画

    因为它只能应用于View对象,而且支持一部分属性,如支持缩放旋转而不支持背景颜色变化。...对于View Animation而言,它改变了View对象绘制位置,没有改变View对象本身属性,比如,有一个200200大小Button,你用Tween动画给放大到500500但是它有效点击区域还是...动画,就会发现无效,虽然他们都有setWidth和getWidth方法,但是setWidth方法内部实现是改变TextView最大宽度和最小宽度,和TextView宽度不是一个东西。...确切说TextView宽度对应是xml中android:layout_width属性,TextView还有另外一个属性:android:width,android:width 属性对应就是TextView...{ public Object evaluate(float fraction, Object startValue, Object endValue) { float startFloat

    79270

    使用三阶贝塞尔曲线实现直播中点赞效果

    首先在init方法中设置子ViewLayoutParams,使其能够实现底部居中。...不是true lp.addRule(ALIGN_PARENT_BOTTOM, TRUE); 注意: 控件宽度高度应在onMeasure方法中获取 @Override protected void onMeasure...---- 三、爱心进入时候有一个缩放并渐变动画 先看效果: ? 说到Android动画,我们以前常用Animation,它通常情况下能满足我们需求,但是它功能比较弱,并不是很好用。...t是一个因子,取值范围是0-1,熟悉动画同学应该就明白,0-1,对动画作用有多么重大。 因为需要自己实现贝塞尔,所以想到了属性动画中TypeEvaluator,它就是我们需要。...animation) { super.onAnimationEnd(animation); //因为不停add 导致子view数量增不减,所以在view动画结束后remove

    98410

    原生长列表内嵌 Flutter 卡片性能调研

    ,卡片必然存在一定时间空白,我们希望知道这个空白持续帧数和对视觉影响; 内存占用,Flutter 本身会带来一定内存增量,那多个 FlutterView/Engine 同时共存并显示是不是会进一步增大内存压力...滚动流畅度 FlutterCard 可能是因为压缩原因,视频显示不如实际表现流畅 除了初始滚动时,可能因为集中创建和初始化 FlutterEngine 导致主线略微阻塞,会有轻微掉帧现象外,整个滚动过程都非常流畅...卡片空白帧数 在 Demo 场景中,RecyclerView 在惯性滚动时,将新的卡片从不可见区域移进可见区域,触发了 TextureView 绘制, TextureView Surface...实际操作中会滚动底部之后再滚动回头部,长列表设置显示 200 张卡片,在这个过程中 RecyclerView 一共创建了 9 个 FlutterCard 对象,也就是 9 对 FlutterView/...分配 buffer 在 meminfo 中存在重复计数问题,改成 SurfaceView 之后两者应该是差不多,括号里面的 46 是改成使用 SurfaceView 时占用,实际上这一项增量取决于当前可见

    1.4K20

    RecyclerView必知必会

    但是RecyclerView出现会让很多开源项目被废弃,例如横向滚动ListView, 横向滚动GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...其实万能适配器概念在ListView就已经存在了,即base-adapter-helper。 这里我们针对RecyclerView,聊聊万能适配器出现原因。...,因此万能适配器出现了,他能通过以下方式快捷地创建一个Adapter: 是不是很方便。...如果要实现DefaultItemAnimator代码,只需要以下实现: 是不是比继承SimpleItemAnimator方便多了。...ArrayList[] mScrapViews;: 每个Item Type对应一个列表作为回收站,缓存由于滚动消失View,此处View如果被复用,会以参数形式传给getView()

    4.7K20
    领券