1. 程式人生 > >【Android】直接利用View建立Dialog

【Android】直接利用View建立Dialog

專案需求,程式碼如下:

final Dialog dialog = new Dialog(context);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setCancelable(false);
                dialog.setContentView(yourView);
                dialog.show();

設定dialog背景透明:

dialog.getWindow().setBackgroundDrawable
(new ColorDrawable(android.graphics.Color.TRANSPARENT));

利用style修改:


    <style name="NewDialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating"
>false</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTitleStyle">@null</item> <item name="android:windowAnimationStyle">@null</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item
> <item name="android:backgroundDimEnabled">false</item> <item name="android:background">@android:color/transparent</item> </style>

其中 android:windowIsFloating這一項可配合windowManager layoutParam設定dialog的寬高,以及出現的位置,我的最終程式碼為:


                dialog = new Dialog(context, R.style.NewDialog);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//                dialog.setCancelable(true);
//                dialog.setContentView(bannerView);

                // set position
                // Setting dialogview
                Window window = dialog.getWindow();
                window.setGravity(Gravity.TOP);


                WindowManager.LayoutParams param = window.getAttributes();
                param.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
                param.y = 100;
                window.setAttributes(param);
//                window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

                window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
                window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

                dialog.setTitle(null);
                dialog.setCancelable(true);

                setOntouchDispose(context);

                dialog.setContentView(bannerView);

                dialog.show();

相關推薦

Android直接利用View建立Dialog

專案需求,程式碼如下: final Dialog dialog = new Dialog(context); dialog.requestWindowFeature

Android原始碼分析 - View事件分發機制

事件分發物件 (1)所有 Touch 事件都被封裝成了 MotionEvent 物件,包括 Touch 的位置、時間、歷史記錄以及第幾個手指(多指觸控)等。 (2)事件型別分為 ACTION_DOWN, ACTION_UP,ACTION_MOVE,ACTION_POINTER_D

Android在任何View上新增紅點★★★★★★★

效果圖: 原始碼地址: https://github.com/vvinner/BadgeView ★★★★★★★★★有用的話Star一下★★★★★★★★★ 使用方式: <com.porster.badgeview.badgeview.BadgeTextView

Android原始碼解析View.post()

emmm,大夥都知道,子執行緒是不能進行 UI 操作的,或者很多場景下,一些操作需要延遲執行,這些都可以通過 Handler 來解決。但說實話,實在是太懶了,總感覺寫 Handler 太麻煩了,一不小心又很容易寫出記憶體洩漏的程式碼來,所以為了偷懶,我就經常用 View.

Android自定義View-為文字新增動態閃動效果

一、概述 昨天我簡單的為View添加了一個邊框,邊框的顏色和大小都是可以自行設定的。今天我想在文字方面做一些簡單的修改,我想讓文字閃動起來。我們可以利用LinearGradient的Shader渲染器和Matrix矩陣來實現閃動效果。 二、知識說明

Android自己定義組件系列1——自己定義View及ViewGroup

全部 int ++ btn -i pre 剪切 final 界面 View類是ViewGroup的父類,ViewGroup具有View的全部特性。ViewGroup主要用來充當View的容器。將當中的View作為自己孩子,並對其進行管理。當然孩子也能夠是ViewGrou

Android一、Progress進度條實現的三種方式:主執行緒實現,Service載入,動態建立

前言 更新版本,上傳資料到服務端,都是需要進度顯示的,Android進度顯示兩種方式 ProgressDialog 和 ProgressBar 新版本中ProgressDialog不被推薦使用,所以專案採用ProgressBar 分為三種實現方式: 1、MainAct

Android解決底部導航tab遮擋其他view的問題

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http:

Android多個Activity之間利用bundle傳遞數值

安卓中的Activity相當於vb,mfc中的窗體,在多個Activity之間傳遞資料是一個相當核心的功能。下面舉個例子來說明這個問題。 一、基本目標 使用者在兩個輸入框中輸入使用者名稱、密碼之後,跳到另一個Activity當中,顯示其輸入的內容, 然後這兩個Activi

android利用BuildConfig.DEBUG來控制日誌的輸出

前言 在Android 應用程式開發中,不可避免地會常常輸出各種除錯資訊,通常我們會使用android.util.Log類輸出該類日誌資訊(這是推薦使用的方式)。然而,在專案釋出的時候,我們常常需要關閉這些冗餘的Log資訊,手工關閉Log相當不方

仿京東中購物車列表模組的實現以及通過Builder的方式建立dialog彈窗 鏈式呼叫

前段時間見群裡有個小夥伴,發了一張電商專案中比較常見的購物車列表的效果圖,問這樣的購物車列表如何實現?我們第一反應就是用ExpandableListView來實現,在上一篇部落格中我們詳細的分析了比較實用而且又炫酷的 RecyclerView的ItemDecor

Android自定義透明dialog 去除邊緣陰影 黑邊

在style中定義透明dialog 沒繼承 @android:style/Theme.Dialog  後 出現如上圖 紅色框裡面有條黑色的陰影的現象  解決辦法:     <item name="android:windowContentOverlay">

ndk直接使用ndk提供的arm-linux-androideabi-gcc編譯android可執行程式

1、背景 經常使用linux交叉工具類的朋友都知道,在已安裝交叉編譯工具鏈後要交叉編譯得到linux可執行檔案只需要執行如下類似的命令(如編譯hello.c生成hello可執行檔案): arm-linux-gcc hello.c -o hellohello.c的程式碼非常

Android建立和使用fragment

SDK版本問題 1.系統需要執行在3.0(API 11)以及以上的版本,使用Fragment的Activity繼承普通的Activity即可。 2.系統需要執行在3.0(API 11)以下的版本,需要下載支援包android-support-v4.jar,並且使用Fragm

Android利用 ACRA 實現在規定時間內崩潰次數超過規定值就自動清理 APP 資料

其實 ACRA 是一個崩潰處理的類庫,其功能就是收集App崩潰堆疊資訊,生成報告併發送到指定端,當然它也可以自己定製對應的操作,所以是個處理崩潰很不錯的庫。 ACRA Application Crash Reports for Android 其實在規定時間內崩潰次數超

問題python利用cookie繞過驗證碼登入,是否能直接繞過驗證碼?

網上解決思路1、通過解決方案(1)獲取登入後的cookie,存為yaml格式(2)讀取yaml中的cookie資訊,進行登入實驗結果:失敗!理由是因為在有驗證碼的時候,每次登入後cookie的value值是不一樣的,即使儲存到yaml中,在二次登入的時候cookie也無法再次

AndroidView移動時RawX()為什麼要重新設定初始座標/getX()和getRawX()的區別

今天在做拖動View使其跟隨手指移動的Demo時,用了getX()和getRawX()兩種方法來實現, getX()的方法實現: public boolean onTouchEvent(MotionE

Android動畫 —— view高度漸變的動畫

【關鍵詞】 Android 高度 動畫 【問題】 實現可見度為 gone 的 view ,高度從0變化到測量的高度;如果view 可見度為 gone, 直接通過 view.getHeight()

Android自定義Dialog如何設定點選事件

我一直用findViewById,結果檢視log,總是提示我沒有獲取到控制元件,讓我疑惑了幾天,上網查了下。dialog.getWindow().findViewById(R.id.cancel_tv)

androidView DrawingCache的理解

 View元件顯示的內容可以通過cache機制儲存為bitmap, 使用到的api有     void  setDrawingCacheEnabled(boolean flag),     Bitmap  getDrawingCache(boolean autoSca