我有一个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设置背景并在其上做动画?
答案 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);