Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在不缩放的情况下设置图像视图宽度的动画_Android_Android Layout - Fatal编程技术网

Android 在不缩放的情况下设置图像视图宽度的动画

Android 在不缩放的情况下设置图像视图宽度的动画,android,android-layout,Android,Android Layout,我正在尝试设置ImageView的动画,以便它从左到右缓慢显示。 当我无法解释我想要什么时,所以这次我使用HTML/JS创建了所需的效果: 在安卓系统中获得这种效果的最佳方式是什么 我尝试更改scaleType,然后将ScaleAnimation直接应用于该ImageView: 布局: <ImageView android:id="@+id/graphImage" android:layout_width="wrap_content" android:layout

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

在安卓系统中获得这种效果的最佳方式是什么

我尝试更改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"
    />
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与另一个视图重叠,例如,一个带有纯白色可绘制图像的视图。然后可以设置重叠图像视图的动画,而无需担心缩放,直到其宽度为0并将其移除。要做到这一点,您必须将imageView放置在相对位置。

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

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

查看类的
onDraw
方法,该方法具有以下基本结构:

@Override
protected void onDraw(Canvas canvas) {
    ...
    canvas.getClipBounds(mRect);
    mRect.right = ...;
    canvas.clipRect(mRect);
    ...
    super.onDraw(canvas);
    ...
    invalidate();
}
调整剪辑,然后调用invalidate(),从而再次调用onDraw()


我还编写了一些代码来根据经过的时间插值正确的剪辑值,这不依赖于任何特定版本的Android。然而,作为说明,Android 3.0中有一个新的动画框架和一个类,可以帮助执行这些任务。

也许使用Android动画可以帮助你?@antonyt你给我的Github链接没有gen文件夹,也没有支持哪个版本,它没有说明我如何使用项目来查看动画,根据me Gen文件夹是自动生成的,但它不是soI任意选择API级别7(v2.1)作为最低值,但它可能会降低-这在清单中指定。然而,该项目是根据API 17(4.2)编制的。Gen是在编译时自动创建的—可能您在构建项目时遇到问题—请查看Eclipse中的“问题”窗口以了解更多详细信息。