在视图上绘制按钮的最有效方法是什么?

时间:2011-01-29 18:55:25

标签: android layout custom-view

我正在处理的应用程序包含一个填充屏幕的大型自定义视图。我在自定义视图的每一侧的中心放置了一个按钮,可用于在该方向上移动绘制的对象。将自定义视图视为相机的“取景器”,我希望用户能够使用四边的按钮平移取景器。

按钮工作正常,但按下一个按钮时,下面的自定义视图会经过大量重绘(4次重绘而不是1次),并且用户界面相当滞后。

是否有某种方法可以阻止自定义视图因为按钮的动画而重绘?

如果我遗漏了一些明显的东西,请原谅我。

提前感谢任何帮助... Android摇滚!!!

XML布局:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <com.app.CustomView
    android:id="@+id/CustomView" android:layout_above="@+id/menuButton" android:layout_height="fill_parent" android:layout_width="fill_parent"/>
    <Button android:layout_height="wrap_content" android:layout_below="@+id/CustomView" android:layout_width="wrap_content" android:layout_alignRight="@+id/CustomView" android:id="@+id/toolsButton" android:text="Tools" android:textSize="24sp"></Button>
    <Button android:layout_height="wrap_content" android:id="@+id/outButton" android:text="-" android:textSize="30sp" android:layout_toLeftOf="@+id/inButton" android:layout_alignTop="@+id/inButton" android:layout_width="40sp"></Button>
    <Button android:layout_height="wrap_content" android:layout_alignRight="@+id/CustomView" android:layout_alignBottom="@+id/CustomView" android:text="+" android:textSize="30sp" android:id="@+id/inButton" android:layout_width="wrap_content"></Button>
    <Button android:layout_alignTop="@+id/CustomView" android:layout_centerHorizontal="true" android:layout_height="40sp" android:layout_width="60sp" android:text="^" android:id="@+id/upButton"></Button>
    <Button android:layout_alignBottom="@+id/CustomView" android:layout_centerHorizontal="true" android:text="v" android:layout_height="40sp" android:layout_width="60sp" android:id="@+id/downButton"></Button>
    <Button android:layout_alignRight="@+id/CustomView" android:text="&gt;" android:id="@+id/rightButton" android:layout_height="60sp" android:layout_width="40sp" android:layout_centerVertical="true"></Button>
    <Button android:id="@+id/leftButton" android:text="&lt;" android:layout_height="60sp" android:layout_width="40sp" android:layout_centerVertical="true"></Button>
    <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignLeft="@+id/CustomView" android:id="@+id/menuButton" android:textSize="24sp" android:text="Functions" android:layout_alignParentBottom="true"></Button>

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

为什么按钮是自定义视图的一部分?为什么不将它们作为活动布局的一部分,以便布局包含所有按钮和自定义视图?

这可能无法完全解决您的问题,因为如果调用其onDraw方法阻止UI线程,您可能需要进一步优化/重新思考自定义视图的实现方式。

答案 1 :(得分:0)

我发现实际上我的计算过于准确,而且我的Droid工作太难了。现在一切顺利。