专用于SurfaceView的屏幕的特定部分

时间:2012-05-09 04:19:16

标签: android

我想要达到的目的是:

enter image description here

我想让屏幕的特定部分成为我的SurfaceView。我将使用此SurfaceView来制作动画。但我希望在Views旁边添加一些TextView,例如RadioButtonGroupSurfaceView

所以我的问题是,这可能吗?我正在寻找关于'动画精灵'的示例android源代码,但我找不到任何包含TextViewsSurfaceView的活动。所有人都在延长SurfaceView。如果可以,我该怎么办?您有可以尝试的示例源代码吗?

2 个答案:

答案 0 :(得分:0)

绝对可以,但您可能需要提供更多信息。如果你想在textview旁边运行一些简单的动画,那么你甚至不需要一个surfaceview。只需创建一个imageview并在其上运行动画(我为这个主题创建的here is a tutorial

TextView及其亲属不是从Surfaceview派生的,而是从View类派生的。再一次,如果你想要执行简单的动画,我不认为你需要一个表面视图。如果你想做更多动态复杂的事情,那么我的开发博客上有also a tutorial关于如何利用SurfaceView进行游戏的内容。如果您更喜欢这种风味,那么您可以创建自定义曲面视图,然后将其与您想要的尺寸尺寸绑定到您的布局中。

答案 1 :(得分:0)

试试这个我不会扩展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;
        }

    }

现在您只需在布局上添加任何textview或按钮即可。

注意: - 我正在动态创建表面。在您的情况下,您可以做的是您可以在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));

希望它能帮到你......