表面视图上的动画

时间:2014-11-25 15:28:25

标签: android android-layout android-animation

我有一个framelayout作为根布局。在那之下,我有这样的自定义表面视图布局,textview和按钮视图(这只是一个示例测试代码,而不是我真正的应用程序代码)。

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">

    <android.dipsy.org.canvastest.SurfaceViewExample
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv"
            android:text="@string/hello_world"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30sp"/>

        <Button
            android:id="@+id/btn"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="CLICK"
            android:onClick="btnClick"/>

    </LinearLayout>
</FrameLayout>

我想要的是设置背景图像,最重要的是,我想在表面视图上做一些动画(移动位图等)。但问题是当我将一些背景设置为framelayout或surface视图时,动画是不可见的。那么如何解决这个问题呢?或者我的方法是错误的?是否可以为surfaceview设置背景并在其上做动画?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。这很简单但是花了一些时间来打我。诀窍是不要在布局文件中设置背景,绘制它!我所做的只是在每次绘制移动位图之前绘制背景位图,如下所示。

 pm.getPosTan(distance,pos,null); // pm is the pathMeasure object.
            canvas = holder.lockCanvas();
            canvas.drawBitmap(paper,0,0,p); //paper is the bitmap I wanted to set as background
            canvas.drawBitmap(ic,pos[0],pos[1],p); // ic is the moving bitmap
            holder.unlockCanvasAndPost(canvas);