Android仿微信、qq點(diǎn)擊右上角加號(hào)彈出操作框
Android仿微信、qq點(diǎn)擊右上角加號(hào)彈出操作框,先上圖,類(lèi)似于下圖這種,點(diǎn)擊加號(hào),會(huì)彈出一個(gè)對(duì)話框,如下圖:
微信:
自己實(shí)現(xiàn):
接下來(lái),我們來(lái)實(shí)現(xiàn)此功能:
其實(shí),實(shí)現(xiàn)原理就是,點(diǎn)擊“+”號(hào),彈出一個(gè)PopupWindow。
1、寫(xiě)一個(gè)用于展示在ToolBar中的 menu文件,如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/btn_msg" android:icon="@drawable/ic_notifications_none" android:title="消息" app:showAsAction="ifRoom" /> </menu>
2、先添加 “+” ,我的項(xiàng)目里使用的是ToolBar,我給ToolBar添加菜單,在Activity中重寫(xiě)方法onCreateOptionsMenu,如下圖:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_index_msg, menu); return super.onCreateOptionsMenu(menu); }
到這里,“+”號(hào),已經(jīng)出現(xiàn)了。
3、給menu添加點(diǎn)擊事件,并初始化PopupWindow,彈出自定義的PopupWindow,如下:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.btn_msg: View popupView = IndexActivity.this.getLayoutInflater().inflate(R.layout.popupwindow, null); final PopupWindow window = new PopupWindow(popupView, 300, 220); ListView lv_msg = (ListView) popupView.findViewById(R.id.lv_msg); MsgAdapter msgAdapter = new MsgAdapter(context, msgBeans); lv_msg.setAdapter(msgAdapter); lv_msg.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (window.isShowing()) { window.dismiss(); } switch (position) { case 0: if (myApplication.isOnline()) { NoticeMainActivity.startActivity(IndexActivity.this); } else { Toast.makeText(IndexActivity.this, "離線狀態(tài)不能使用此功能", Toast.LENGTH_SHORT).show(); } break; case 1: if (myApplication.isOnline()) { TaskMainActivity.startActivity(IndexActivity.this); } else { Toast.makeText(IndexActivity.this, "離線狀態(tài)不能使用此功能", Toast.LENGTH_SHORT).show(); } break; default: break; } } }); window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#F8F8F8"))); window.setFocusable(true); window.setOutsideTouchable(true); window.update(); //設(shè)置顯示位置 window.showAsDropDown(msgView, 0, 0);//msgView就是我們menu中的btn_msg break; default: break; } return super.onOptionsItemSelected(item); }
4、在上面3中有一個(gè)布局popupwindow,我項(xiàng)目中用到的時(shí)顯示通知,我在布局中用了ListView來(lái)顯示內(nèi)容。這里也可以把布局寫(xiě)成固定布局,根據(jù)自己的需求充分發(fā)揮。下面貼出來(lái)popupwindow布局,如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/lv_msg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:divider="@null" android:scrollbars="none" /> </LinearLayout>
5、到這里就實(shí)現(xiàn)了我們想要的功能,結(jié)果圖:
6、通知和任務(wù)右邊顯示的信息條數(shù),是用的shape xml文件進(jìn)行約束的,也可以使用BadgeView實(shí)現(xiàn),這里就不過(guò)多說(shuō)明了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android中使用PopupWindow 仿微信點(diǎn)贊和評(píng)論彈出
- Android自定義仿微信PopupWindow效果
- android自定義popupwindow仿微信右上角彈出菜單效果
- Android仿微信支付密碼彈出層功能
- Android仿微信進(jìn)度彈出框的實(shí)現(xiàn)方法
- Android中微信小程序開(kāi)發(fā)之彈出菜單
- 微信瀏覽器彈出框滑動(dòng)時(shí)頁(yè)面跟著滑動(dòng)的實(shí)現(xiàn)代碼(兼容Android和IOS端)
- Android 仿微信朋友圈點(diǎn)贊和評(píng)論彈出框功能
- Android仿微信滑動(dòng)彈出編輯、刪除菜單效果、增加下拉刷新功能
- Android仿微信右上角點(diǎn)擊加號(hào)彈出PopupWindow
相關(guān)文章
解決Android Studio4.1沒(méi)有Gsonfomat插件,Plugin “GsonFormat” is inco
這篇文章主要介紹了解決Android Studio4.1沒(méi)有Gsonfomat插件,Plugin “GsonFormat” is incompatible (supported only in IntelliJ IDEA)的問(wèn)題 ,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-12-12Android開(kāi)發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類(lèi)
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類(lèi),可實(shí)現(xiàn)計(jì)算手機(jī)內(nèi)部與外部的總存儲(chǔ)空間、可用存儲(chǔ)空間等功能,需要的朋友可以參考下2017-11-11Android實(shí)現(xiàn)圖片轉(zhuǎn)高斯模糊以及高斯模糊布局
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片轉(zhuǎn)高斯模糊的方法,以及高斯模糊布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android常用定時(shí)器的實(shí)現(xiàn)方式
我們?cè)陂_(kāi)發(fā)中時(shí)常需要寫(xiě)一些定時(shí)的任務(wù),比如每5秒執(zhí)行一次,下面這篇文章主要給大家介紹了關(guān)于Android常用定時(shí)器的實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Android文本視圖TextView實(shí)現(xiàn)聊天室效果
這篇文章主要介紹了Android文本視圖TextView實(shí)現(xiàn)聊天室效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05Android Jetpack組件支持庫(kù)DataBinding與ViewModel與LiveData及Room
Jetpack是一個(gè)由多個(gè)技術(shù)庫(kù)組成的套件,可幫助開(kāi)發(fā)者遵循最佳做法,減少樣板代碼并編寫(xiě)可在各種Android版本和設(shè)備中一致運(yùn)行的代碼,讓開(kāi)發(fā)者精力集中編寫(xiě)重要的代碼2022-09-09Android ImageButton自定義按鈕的按下效果的代碼實(shí)現(xiàn)方法分享
這篇文章主要介紹了Android ImageButton自定義按鈕的按下效果的代碼實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02Android 進(jìn)度條自動(dòng)前進(jìn)效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 進(jìn)度條自動(dòng)前進(jìn)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Android百度地圖應(yīng)用之創(chuàng)建顯示地圖
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用之創(chuàng)建顯示地圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06