我想在服务中夸大一个xml布局.你怎么做到这一点?我试图使用inflater和Window Manager,但我认为它不起作用.有什么策略吗?谢谢.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/main" > <LinearLayout android:id="@+id/top" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal" > <FrameLayout android:id="@+id/topLeft" android:layout_width="match_parent" android:layout_height="match_parent" android:tag="topLeft" android:layout_weight="1.0" android:background="#ff3d38"></FrameLayout> <FrameLayout android:id="@+id/topRight" android:layout_width="match_parent" android:layout_height="match_parent" android:tag="topRight" android:layout_weight="1.0" android:background="#fff839"></FrameLayout> </LinearLayout> <LinearLayout android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal" android:id="@+id/bottom" > <FrameLayout android:id="@+id/bottomLeft" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1.0" android:background="#1e22ff"> </FrameLayout> <FrameLayout android:id="@+id/bottomRight" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1.0" android:background="#32ff1f"></FrameLayout>
package com.toksis.pvscreen; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.PixelFormat; import android.os.IBinder; import android.preference.PreferenceManager; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import android.widget.FrameLayout; import android.widget.LinearLayout; public class DragDropButtonMainService extends Service { private LinearLayout main; private LinearLayout firstLayer; private LinearLayout secondLayer; private FrameLayout vTopLeft; private FrameLayout vTopRight; private FrameLayout vBottomLeft; private FrameLayout vBottomRight; private Button mainButton; private ViewGroup mView; private LayoutInflater inflater; public IBinder onBind(Intent intent) { return null; } public void onCreate() { super.onCreate(); createDragDropLayout(); } void createDragDropLayout(){ mainButton = new Button(this); mainButton.setText("Main"); WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.TYPE_PHONE,WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,PixelFormat.TRANSLUCENT ); WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = (ViewGroup) inflater.inflate(R.layout.dragdroplayout,null); vTopLeft = (FrameLayout) mView.findViewById(R.id.topLeft); vTopRight = (FrameLayout) mView.findViewById(R.id.topRight); vBottomLeft = (FrameLayout) mView.findViewById(R.id.bottomLeft); vBottomRight= (FrameLayout) mView.findViewById(R.id.bottomRight); firstLayer = (LinearLayout) mView.findViewById(R.id.top); secondLayer = (LinearLayout) mView.findViewById(R.id.bottom); // main = (LinearLayout) mView.findViewById(R.id.main); // main.addView(firstLayer); // main.addView(secondLayer); // firstLayer.addView(vTopLeft); // firstLayer.addView(vTopRight); // secondLayer.addView(vBottomLeft); // secondLayer.addView(vBottomRight); // wm.addView(mainButton,params); wm.addView(mView,params); Log.d("tok","add mview"); } }
可以在服务上放置图形,代码是:
原文链接:https://www.f2er.com/xml/292820.htmlli = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); wm = (WindowManager) getSystemService(WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams( //WindowManager.LayoutParams.TYPE_INPUT_METHOD | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,// | WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,PixelFormat.TRANSLUCENT); params.gravity = Gravity.RIGHT | Gravity.TOP; myview = li.inflate(R.layout.traslucent,null); wm.addView(myview,params);