2013-01-09 21 views

回答

0

您可以使用NewPopupMenu libarary from github

它會在任何列表器上的屏幕上的任何位置創建即時彈出菜單。

您只需要下載庫,並提取它的源文件複製到項目, 和修改代碼,在該行mPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0); ,並把任何你想在您的菜單。

0

請使用此服務類。通過從您的活動中啓動此服務,您將在手機屏幕上獲得一張圖片。通過調整,你可以設置任何地方的移動設備。並且您可以隨時停止服務將其刪除。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Date; 
import android.app.Service; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.content.ServiceConnection; 
import android.content.res.Configuration; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.graphics.PixelFormat; 
import android.os.Environment; 
import android.os.IBinder; 
import android.os.RemoteException; 
import android.view.Gravity; 
import android.view.KeyEvent; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.view.ViewDebug; 
import android.view.ViewGroup; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class HUD extends Service { 
    HUDView mView; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     mView = new HUDView(this); 
     mView.setId(R.id.button); 
     WindowManager.LayoutParams paramsOrg = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 

       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 




     WindowManager.LayoutParams params = new WindowManager.LayoutParams(100, 100, 2007, 8, -3); 
     Button bb=new Button(this); 
     bb.setText("Button"); 
     bb.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       System.out.println("Clicked----><<<<<<<"); 
      } 
     }); 

     bb.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       System.out.println("Touched =----- > "); 
       return false; 
      } 
     }); 

     params.gravity = Gravity.RIGHT | Gravity.TOP; 
     params.setTitle("Load Average"); 
     WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 




     wm.addView(bb, params); 



    } 


    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     //Toast.makeText(getBaseContext(),"onDestroy", Toast.LENGTH_LONG).show(); 
     if(mView != null) 
     { 
      ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView); 
      mView = null; 
     } 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      //Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
      restartService(); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      //Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
      restartService(); 
     } 

    } 

    private void restartService() { 
     // TODO Auto-generated method stub 
     stopService(new Intent(getBaseContext(), HUD.class)); 
     startService(new Intent(getBaseContext(), HUD.class)); 
    } 
} 

class HUDView extends ViewGroup { 
    private Paint mLoadPaint; 
    private Float XMAX=280f; 
    private Float YMAX=26f; 
    private int XPOS=0;  

    public HUDView(Context context) { 
     super(context); 


     mLoadPaint = new Paint(); 
     mLoadPaint.setAntiAlias(true); 
     mLoadPaint.setTextSize(10); 
     mLoadPaint.setARGB(255, 255, 0, 0); 


     context.bindService(intents, aslServiceConnection, Context.BIND_AUTO_CREATE); 


     WindowManager wind = (WindowManager)context.getSystemService(Service.WINDOW_SERVICE); 
     XPOS=wind.getDefaultDisplay().getWidth(); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     //canvas.drawText("Hello World", 5, 15, mLoadPaint); 
     //canvas.drawText("Hello World", 100, 100, mLoadPaint); 
     Bitmap tileImage = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

     canvas.drawBitmap(tileImage, XPOS-35, 0, null); 
     XMAX=Float.parseFloat(""+(XPOS-35)); 

    } 

    @Override 
    protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) { 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     Float x=event.getX(); 
     Float y=event.getY(); 
     System.out.println("Mview has been touched ---> "+x +" x "+y); 
     if(x > 0 && y > 0) 
     { 
      if(x > XMAX && y < YMAX){ 

       TakeMyScreen(getContext()); 


      } 

     } 



     return true; 
    } 




    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 
     return super.onKeyDown(keyCode, event); 
    } 


} 
0

必須使用權限到您的項目清單,否則窗口一直沒有重視

android:name="android.permission.SYSTEM_ALERT_WINDOW" 
相關問題