国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android仿微信長按菜單效果

2019-10-22 18:18:08
字體:
來源:轉載
供稿:網(wǎng)友

本文實例為大家分享了Android仿微信長按菜單展示的具體代碼,供大家參考,具體內容如下

FloatMenu

A menu style pop-up window that mimics WeChat。仿微信的長按菜單。

效果如下

Android,微信,菜單

引入方法:

Github地址:https://github.com/JavaNoober/FloatMenu

dependencies {  ....  compile 'com.noober.floatmenu:common:1.0.2'}

使用說明

使用方法1:

Activity 重寫dispatchTouchEvent,并且新建一個Point對象,show的時候傳入改對象

 private Point point = new Point(); @Override public boolean dispatchTouchEvent(MotionEvent ev) {  if(ev.getAction() == MotionEvent.ACTION_DOWN){   point.x = (int) ev.getRawX();   point.y = (int) ev.getRawY();  }  return super.dispatchTouchEvent(ev); }

調用:

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  @Override  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   FloatMenu floatMenu = new FloatMenu(MainActivity.this);   floatMenu.items("菜單1", "菜單2", "菜單3");   floatMenu.show(point);  } });

使用方法2:

不需要重寫dispatchTouchEvent,但是需要在初始化的時候傳入所點擊的view,floatment初始化必須在點擊事件外部

 final FloatMenu floatMenu = new FloatMenu(this, btn1);  floatMenu.items("菜單1", "菜單2", "菜單3");  floatMenu.setOnItemClickListener(new FloatMenu.OnItemClickListener() {   @Override   public void onClick(View v, int position) {    Toast.makeText(MainActivity.this, "菜單"+position, Toast.LENGTH_SHORT).show();   }  });

設置菜單的方式:

1.代碼設置

floatMenu.items("菜單1", "菜單2", "菜單3");  ...  List<String> list = new ArrayList<>();  list.add("菜單1"); list.add("菜單2"); list.add("菜單3");  floatMenu.items(list);

2.menu.xml設置

<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto">   <item app:menu_title="Send to Chat" app:icon = "@drawable/brush"></item>   <item    app:menu_title="Add to Favorites" app:icon = "@drawable/barrage"/>   <item    app:menu_title="Delete" app:icon = "@drawable/clock"/>   <item    app:menu_title="More" app:icon = "@drawable/collection"/></menu> floatMenu.inflate(R.menu.popup_menu);

方法都提供參數(shù)設置菜單的寬度:

public void items(List<MenuItem> itemList, int itemWidth)public void items(int itemWidth, String... items) public void inflate(int menuRes, int itemWidth)

創(chuàng)建菜單:

注意點:

顯示floatmenu有兩種方法:

floatmenu.show(point)與floatmenu.show()的區(qū)別

區(qū)別在于,創(chuàng)建floatmenu對象的位置,如果使用第2種方法,創(chuàng)建floatmenu必須在點擊事件的外面

第一種則沒有這種限制,如下所示:

final FloatMenu floatMenu = new FloatMenu(this, btn2);floatMenu.inflate(R.menu.popup_menu);floatMenu.setOnItemClickListener(new FloatMenu.OnItemClickListener() { @Override public void onClick(View v, int position) {  Toast.makeText(MainActivity.this, "菜單"+position, Toast.LENGTH_SHORT).show(); }});listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  @Override  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   FloatMenu floatMenu = new FloatMenu(MainActivity.this);   floatMenu.items("菜單1", "菜單2", "菜單3");   floatMenu.show(point);  } });

new FloatMenu(this, view) 與 new FloatMenu(this)區(qū)別

使用第二種方法創(chuàng)建對象在,必須重寫dispatchTouchEvent

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 白水县| 金门县| 神池县| 嘉定区| 荆门市| 青神县| 绥棱县| 靖江市| 涞源县| 即墨市| 伊通| 凤阳县| 塘沽区| 元阳县| 宝丰县| 樟树市| 开封县| 大庆市| 沙湾县| 松滋市| 鸡西市| 舞阳县| 辽宁省| 耒阳市| 广安市| 堆龙德庆县| 永州市| 思茅市| 银川市| 乌拉特前旗| 汪清县| 克拉玛依市| 德令哈市| 西充县| 龙岩市| 大新县| 渭南市| 伽师县| 萨迦县| 义乌市| 吉水县|