編輯:關於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配置權限
對於android的圖片加載庫,之前用過UIL、volley、Picasso、Glide、Fresco,都是很好的圖片加載庫,之前對於Picasso這個庫研究的比較多一點
需求:模擬android系統應用設置中飛行模式的開啟與關閉,並記住設置的狀態 布局文件:fragment_main.xml 資源文件s
(一)概述本節,我們繼續來研究Service(服務)組件,本節將會學習下Android中的AIDL跨進程通信的一些 概念,並不深入到源碼層次,暫時知道是什麼,會用即可!(
如果你在開發過程中經常使用 RadioGroup,那你是否遇到過下面這種情況每當你點擊EditText彈出輸入法時,RadioGroup總是向上移動到輸入法的上面。你可能