以编程方式覆盖/添加mjpeg视图上的按钮

时间:2013-09-02 08:28:42

标签: android button

我正在为视频门电话开发我的第一个Android应用程序。 SIP Audio和mjpeg视频功能正在运行 我想在视频ui的底部添加三个按钮,但是只有一个按钮,我在第3个时添加了。 提前感谢您的回复

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String URL = "http://172.16.1.58/mjpg/video.mjpg";
    //String URL ="http://172.16.20.20/axis-cgi/mjpg/video.cgi?camera=1&resolution=320x240";

    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    mv = new MjpegView(this);
    setContentView(mv);

    // (1) add accept button on video screen
    acceptBtn = new ImageButton(this);
    acceptBtn.setImageResource(R.drawable.answer);
    acceptBtn.layout(0, 0, 0, 0);
    addContentView(acceptBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    acceptBtn.setOnClickListener(onAccept);

    // (2) add End key on video screen
    endBtn = new ImageButton(this);
    endBtn.setImageResource(R.drawable.end);
    endBtn.layout(0, 300, 0, 0);
    addContentView(endBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    endBtn.setOnClickListener(onEnd);


    // (3) add OpenDoor key on video screen 
    keyBtn = new ImageButton(this);
    keyBtn.setImageResource(R.drawable.key);
    keyBtn.layout(0, 600, 0, 0);
    addContentView(keyBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    endBtn.setOnClickListener(onOpenDoor);


    new ConnectToImageServer().execute(URL);
}

1 个答案:

答案 0 :(得分:0)

看起来你永远不会在你的视图中添加按钮,你需要做类似

的事情 每个人都

mv.addView(keyBtn);

然而,添加3个按钮可能无法为您提供所需的布局,因此您可以做的是制作包含其中所有按钮的xml布局并将其添加到视图中。使用这样的东西,或以编程方式

    XmlPullParser parser = res.getXml(R.layout.buttonsForVidUI);
    AttributeSet attributes = null;
    int state = 0;
    while(state != XmlPullParser.END_DOCUMENT)
    {
        try {
            state = parser.next();
        } catch (XmlPullParserException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }       
        if (state == XmlPullParser.START_TAG) {
            if (parser.getName().equals("LinearLayout")) {
               attributes = Xml.asAttributeSet(parser);
                break;
            }
        }
    } 

那就是说,如果我理解正确的话,可能会发生的是所有按钮彼此重叠,所以你看到的就是最后一个。按钮的布局是否显示了您的期望?检查此方法的一种方法是将背景设置为其中一个为黑色keyBtn.setBackgroundColor(#000000),其余为透明endBtn.setBackgroundColor(#00000000),后两个0为Alpha通道。我之前在向视图添加按钮时遇到了问题,因为我尝试添加它们的视图忽略了一些布局参数。在这种情况下,我不得不在xml中为布局添加它们,这是一个选项吗?