1- # Android OverlayViewManager [ ![ ] ( https://jitpack.io/v/75py/Android-OverlayViewManager.svg )] ( https://jitpack.io/#75py/Android-OverlayViewManager ) [ ![ codebeat badge] ( https://codebeat.co/badges/41006b87-ccb5-4eba-bfc5-57b35cf8335f )] ( https://codebeat.co/projects/github-com-75py-android-overlayviewmanager-master )
1+ # OverlayViewManager [ ![ ] ( https://jitpack.io/v/75py/Android-OverlayViewManager.svg )] ( https://jitpack.io/#75py/Android-OverlayViewManager ) [ ![ codebeat badge] ( https://codebeat.co/badges/41006b87-ccb5-4eba-bfc5-57b35cf8335f )] ( https://codebeat.co/projects/github-com-75py-android-overlayviewmanager-master )
22
3- OverlayViewManager provides simple API for displaying overlay your views .
3+ OverlayViewManager is a lightweight Android library that allows you to overlay views on top of other apps, providing a simple interface to manage and customize these overlays. This library is particularly useful for creating floating widgets or overlays that need to be displayed across the entire system, regardless of the activity or app in the foreground .
44
55Try out [ the sample application on Google Play] ( https://play.google.com/store/apps/details?id=com.nagopy.android.overlayviewmanager.sample ) .
66
7- ## Usage
8-
9- ### Check permissions and request if needed
10-
11- ``` java
12- OverlayViewManager overlayViewManager = OverlayViewManager . getInstance();
13- if (! overlayViewManager. canDrawOverlays()) {
14- overlayViewManager. showPermissionRequestDialog(getSupportFragmentManager(), R . string. app_name);
15- }
16- ```
17-
18- ### Create OverlayView instance
19-
20- ``` java
21- OverlayView overlayView = overlayViewManager. newOverlayView(yourView);
22- ```
23-
24- ### Start and stop overlay
25-
26- ``` java
27- // Start overlay
28- overlayView. show();
29-
30- // Stop overlay
31- overlayView. hide();
32- ```
33-
34- <img src =" images/anime/show_hide.gif " width =" 270 " height =" 480 " alt =" " >
35-
36-
37- ### OverlayView#setTouchable(boolean)
38-
39- ``` java
40- OverlayView overlayView = overlayViewManager. newOverlayView(yourView)
41- // .setTouchable(false) default
42- .show();
43-
44- overlayView. setTouchable(true )
45- .update();
46- ```
47-
48- <img src =" images/anime/setTouchable.gif " width =" 270 " height =" 480 " alt =" " >
49-
50-
51- ### OverlayView#setDraggable(boolean)
52-
53- ``` java
54- OverlayView overlayView = overlayViewManager. newOverlayView(yourView)
55- // .setDraggable(false) default
56- .show();
57-
58- overlayView. setDraggable(true )
59- .update();
60- ```
61-
62- <img src =" images/anime/setDraggable.gif " width =" 270 " height =" 480 " alt =" " >
63-
64-
65- ### OverlayView#setWidth(int)
66-
67- ``` java
68- OverlayView overlayView = overlayViewManager. newOverlayView(yourView)
69- // .setWidth(WRAP_CONTENT) default
70- .show();
71-
72- overlayView. setWidth(MATCH_PARENT )
73- .update();
7+ ## Features
748
75- overlayView. setWidth(400 )
76- .update();
77- ```
78-
79- <img src =" images/anime/setWidth.gif " width =" 270 " height =" 480 " alt =" " >
80-
81- ### Other functions
82-
83- * OverlayViewManager
84- * OverlayView<View > newOverlayView(View, Activity)
85- * int getDisplayWidth()
86- * int getDisplayHeight()
87- * OverlayView
88- * setHeight(int)
89- * setGravity(int)
90- * setGravity(int)
91- * and more
9+ - ** Easy to Use** : Simple API to create and manage overlay views.
10+ - ** Customizable** : Supports various customization options like touchable, draggable, and view positioning.
11+ - ** Lifecycle Management** : Manages the overlay view lifecycle based on activity or application context.
12+ - ** Permission Handling** : Provides methods to check and request overlay permissions.
9213
9314## Installation
9415
95- ### Download
9616
9717Latest version: [ ![ ] ( https://jitpack.io/v/75py/Android-OverlayViewManager.svg )] ( https://jitpack.io/#75py/Android-OverlayViewManager )
9818
@@ -114,66 +34,125 @@ dependencies {
11434}
11535```
11636
117- ### Setup
37+ ## Usage
38+
39+ ### Initialization
11840
119- Call OverlayViewManager.init() in the onCreate() of your Application class.
120- ``` java
121- public class YourApplication extends Application {
41+ Initialize the ` OverlayViewManager ` in your ` Application ` class:
12242
43+ ``` java
44+ public class MyApplication extends Application {
12345 @Override
12446 public void onCreate () {
12547 super . onCreate();
12648 OverlayViewManager . init(this );
12749 }
128-
12950}
13051```
13152
132- ## DebugOverlayTree
53+ ### Creating an Overlay View
13354
134- An option for Timber users.
135- DebugOverlayTree shows debug logs by OverlayView.
55+ To create an overlay view, use the ` OverlayViewManager ` to get an instance of ` OverlayView ` :
13656
137- ``` groovy
138- dependencies {
139- implementation 'com.github.75py.Android-OverlayViewManager:overlayviewmanager-opt-timber:2.0.0-alpha2'
140- implementation 'com.jakewharton.timber:timber:4.7.1'
141- }
57+ ``` java
58+ OverlayViewManager overlayViewManager = OverlayViewManager . getInstance();
59+ TextView overlayTextView = new TextView (this );
60+ overlayTextView. setText(" Hello, World!" );
61+
62+ OverlayView<TextView > overlayView = overlayViewManager. newOverlayView(overlayTextView);
14263```
14364
65+ ### Displaying the Overlay View
66+
67+ To display the overlay view, call the ` show ` method:
68+
14469``` java
145- public class SampleApplication extends Application {
70+ overlayView. show();
71+ ```
14672
147- @Override
148- public void onCreate () {
149- super . onCreate();
73+ ### Hiding the Overlay View
15074
151- OverlayViewManager . init( this );
75+ To hide the overlay view, call the ` hide ` method:
15276
153- if ( BuildConfig . DEBUG ) {
154- // Initialize and plant DebugOverlayTree instance
155- Timber . plant( DebugOverlayTree . init( this ));
156- }
157- }
77+ ``` java
78+ overlayView . hide();
79+ ```
80+
81+ < img src = " images/anime/show_hide.gif " width = " 270 " height = " 480 " alt = " " >
15882
83+ ### Customizing the Overlay View
84+
85+ You can customize various properties of the overlay view, such as its position, size, and touch behavior:
86+
87+ ``` java
88+ overlayView
89+ .setWidth(ViewGroup . LayoutParams . WRAP_CONTENT )
90+ .setHeight(ViewGroup . LayoutParams . WRAP_CONTENT )
91+ .setTouchable(true )
92+ .setDraggable(true )
93+ .setGravity(Gravity . TOP | Gravity . START )
94+ .setX(100 )
95+ .setY(100 )
96+ .setAlpha(0.8f );
97+ ```
98+
99+ <img src =" images/anime/setTouchable.gif " width =" 270 " height =" 480 " alt =" " >
100+
101+ <img src =" images/anime/setDraggable.gif " width =" 270 " height =" 480 " alt =" " >
102+
103+ <img src =" images/anime/setWidth.gif " width =" 270 " height =" 480 " alt =" " >
104+
105+ ### Handling Permissions
106+
107+ To check if the app has overlay permissions, use the ` canDrawOverlays ` method:
108+
109+ ``` java
110+ if (! overlayViewManager. canDrawOverlays()) {
111+ // Request permission
112+ overlayViewManager. requestOverlayPermission();
159113}
160114```
161115
116+ To show a permission request dialog:
117+
118+ ``` java
119+ overlayViewManager. showPermissionRequestDialog(getSupportFragmentManager(), R . string. app_name);
120+ ```
121+
122+ ## Example
123+
124+ Here is a complete example of how to use the ` OverlayViewManager ` :
125+
162126``` java
163- public class SampleTimberActivity extends AppCompatActivity {
127+ public class MainActivity extends AppCompatActivity {
164128
165129 @Override
166- protected void onCreate (@Nullable Bundle savedInstanceState ) {
130+ protected void onCreate (Bundle savedInstanceState ) {
167131 super . onCreate(savedInstanceState);
168132
169- // Register this Activity
170- DebugOverlayTree . getInstance() . register( this );
133+ // Initialize OverlayViewManager
134+ OverlayViewManager . init(getApplication() );
171135
172- setContentView(R . layout. activity_sample_timber);
136+ // Create a new overlay view
137+ TextView overlayTextView = new TextView (this );
138+ overlayTextView. setText(" Hello, Overlay!" );
173139
174- Timber . d(" onCreate" );
175- }
140+ OverlayView<TextView > overlayView = OverlayViewManager . getInstance(). newOverlayView(overlayTextView);
141+
142+ // Set properties
143+ overlayView
144+ .setWidth(ViewGroup . LayoutParams . WRAP_CONTENT )
145+ .setHeight(ViewGroup . LayoutParams . WRAP_CONTENT )
146+ .setTouchable(true )
147+ .setDraggable(true )
148+ .setGravity(Gravity . TOP | Gravity . START )
149+ .setX(100 )
150+ .setY(100 )
151+ .setAlpha(0.8f );
176152
153+ // Show the overlay view
154+ overlayView. show();
155+ }
177156}
178157```
179158
0 commit comments