短視訊系統原始碼,關於懸浮窗的縮放、拖動等應用
短視訊系統原始碼,關於懸浮窗的縮放、拖動等應用實現的相關程式碼
縮放方法
縮放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; // 手指的上一個位置xprivate 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,表示消費這個觸控事件。
event.getX()
和
event.getY()
獲取到的是當前View的觸控座標。
event.getRawX()
和
event.getRawY()
獲取到的是螢幕的觸控座標。即觸控點在螢幕上的位置。
以上就是 短視訊系統原始碼,關於懸浮窗的縮放、拖動等應用實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2850555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 短視訊app原始碼,連麥時最小化出現可移動懸浮窗APP原始碼
- Android 為應用增加可移動的懸浮視窗Android
- 懸浮窗的一種實現 | Android懸浮窗Window應用Android
- 直播原始碼,懸浮窗滾動漸變色效果原始碼
- 直播短視訊原始碼短視訊APP短視訊帶貨系統多商戶直播原始碼APP
- 浮動應用程式視窗怎麼用?
- 基於Android 4.4 開發的多視窗系統 開放原始碼Android原始碼
- 短視訊系統原始碼,各個視訊正常排序排列原始碼排序
- Android 懸浮視窗的實現Android
- 固定位置的Js懸浮視窗JS
- Android應用內懸浮窗的實現方案Android
- 短視訊直播原始碼,拖動滑塊實現圖片驗證效果原始碼
- 滑鼠懸浮圖片實現縮放效果
- 關於短視訊平臺原始碼動態廣場自動播放gif動圖原始碼
- 微信小程式懸浮可拖動客服元件微信小程式元件
- 短視訊SEO霸屏系統原始碼,抖音獲客系統軟體,短視訊賬號矩陣系統。原始碼矩陣
- HTML 滑鼠放上顯示懸浮視窗HTML
- CSS3 滑鼠懸浮div旋轉縮放CSSS3
- CSS3標懸浮圓形縮放效果CSSS3
- 短視訊直播系統開發直播短視訊程式搭建短視訊互動直播
- Android懸浮窗TYPE_TOAST小結: 原始碼分析AndroidAST原始碼
- Android 懸浮窗Android
- 短視訊系統原始碼,直播間實現彈幕的自動傳送原始碼
- 短視訊系統原始碼,上傳圖片自適應拉伸符合高度原始碼
- 滑鼠懸浮div實現旋轉縮放效果程式碼例項
- Andorid 任意介面懸浮窗,實現懸浮窗如此簡單
- 短視訊系統原始碼,幾種常見的單例模式原始碼單例模式
- 短視訊系統原始碼,平臺的時間處理方式原始碼
- 直播軟體原始碼,設定懸浮窗並可進行任意位置的移動原始碼
- 小程式上是實現拖動懸浮圖示
- 短視訊系統原始碼,點選螢幕空白處鍵盤不自動收起原始碼
- 短視訊app原始碼,提示以按鈕彈窗的形式實現APP原始碼
- 讓Win7系統拖動中的視窗不再透明的方法Win7
- 短視訊商城系統,px如何轉換rem,且可等比例縮放頁面REM
- 短視訊系統原始碼,android 真正的全屏沉浸式體驗原始碼Android
- 如何獲取Vivo系統的懸浮窗許可權狀態
- 短視訊系統原始碼,動態輸入文字到達行上限自動換行原始碼
- Android 攝像頭預覽懸浮窗,可拖動,可顯示在其他app上方AndroidAPP