我有一个surfaceview来做一些绘画的东西。我的视图支持放大/缩小功能。现在,当用户通过手指手势放大/缩小时,我想调整surfaceview的大小,我已经尝试通过更改surfaceview的布局参数来调整大小。虽然这有效,但速度很慢,而且在进行调整大小工作时,我看到一些大的跳跃(滞后),这是不可用的。在这里,我想知道如何有效地调整surfaceview的大小(没有跳转)?
这里扼杀了我的视图结构,
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_above="@+id/bottomMenu"
android:layout_height="match_parent">
<MySurfaceView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout> ...
params改变代码,
ViewGroup.LayoutParams params = surface.getLayoutParams();
params.height = (int) (750*factor);
surface.setLayoutParams(params);
答案 0 :(得分:0)
最后我找到了一个surfaceHolder方法来设置画布大小固定,
holder.setFixedSize(canvasW, canvasH);
通过这种方法,我可以使用布局参数调整布局大小,而不会出现任何滞后现象。在这里,我需要在设置之前知道画布大小,因此我使用预定义大小的Java代码添加了SurfaceView,并且它运行顺畅。
**我还不确定,为什么设置画布固定大小完成了诀窍。欢迎您解释一下(可能会编辑此答案)。