Android聊天浮动活动

时间:2016-07-24 05:29:21

标签: android

我正在尝试从facebook实施chatHeads。这部分正在运作。

我希望它的行为类似于facebooks聊天。当您点击气泡时,它会显示一个视图,然后再次点击会关闭视图。

到目前为止,我的问题是决定这个观点应该是什么。

我试图通过以下方式实现它。

我决定使用浮动活动,因为我认为它会提供最大的灵活性。

这是正确的方法吗?最后我想在那里贴一个视图寻呼机。

public class BubbleOverlay extends Activity {

private boolean active = false;
private View mainView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.overlay_layout);
    mainView = findViewById(R.id.main_overlay_layout);
}

public void setActive(boolean value){
    active = value;
}

public void hide(){
    active = false;
    mainView.setVisibility(View.INVISIBLE);
}

public void show(){
    active = true;
    mainView.setVisibility(View.VISIBLE);
}

public boolean getActive(){
    return this.active;
}

@Override
protected void onResume() {
    active = true;
    super.onResume();
}

@Override
protected void onPause() {
    active = false;
    super.onPause();
}

@Override
protected void onDestroy() {
    active = false;
    super.onDestroy();
}

Chathead是实现并切换活动,如下所示:

        overlay = new BubbleOverlay();
    Intent intent = new Intent(this, overlay.getClass()).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

    Handler handler = new Handler();
    Runnable runnable_longClick = new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            overlay.hide();
        }
    };
    handler.postDelayed(runnable_longClick, 5000);

这会导致以下错误崩溃:

07-24 01:27:33.195 4752-4752/com.some.package E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: com.some.package, PID: 4752
                                                                java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
                                                                    at com.some.package.BubbleOverlay.hide(BubbleOverlay.java:34)
                                                                    at com.some.package.BubbleService$5.run(BubbleService.java:170)
                                                                    at android.os.Handler.handleCallback(Handler.java:751)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                    at android.os.Looper.loop(Looper.java:154)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:6044)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

1 个答案:

答案 0 :(得分:0)

这是mollyIV已经实施的项目:

https://github.com/mollyIV/ChatHeads

它可以帮到你