现在我正在尝试测试 SurfaceView。它显示在我的预览中。它以我的自定义 SurfaceView ('RollView') 的名称显示灰色背景。每次我尝试测试它。它只是立即崩溃。当我删除 com.hovanky.roll.RollView xml 标签时,它可以工作。但我失去了我的表面观点。我究竟做错了什么?
在 xml 中,我放入了我的自定义 SurfaceView
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.hovanky.roll.RollView
android:id="@+id/rollview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
</FrameLayout>
在我的活动中,这扩展了活动。我给我的 SurfaceView 提供句柄
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRollView = (RollView) findViewById(R.id.rollview);
然后,我绘制了我的自定义 SurfaceView 的骨架。
class RollView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holder;
public RollView(Context context) {
super(context);
holder= getHolder();
holder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}