- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想写一个球在屏幕上移动的程序,因此,我看了很多教程,但我无法理解这一行:
mHolder = getHolder();
mHolder.addCallback(this);
addCallback
方法中的“this
”参数是什么?为什么我使用这种方法?我阅读了有关 SurfaceView
和 SurfaceHolder
和 Canvas
的内容,但我不太了解 SurfaceHolder
。它有什么作用?
我知道我的问题可能很愚蠢,但这是一个问题!请解释一下这个概念。
最佳答案
“this”是一个基本的 Java/OO 概念……在这里它指的是调用 mHolder.addCallback() 的对象。在您的类声明中,您会在顶部看到它“实现了 SurfaceHolder.Callback”。
由于您的类实现了 SurfaceHolder.Callback,它是 SurfaceHolder.Callback 的一个实例,因此它可以将对自身('this')的引用传递给采用 SurfaceHolder.Callback 参数的函数.
至于SurfaceHolder的“概念”,它只是应用程序代码与Surface交互的接口(interface)。它用于 SurfaceView.java ...寻找私有(private) SurfaceHolder mSurfaceHolder 声明。
这是 100% 的猜测,但我想 SurfaceHolder 之所以以这种方式分离出来,是因为设计人员设想有其他类型的 SurfaceView,并希望应用代码以一种标准方式与它们交互。
关于android - 了解 SurfaceHolder 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878353/
我正在使用 MediaRecorder 捕捉视频。部分代码如下。 surfaceView = (SurfaceView) findViewById(R.id.surface_camera);
在根据需要创建服务时,surfaceView 和 surfaceHolder 通过 intent 传递给服务。如何在服务端提取相同的内容。一直在尝试这个,但未能成功。 Activity : inten
如何在不使用 SurfaceHolder 的情况下获取手机的宽度或高度? 最佳答案 使用 DisplayMetrics displaymetrics = new DisplayMetrics();
我正在为 Android 中的动态壁纸实现一个渲染循环。我在 Internet 上找到的所有示例都包含这样的渲染循环: public void run() { while (mRunning)
当尝试从服务(无 GUI)拍照时,在某些设备上,我收到 RuntimeException。但是,如果我使用 SurfaceHolder 从 Activity 中拍照,它就会起作用。 Camera.Pa
我正在开发一款安卓游戏,我正在使用 SurfaceView。我有一个每 16 毫秒调用一次的方法(我想要 60fps) public void myDraw(SurfaceHolder holder)
我正在尝试使用 onPreviewFrame() 回调显示经过过滤的相机预览。 问题是当我删除这一行时: mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH
我想写一个球在屏幕上移动的程序,因此,我看了很多教程,但我无法理解这一行: mHolder = getHolder(); mHolder.addCallback(this); addCallback
每次我调用这些方法时,都需要 14-20 毫秒才能继续。 Canvas canvas = holder.lockCanvas(); holder.unlockCanvasAndPost(canvas)
这里是 Android 编程新手。 我环顾四周,发现这是一个常见问题,但我并没有真正看到一个简单的解决方案...我正在尝试在 Nexus 7 上运行以下代码(已尝试过 AVD 和物理设备)没有任何运气
我试图让应用程序每半秒在 Canvas 上绘制一些东西,但是 SurfaceHolder.getSurface().isValid() 返回 false,当我调用 SurfaceHolder.lock
我正在制作游戏,由于我是 Android 的新手,所以我的设计基于示例 LunarLander code .在其设计中,GameThread.doStart() 从 GameActivity 调用,然
我正在尝试编写一个使用相机的应用程序。当我试图获取我最终传递给启动相机的 surfaceCreated() 的 surfaceHolder 时,我得到了一个 NullPointerException。
我正在使用 Android SDK 实现一个相当标准的应用程序,其中涉及使用 SurfaceView、SurfaceHolder、Callback 设置进行绘图。 在我的主线程(UI 线程)中,我没有
我正在尝试创建一个 Canvas 并使用以下代码向其绘制位图: Paint paint = new Paint(); InputStream is = assets.open("card_art" +
void android.view.SurfaceHolder.setType(int type) public abstract void setType (int type) Since: API
我一直在尝试实现一个需要在表面上进行相机预览的应用程序。正如我所看到的, Activity 和表面生命周期都包含以下状态: 当我第一次启动我的 Activity 时:onResume()->onSur
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我正在制作基本的动态壁纸。代码在我的“运行 ICS 的 Galaxy S2(GT-I9100)” 上运行良好,函数返回正确的高度和宽度值。但是当我尝试在不同的设备上运行相同的 apk "Galaxy
我在市场上有一款 Android 游戏,在尝试使用 Canvas 时收到 NullPointers 的崩溃报告。我可以假设这是因为 SurfaceHolder.lockCanvas() 正在返回 nu
我是一名优秀的程序员,十分优秀!