我想要实现的是:
我想让屏幕的特定部分成为我的SurfaceView
. 我会将它SurfaceView
用于一些动画。Views
但我想在我TextView
的.RadioButtonGroup
SurfaceView
所以我的问题是,这可能吗?我正在寻找有关“动画精灵”的示例 android 源代码,但我找不到任何同时包含TextViews
和SurfaceView
. 都在延伸SurfaceView
。如果这是可能的,我该怎么做?你有我可以尝试的示例源代码吗?
我想要实现的是:
我想让屏幕的特定部分成为我的SurfaceView
. 我会将它SurfaceView
用于一些动画。Views
但我想在我TextView
的.RadioButtonGroup
SurfaceView
所以我的问题是,这可能吗?我正在寻找有关“动画精灵”的示例 android 源代码,但我找不到任何同时包含TextViews
和SurfaceView
. 都在延伸SurfaceView
。如果这是可能的,我该怎么做?你有我可以尝试的示例源代码吗?
这绝对是可能的,但您可能需要提供更多信息。如果您想在 textview 旁边运行一些简单的动画,那么您甚至不需要表面视图。只需创建一个图像视图并在其上运行动画(这是我为该主题创建的教程)
TextView 及其亲属不从 Surfaceview 派生,它们从 View 类派生。再一次,如果您想执行简单的动画,我认为您不需要表面视图。如果您想做更多动态复杂的事情,那么在我的开发博客上还有一个关于如何将 SurfaceView 用于游戏的教程。如果这更符合您的喜好,那么您可以创建一个自定义表面视图,然后将其与您想要的尺寸尺寸关联到您的布局中。
试试这个我没有扩展surfaceview。
public class Preview_can_work extends Activity {
private SurfaceView surface_view;
SurfaceHolder.Callback sh_ob = null;
SurfaceHolder surface_holder = null;
SurfaceHolder.Callback sh_callback = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
surface_view = new SurfaceView(getApplicationContext());
addContentView(surface_view, new LayoutParams(50, 50));
if (surface_holder == null) {
surface_holder = surface_view.getHolder();
}
sh_callback = my_callback(); // CREATING CALLBACK FOR YOUR SURFACE.
surface_holder.addCallback(sh_callback);
}
// THIS FUNCTION RETURNS CALLBACK OBJECT FOR SURFACEVIEW.
SurfaceHolder.Callback my_callback() {
SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
};
return ob1;
}
}
现在你可以简单地在你的布局上添加任何文本视图或按钮,它应该可以工作。
注意:- 我正在动态创建表面。在您的情况下,您可以做的是您可以在 xml 文件中创建所有内容。而不是创建surfaceview 创建视频视图。
SurfaceView surface_view = (SurfaceView) findViewById(R.id.video_view_id);
如果您从布局中按 id 获取视图,那么您必须从代码中删除一些行。哪个是:
surface_view = new SurfaceView(getApplicationContext());
addContentView(surface_view, new LayoutParams(50, 50));
希望它会帮助你...