मुझे एक ही समस्या थी और यहां अगर मैंने इसे हल किया। पहले समय मैं एंड्रॉयड के मूल PopupWindow
वर्ग का उपयोग करने की कोशिश की है, लेकिन बाद में मैं इस तरह की तरह WindowManager
उपयोग करने का फैसला:
public class MyService extends Service {
private View mView;
private WindowManager.LayoutParams mParams;
private WindowManager mWindowManager;
@Override
public void onCreate() {
super.onCreate();
mView = new MyLoadView(this);
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT, 150, 10, 10,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.CENTER;
mParams.setTitle("Window test");
mWindowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mView, mParams);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
((WindowManager)getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
public class MyLoadView extends View {
private Paint mPaint;
public MyLoadView(Context context) {
super(context);
mPaint = new Paint();
mPaint.setTextSize(50);
mPaint.setARGB(200, 200, 200, 200);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("test test test", 0, 100, mPaint);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
और तुम प्रयोजन द्वारा इस सेवा के वर्ग कॉल कर सकते हैं:
intent = new Intent(mContext, MyService.class);
if (intent != null) {
getContext().startService(intent);
}
इसके अलावा, अपने मैनिफ़ेस्ट फ़ाइल में अनुमति सेट:,
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
मैं Android के LoadAverageService.java
वर्ग संदर्भित एक अंत में मैंने सेवा से एक पॉपअप विंडो बनाई! यह एक बहुत ही सरल उदाहरण है, इसलिए यदि आप जटिल कार्यों को विकसित करना चाहते हैं तो आपको कुछ और जोड़ने की आवश्यकता हो सकती है। उम्मीद है कि यह आपको और दूसरों की मदद करेगा।
स्रोत
2013-04-17 06:37:15
धन्यवाद। क्या आप थोड़ा और विशिष्ट हो सकते हैं? मेरा लक्ष्य पॉपअप विंडो को किसी गतिविधि के बिना सेवा से लॉन्च करना है। विशेष रूप से, मैं पॉपअप विंडो लॉन्च करना चाहता हूं और यह अन्य सभी विंडोज़ के शीर्ष पर बैठता है क्योंकि उपयोगकर्ता सामान्य रूप से फोन का उपयोग करता है। क्या यह किया जा सकता है? – emi
मुझे लगता है कि आपको वैसे भी एक गतिविधि शुरू करनी है। आप इसे वर्तमान उपयोगकर्ता स्क्रीन के शीर्ष पर संवाद की तरह दिखने के लिए थीम। डायलॉग थीम असाइन कर सकते हैं। बस एक डिस्यूशन [यहां] (http://stackoverflow.com/questions/2394477/make-android-activity-looks-like-dialog) मिला। – slkorolev
क्या आप सेवा से गतिविधि एक्स शुरू करना चाहते हैं और गतिविधि एक्स को संवाद लॉन्च करना है? – emi