我想在屏幕的左側獲得應用程序菜單欄,而不會干擾已經運行的任務,例如實況壁紙或視頻。它可以實現?如何在當前運行的屏幕上獲取應用程序菜單
0
A
回答
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"
相關問題
- 1. iPhone上當前正在運行的應用程序的屏幕截圖
- 2. 獲取正在運行應用程序的屏幕
- 3. 如何獲取當前在辦公室的應用程序當前運行的應用程序的名稱2013
- 4. 如何去前面的屏幕上,從當前的屏幕在Android應用
- 5. 如何在PoSh中獲取當前正在運行的應用程序
- 6. 如何在C#中找到運行應用程序的屏幕?
- 7. 應用程序崩潰時,在Android的小屏幕和大屏幕上運行
- 8. 當前屏幕上的後臺應用程序Alertdialog
- 9. iPhone - 獲取當前屏幕上的單元格的參考
- 10. 如何獲得當前屏幕上的所有窗口清單?
- 11. 如何從屏幕上的當前編輯器獲取ICopmpilationUnit - Eclipse
- 12. Android:我如何才能在屏幕上獲取當前打開的應用程序名稱
- 13. 獲取JFrame當前所在屏幕的屏幕設備信息
- 14. 當我在模擬器上運行iphone應用程序,屏幕是白色的
- 15. 從我自己的應用程序獲取當前屏幕視圖
- 16. 應用程序僅在部分屏幕上運行?
- 17. 在Win7登錄屏幕上運行應用程序
- 18. 在win8登錄屏幕上運行應用程序
- 19. wpf應用程序在不同屏幕上運行
- 20. 如何在應用程序啓動前獲取主屏幕截圖
- 21. 在Django中,如何從另一個應用程序的模型中獲取當前運行的應用程序?
- 22. 如何獲取當前正在運行的應用程序/安裝的應用程序列表?
- 23. android geocoder ---當我運行應用程序時,屏幕上沒有任何顯示
- 24. 如何獲取在Android主屏幕上看到的應用程序的名稱?
- 25. 運行的所有屏幕上的Android應用程序大小
- 26. 如何在Android的同一屏幕上運行多個應用程序?
- 27. 當屏幕是黑色時運行Android應用程序
- 28. 當屏幕鎖定時自動運行應用程序
- 29. 如何獲取控制檯應用程序的屏幕大小?
- 30. 如何獲取網絡應用程序的屏幕截圖
你想顯示在你的應用程序中的菜單或您的谷歌電視手機?\ – itsrajesh4uguys
的任何部分.. 。 – AndroidMaster