android - SurfaceView 崩溃 - 为什么?

标签 android surfaceview

现在我正在尝试测试 SurfaceView。它出现在我的预览中。它显示带有我的自定义 SurfaceView(“RollView”)名称的灰色背景。每次我尝试测试它。它会立即崩溃。当我删除 com.hovanky.roll.RollView xml 标签时,它起作用了。但是我失去了我的表面 View 。我做错了什么?

在 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>

在我的 Activity 中,它扩展了 Activity 。我为我的 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) {
}

最佳答案

将您的 RollView 类更改为:

    class RollView extends SurfaceView implements SurfaceHolder.Callback {
     private SurfaceHolder holder;

     public RollView(Context context) {
        super(context);
        holder= getHolder();
        holder.addCallback(this);
    }

    public RollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
   //your code here...

关于android - SurfaceView 崩溃 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161161/

相关文章:

android - 从 SurfaceView 获取帧

android - 速度较快的 Android 设备上的 FPS 较慢

android - 如何关闭 AsyncTask 中的 ProgressDialog

Android studio com.google.android.exoplayer2 不存在报错

java - Android Studio 无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

java - 如何在surfaceView render() 中延迟图像出现

android - Surfaceview 骨架教程问题

java - 设置 SurfaceView 的背景图像

android - 如何获取SD卡上的视频列表

android - GridLayout(不是GridView)如何均匀拉伸(stretch)所有 child