直播軟體原始碼,設定懸浮窗並可進行任意位置的移動
直播軟體原始碼,設定懸浮窗並可進行任意位置的移動
縮放方法
縮放activity需要使用WindowManager.LayoutParams,控制window的寬高
在activity中呼叫
android.view.WindowManager.LayoutParams p = getWindow().getAttributes(); p.height = 480; // 高度 p.width = 360; // 寬度 p.dimAmount = 0.0f; // 不讓下面的介面變暗 getWindow().setAttributes(p); dim:
adj. 暗淡的; 昏暗的; 微弱的; 不明亮的; 光線暗淡的;
v. (使)變暗淡,變微弱,變昏暗; (使)減弱,變淡漠,失去光澤;
修改了WindowManager.LayoutParams的寬高,activity的window大小會發生變化。
要變回預設大小,在activity中呼叫
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
如果縮小時改變了位置,需要把window的位置置為0
WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.x = 0; lp.y = 0; getWindow().setAttributes(lp);
activity變小時,後面可能是黑色的背景。這需要進行下面的操作。
懸浮樣式
在styles.xml裡新建一個MeTranslucentAct
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="windowNoTitle">true</item> </style> <style name="TranslucentAct" parent="AppTheme"> <item name="android:windowBackground">#80000000</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> </style> </resources>
主要style是AppCompat的
指定一個window的背景android:windowBackground
使用的Activity繼承自androidx.appcompat.app.AppCompatActivity
activity縮小後,背景是透明的,可以看到後面的其他頁面
點選穿透空白
activity縮小後,點選旁邊空白處,其他元件能接到點選事件
在onCreate方法的setContentView之前,給WindowManager.LayoutParams新增標記FLAG_LAYOUT_NO_LIMITS和FLAG_NOT_TOUCH_MODAL WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mBinding = DataBindingUtil.setContentView(this, R.layout.act_float_scale);
移動懸浮窗
監聽觸控事件,計算出手指移動的距離,然後移動懸浮窗
private boolean mIsSmall = false; // 當前是否小視窗 private float mLastTx = 0; // 手指的上一個位置x private float mLastTy = 0; // .... mBinding.root.setOnTouchListener((v, event) -> { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, "down " + event); mLastTx = event.getRawX(); mLastTy = event.getRawY(); return true; case MotionEvent.ACTION_MOVE: Log.d(TAG, "move " + event); float dx = event.getRawX() - mLastTx; float dy = event.getRawY() - mLastTy; mLastTx = event.getRawX(); mLastTy = event.getRawY(); Log.d(TAG, " dx: " + dx + ", dy: " + dy); if (mIsSmall) { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.x += dx; lp.y += dy; getWindow().setAttributes(lp); } break; case MotionEvent.ACTION_UP: Log.d(TAG, "up " + event); return true; case MotionEvent.ACTION_CANCEL: Log.d(TAG, "cancel " + event); return true; } return false; });
mIsSmall用來記錄當前activity是否變小(懸浮)
在觸控監聽器中返回true,表示消費這個觸控事件
以上就是 直播軟體原始碼,設定懸浮窗並可進行任意位置的移動,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2894852/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播原始碼,懸浮窗滾動漸變色效果原始碼
- Andorid 任意介面懸浮窗,實現懸浮窗如此簡單
- 短視訊app原始碼,連麥時最小化出現可移動懸浮窗APP原始碼
- Android 為應用增加可移動的懸浮視窗Android
- QPM 之懸浮窗設定資訊
- 固定位置的Js懸浮視窗JS
- 適配懸浮窗許可權與系統設定修改許可權
- FloatWindow 輕鬆實現安卓任意介面懸浮窗安卓
- 直播原始碼網站,點選圖片可進行任意方向旋轉功能原始碼網站
- 直播平臺原始碼,窗體透明的,黑暗度等的設定技巧原始碼
- 懸浮窗的一種實現 | Android懸浮窗Window應用Android
- Android懸浮窗TYPE_TOAST小結: 原始碼分析AndroidAST原始碼
- 介紹一款可懸浮的截圖軟體
- Android 懸浮窗Android
- 夢幻直播商城軟體原始碼帶貨,移動商城定製開發功能原始碼
- Android 輔助許可權與懸浮窗Android
- 懸浮窗開發設計實踐
- 短視訊系統原始碼,關於懸浮窗的縮放、拖動等應用原始碼
- Android懸浮窗--獲取記憶體Android記憶體
- Android懸浮窗的學習Android
- 類似網路螞蟻的懸浮窗體 (轉)
- 直播平臺原始碼,css移動端設定底部導航欄原始碼CSS
- 線上直播原始碼,npm設定映象的方法 可切換原始碼NPM
- Android 攝像頭預覽懸浮窗,可拖動,可顯示在其他app上方AndroidAPP
- mac好用的軟體推薦-AnyGo for Mac(任意設定虛擬的GPS位置工具)MacGo
- 如何獲取Vivo系統的懸浮窗許可權狀態
- Android 懸浮視窗的實現Android
- 直播電商軟體開發,介面懸浮購物車顯示隱藏
- 微信小程式懸浮可拖動客服元件微信小程式元件
- Android 懸浮窗 System Alert WindowAndroid
- 非侵入式無許可權應用內懸浮窗的實現
- 直播系統原始碼,按鈕圖片和文字位置的各種設定原始碼
- python如何對pyqt5的窗體進行設定?PythonQT
- app直播原始碼,ButtonTextView的背景設定APP原始碼TextView
- 滑鼠懸浮表格行變色程式碼
- QPM 之懸浮窗助力效能優化優化
- HTML 滑鼠放上顯示懸浮視窗HTML
- iOS自帶懸浮窗除錯工具iOS除錯