編輯:關於Android編程
打開PopupWindow的源碼,你會發現它其實也是通過WindowManager來添加view的。
private void invokePopup(WindowManager.LayoutParams p) {
if (mContext != null) {
p.packageName = mContext.getPackageName();
}
mPopupView.setFitsSystemWindows(mLayoutInsetDecor);
setLayoutDirectionFromAnchor();
mWindowManager.addView(mPopupView, p);
}

點擊右上角的菜單,彈出菜單項,好,我們來實現這個效果。
第一步、設計菜單頁面layout_menu.xml
View popView = getLayoutInflater().inflate(R.layout.layout_menu, null);
LinearLayout layoutShare = (LinearLayout) popView.findViewById(R.id.layout_share);
layoutShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
LinearLayout layoutSetting = (LinearLayout) popView.findViewById(R.id.layout_setting);
layoutSetting.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SettingActivity.class));
if (popup!=null&&popup.isShowing()) {
popup.dismiss();
}
}
});
LinearLayout layoutUpdate = (LinearLayout) popView.findViewById(R.id.layout_update);
layoutUpdate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
PobupWindow popup = new PopupWindow(popView, UIUtils.dip2px(MainActivity.this, 156), UIUtils.dip2px(MainActivity.this, 150));
popup.setFocusable(true);
popup.setOutsideTouchable(true);
popup.setBackgroundDrawable(new BitmapDrawable());
layoutMenuContainer = (LinearLayout) findViewById(R.id.layout_menu);
layoutMenuContainer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
int[] location = new int[2];
v.getLocationOnScreen(location);
if (popup.isShowing()) {
popup.dismiss();
} else {
// popup.showAsDropDown(v);
popup.showAsDropDown(v, -UIUtils.dip2px(MainActivity.this, 129), 0);
// popup.showAtLocation(v,
// Gravity.NO_GRAVITY,location[0]-UIUtils.dip2px(MainActivity.this,100),location[1]+UIUtils.dip2px(MainActivity.this,60));
}
} catch (Exception e) {
if (e != null) {
e.printStackTrace();
}
}
}
});
第三步、AndroidManifest.xml配置權限
Picasso源碼分析
對於android的圖片加載庫,之前用過UIL、volley、Picasso、Glide、Fresco,都是很好的圖片加載庫,之前對於Picasso這個庫研究的比較多一點
android的SharedPreferences使用
需求:模擬android系統應用設置中飛行模式的開啟與關閉,並記住設置的狀態 布局文件:fragment_main.xml 資源文件s
Android四大組件之Service精通
(一)概述本節,我們繼續來研究Service(服務)組件,本節將會學習下Android中的AIDL跨進程通信的一些 概念,並不深入到源碼層次,暫時知道是什麼,會用即可!(
讓Android中RadioGroup不顯示在輸入法上面的辦法
如果你在開發過程中經常使用 RadioGroup,那你是否遇到過下面這種情況每當你點擊EditText彈出輸入法時,RadioGroup總是向上移動到輸入法的上面。你可能