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-12
Android開(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-11
Android實(shí)現(xiàn)圖片轉(zhuǎn)高斯模糊以及高斯模糊布局
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片轉(zhuǎn)高斯模糊的方法,以及高斯模糊布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Android常用定時(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-09
Android文本視圖TextView實(shí)現(xiàn)聊天室效果
這篇文章主要介紹了Android文本視圖TextView實(shí)現(xiàn)聊天室效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Android 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-09
Android ImageButton自定義按鈕的按下效果的代碼實(shí)現(xiàn)方法分享
這篇文章主要介紹了Android ImageButton自定義按鈕的按下效果的代碼實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02
Android 進(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-07
Android百度地圖應(yīng)用之創(chuàng)建顯示地圖
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用之創(chuàng)建顯示地圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06

