Advertisement
Guest User

Untitled

a guest
Sep 26th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. public class MainActivity extends Activity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6.  
  7. startService(new Intent(this, ServiceViewManager.class));
  8.  
  9. setUI();
  10. }
  11.  
  12. private void setUI()
  13. {
  14. LinearLayout layout = new LinearLayout(this);
  15.  
  16. layout.setOrientation(LinearLayout.VERTICAL);
  17.  
  18. layout.addView(createLoadUrlInvisible());
  19. layout.addView(createShowWebView());
  20.  
  21. this.setContentView(layout);
  22. }
  23.  
  24.  
  25. private Button createLoadUrlInvisible()
  26. {
  27. Button button = new Button(this);
  28.  
  29. button.setText("LoadUrlInvisible (Click first)");
  30.  
  31. button.setOnClickListener(new View.OnClickListener() {
  32. @Override
  33. public void onClick(View view) {
  34.  
  35. WebPageServiceView.instance().loadUrlInvisible();
  36.  
  37. }
  38. });
  39.  
  40. return button;
  41. }
  42.  
  43.  
  44. private Button createShowWebView()
  45. {
  46. Button button = new Button(this);
  47.  
  48. button.setText("ShowWebView (Click second)");
  49.  
  50. button.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View view) {
  53.  
  54. WebPageServiceView.instance().setVisibility(View.VISIBLE);
  55. }
  56. });
  57.  
  58. return button;
  59. }
  60. }
  61.  
  62.  
  63.  
  64.  
  65. public class ServiceViewManager extends Service {
  66.  
  67. private static ServiceViewManager inst = null;
  68.  
  69. @Nullable
  70. @Override
  71. public IBinder onBind(Intent intent) {
  72. return null;
  73. }
  74.  
  75. public static ServiceViewManager Instance()
  76. {
  77. return inst;
  78. }
  79.  
  80. @Override
  81. public int onStartCommand(Intent intent, int flags, int startId) {
  82.  
  83. super.onStartCommand(intent, flags, startId);
  84.  
  85. inst = this;
  86.  
  87. return START_NOT_STICKY;
  88. }
  89.  
  90. @Override
  91. public void onCreate() {
  92. super.onCreate();
  93. }
  94.  
  95. @Override
  96. public void onDestroy() {
  97.  
  98. inst = null;
  99. super.onDestroy();
  100. }
  101.  
  102.  
  103. public void add(final View view, final WindowManager.LayoutParams params)
  104. {
  105. ((WindowManager)getSystemService(Service.WINDOW_SERVICE)).addView(view, params);
  106. }
  107. }
  108.  
  109.  
  110.  
  111. public class WebPageServiceView extends FrameLayout {
  112.  
  113. private static WebPageServiceView inst = null;
  114.  
  115. public WebPageServiceView() {
  116. super(ServiceViewManager.Instance());
  117. }
  118.  
  119.  
  120. public static WebPageServiceView instance() {
  121.  
  122. if(inst == null)
  123. inst = new WebPageServiceView();
  124.  
  125. return inst;
  126. }
  127.  
  128. private void addViewToService()
  129. {
  130. WindowManager.LayoutParams serviceParams = new WindowManager.LayoutParams();
  131. serviceParams.x = 0;
  132. serviceParams.y = 0;
  133.  
  134. serviceParams.type = WindowManager.LayoutParams.TYPE_PHONE;
  135. serviceParams.flags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
  136. serviceParams.format = PixelFormat.TRANSPARENT;
  137.  
  138. ServiceViewManager.Instance().add(this, serviceParams);
  139. }
  140.  
  141.  
  142. private void addWebViewAndLoadUrl()
  143. {
  144. WebView webView = new WebView(getContext());
  145.  
  146. webView.loadUrl("http://naver.com");
  147. webView.setWebViewClient(new WebViewClient());
  148.  
  149. this.addView(webView);
  150. }
  151.  
  152.  
  153. public void loadUrlInvisible() {
  154.  
  155. addViewToService();
  156.  
  157. addWebViewAndLoadUrl();
  158.  
  159. setVisibility(INVISIBLE);
  160. }
  161.  
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement