<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                在這一小節里將介紹另外一種創建窗口的方法,并以此為切入點來開始對Android控件系統的探討。 這個例子將會在屏幕中央顯示一個按鈕,它會浮在所有應用之上,直到用戶點擊它為止。市面上某些應用的懸浮窗就是如此實現的。 - 首先,讀者使用Eclipse建立一個新的Android工程,并新建一個Service。然后在這個Service中增加如下代碼: ``` // 將按鈕作為一個窗口添加到WMS中 private void installFloatingWindow() { // ① 獲取一個WindowManager實例 finalWindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); // ② 新建一個按鈕控件 finalButton btn = new Button(this.getBaseContext()); btn.setText("Click me to dismiss!"); // ③ 生成一個WindowManager.LayoutParams,用以描述窗口的類型與位置信息 LayoutParams lp = createLayoutParams(); // ④ 通過WindowManager.addView()方法將按鈕作為一個窗口添加到系統中 wm.addView(btn, lp); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // ⑤當用戶點擊按鈕時,將按鈕從系統中刪除 wm.removeView(btn); stopSelf(); } }); } privateLayoutParams createLayoutParams() { LayoutParams lp = new WindowManager.LayoutParams(); lp.type = LayoutParams.TYPE_PHONE; lp.gravity = Gravity.CENTER; lp.width = LayoutParams.WRAP_CONTENT; lp.height = LayoutParams.WRAP_CONTENT; lp.flags = LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCH_MODAL; return lp; } ``` - 然后在新建的Service的onStartCommand()函數中增加對installFloatingWindow()的調用。 - 在應用程序的主Activity的onCreate()函數中調用startService()以啟動這個服務。 - 在應用程序的AndroidManifest.xml中增加對權限android.permission.SYSTEM\_ALERT\_WINDOW的使用聲明。 當完成這些工作之后,運行這個應用即可得到如圖6-1所示的效果。一個名為“Clickme to dismiss!”的按鈕浮在其他應用之上。而點擊這個按鈕后,它便消失了。 :-: ![](http://img.blog.csdn.net/20150814133430983?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 圖 6 - 1浮動窗口例子的運行效果 讀者可以將本例與第4章的例子SampleWindow做一個對比。它們的實現效果是大同小異的。而然,本章的這個例子無論是從最終效果、代碼量、API的復雜度或可讀性上都有很大的優勢。這得益于對控件系統的使用。在這里,控件Button托管了窗口的繪制過程,并且將輸入事件封裝為了更具可讀性的回調。并且添加窗口時所使用的WindowManager實例掩蓋了客戶端與WMS交互的復雜性。更重要的是,本例所使用的接口都來自公開的API,也就是說可以脫離Android源碼進行編譯。這無疑會帶來更方便的開發過程以及更好的程序兼容性。 因此,除非需要進行很底層的窗口控制,使用本例所介紹的方法向系統中添加窗口是最優的選擇。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看