我想要达到的目的是:
我想让屏幕的特定部分成为我的SurfaceView
。我将使用此SurfaceView
来制作动画。但我希望在Views
旁边添加一些TextView
,例如RadioButtonGroup
和SurfaceView
。
所以我的问题是,这可能吗?我正在寻找关于'动画精灵'的示例android源代码,但我找不到任何包含TextViews
和SurfaceView
的活动。所有人都在延长SurfaceView
。如果可以,我该怎么办?您有可以尝试的示例源代码吗?
答案 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));
希望它能帮到你......