마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[안드로이드]어플을 띄우고 그위에 뒤로가기 버튼을 리모컨 처럼 띄울려고 하는데요

0 추천

7일정도 안드로이드 스튜디오 만졌는데요 전혀 모르겠습니다.

어떻게 하다가 보니깐 서비스로 반투명하게 항상 최상위에 버튼이 뜨게 만들긴 했는데 그 버튼으로 메인 화면의 뒤로 가기를 해야 하는데 계속 안됩니다. 아는게 없어서 뭐라 검색해야될지도 모르겠고요

코드는 인터넷에서 긁어서 이어 붙인 거구요 서비스만 올렸는데 더 어떻게 해야 할지 모르겠습니다. 제발 도와주세요ㅠㅠ

   int i=0;
    public MyService2() {
    }
    IBinder mBinder = new MyBinder();

    class MyBinder extends Binder {
        MyService2 getService() {
            return MyService2.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        //throw new UnsupportedOperationException("Not yet implemented");
        return mBinder;
    }

    int getRan() {
        return i++;
    }



    Button btbt;
    TextView tv;
    WindowManager.LayoutParams mParams;
    WindowManager mWindowManager;
    @Override
    public void onCreate(){
        super.onCreate();

        Point pt = new Point();
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        Display md = wm.getDefaultDisplay();
        md.getSize(pt);
        int flags;
        tv = new TextView(this);
        tv.setText("gfghfghf");
        tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);
        tv.setTextColor(Color.BLUE);
        tv.setBackgroundColor(Color.argb(127,0,255,255));
        btbt = new Button(this);
        btbt.setText("zzz");
        btbt.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            flags = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        } else {
            flags = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        }

        mParams = new WindowManager.LayoutParams(
                pt.x =100,
                pt.y =100 ,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                flags,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);                                     //투명
        mParams.gravity = Gravity.LEFT;               //왼쪽 상단에 위치하게 함.




        mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);  //윈도우 매니저

        ((WindowManager) getSystemService(WINDOW_SERVICE)).addView(btbt,mParams);      //윈도우에 뷰 넣기. permission 필요. 여기서 안됨


        Log.i("test","zzz");
        Log.i("test","good");

        btbt.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v){

                btbt.setText("aaa");
            }
        });

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("test","asd");

        return super.onStartCommand(intent,flags,startId);

    }

    @Override
    public void onDestroy(){
        super.onDestroy();
        if(tv != null)
        {
            ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(btbt);
            tv = null;
        }
        Log.i("test","end");
    }
}
익명사용자 님이 2019년 11월 8일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...