編輯:關於android開發
iPhone有個很好用的白色圓點,今天就來研究下Android中的懸浮框,這裡主要是實現一個快捷鍵的功能,當然也可以在懸浮框中做想做的事!
懸浮窗的實現主要是通過WindowManager實現,當然WindowManager只是一個接口,想了解源碼的同志們可以去看WindowManagerImpl,懸浮框主要是通過WindowManager中的addView,updateView,removeView實現
WindowManager.LayoutParams這個類用於提供懸浮窗所需的參數
WindowManager.LayoutParams參數說明:
了解這些參數基本就能創建一個懸浮框了
private void createFloatView() {
mWindowManager = (WindowManager) getApplication().getSystemService(getApplication().WINDOW_SERVICE);
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
wmParams.gravity = Gravity.LEFT | Gravity.TOP;
wmParams.x = 100;
wmParams.y = 100;
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
LayoutInflater inflater = LayoutInflater.from(getApplication());
mFloatLayout = (LinearLayout) inflater.inflate(R.layout.layout_float_window, null);
mWindowManager.addView(mFloatLayout, wmParams);
mFloatView = (ImageView) mFloatLayout.findViewById(R.id.img_float_window);
mFloatView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
wmParams.x = (int) event.getRawX() - mFloatView.getMeasuredWidth() / 2;
wmParams.y = (int) event.getRawY() - mFloatView.getMeasuredHeight() / 2 - 25;
mWindowManager.updateViewLayout(mFloatLayout, wmParams);
return false;
}
});
mFloatView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FloatWindowService.this, SearchActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
}
});
}
if (mFloatLayout != null) {
mWindowManager.removeView(mFloatLayout);
}
以上就是懸浮框的過程,當然使用系統window必須要申請權限!
Android PopupWindows使用,androidpopupwindow 源碼測試示例: package com.example.pop
Android Studio第一次提交git使用,androidgit安裝: Git客戶端網址:http://git-scm.com/download/
MVP模式在Android項目中的使用,mvp模式android項目 以前在寫項目的時候,沒有過多考慮架構模式的問題,因為之前一直做J2EE開發,而J2EE都是采用MV
Android基於監聽的事件處理機制 Android提供了強大的事件處理機制,主要包括兩大類: 1,基於監聽的事件處理機制:主要做法是為Android界面組件綁定特定
android Unable toexecute dex: method