gpt4 book ai didi

android - 不缩放的动画 ImageView 宽度

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:44:21 25 4
gpt4 key购买 nike

我正在尝试为 ImageView 制作动画,以便它从左到右缓慢显示。当I asked this before我无法解释我想要什么,所以这次我使用 HTML/JS 创建了所需的效果:

http://jsfiddle.net/E2uDE/

在 Android 中获得这种效果的最佳方式是什么?

我尝试更改 scaleType,然后将 ScaleAnimation 直接应用于该 ImageView:

布局:

<ImageView
android:id="@+id/graphImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:background="@android:color/transparent"
android:contentDescription="@string/stroom_grafiek"
/>

Java:

scale = new ScaleAnimation((float)0,
(float)1, (float)1, (float)1,
Animation.RELATIVE_TO_SELF, (float)0,
Animation.RELATIVE_TO_SELF, (float)1);
scale.setDuration(1000);

graphImage.startAnimation(scale);

但这仍然会缩放图像。

我还尝试将 ImageView 包装在 FrameLayout 中,希望我可以为 FrameLayout 设置动画:

<FrameLayout
android:layout_width="70dp"
android:layout_height="fill_parent"
android:clipChildren="true"">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|left|clip_horizontal" />
</FrameLayout>

这仍然会尝试缩放我的 ImageView 以适应 FrameLayout。

最佳答案

有几种方法可以做到这一点 - 一种方法是简单地更改 ImageView 绘制图像的 Canvas 上的剪辑(即允许绘制 View 的区域)。慢慢增加绘图边界的右手边缘将产生与示例链接中相同的效果。

我写了一些example code这说明了这种技术。如果您下载/构建/运行项目,单击图像将运行显示动画。

看看 CoveredImageViewonDraw 方法类,具有以下基本结构:

@Override
protected void onDraw(Canvas canvas) {
...
canvas.getClipBounds(mRect);
mRect.right = ...;
canvas.clipRect(mRect);
...
super.onDraw(canvas);
...
invalidate();
}

剪辑调整后调用invalidate(),导致onDraw()再次调用。

我还编写了一些代码来根据耗时插入正确的剪辑值,这不依赖于任何特定的 Android 版本。但是,请注意,从 Android 3.0 开始,有一个新的动画框架和一个 ValueAnimator。可以帮助执行此类任务的类。

关于android - 不缩放的动画 ImageView 宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13860780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com