简介

Hover,这些天大家讨论的比较多的一个开源库,google组织下的一个项目,但是项目介绍中又出现了

Why ?

但是这和我又有什么关系,我是来看源码的,优秀的开源代码,不关心出处。 …………_

官网Demo

##简单使用

  1. 自定义MyNavigationContent,用来显示每个不同的Tab下的内容页
public class MyNavigationContent extends FrameLayout implements NavigatorContent {private ImageView imageViewLogo;private TextView textViewTitle;private int imageResId;private String title;public MyNavigationContent(@NonNull Context context, int imageRedId, String title) {super(context);this.imageResId = imageRedId;this.title = title;init();}private void init() {LayoutInflater.from(getContext()).inflate(R.layout.view_content_text_icon, this, true);imageViewLogo = (ImageView) findViewById(R.id.iv_logo);textViewTitle = (TextView) findViewById(R.id.tv_title);imageViewLogo.setImageResource(imageResId);textViewTitle.setText(title);}@NonNull@Overridepublic View getView() {return this;}@Overridepublic void onShown(@NonNull Navigator navigator) {}@Overridepublic void onHidden() {}
}

2.自定义HoverMenuAdapter,用于将tab和NavigationContent联系起来

public class HoverDemoMenuAdapter implements HoverMenuAdapter {private final Context mContext;private final List<String> mTabIds;private final Map<String, NavigatorContent> mData;private final Set<ContentChangeListener> mContentChangeListeners = new HashSet<>();public HoverDemoMenuAdapter(@NonNull Context context, @NonNull Map<String, NavigatorContent> data) throws IOException {mContext = context;mData = data;mTabIds = new ArrayList<>();for (String tabId : mData.keySet()) {mTabIds.add(tabId);}}@Overridepublic int getTabCount() {return mTabIds.size();}@Overridepublic View getTabView(int index) {ImageView imageView = new ImageView(mContext);imageView.setBackgroundResource(R.drawable.bg);switch (index) {case 0:        imageView.setImageResource(R.drawable.bike);break;case 1:        imageView.setImageResource(R.drawable.run);break;case 2:        imageView.setImageResource(R.drawable.android);break;default:break;}imageView.setPadding(30,30,30,30);return imageView;}@Overridepublic long getTabId(int position) {return position;}@Overridepublic NavigatorContent getNavigatorContent(int index) {String tabId = mTabIds.get(index);return mData.get(tabId);}@Overridepublic void addContentChangeListener(@NonNull ContentChangeListener listener) {mContentChangeListeners.add(listener);}@Overridepublic void removeContentChangeListener(@NonNull ContentChangeListener listener) {mContentChangeListeners.remove(listener);}
}

3.创建继承HoverMenuService的自定义Service

public class HoverDemoService extends HoverMenuService {private HoverDemoMenuAdapter mDemoHoverMenuAdapter;/*显示悬浮按钮*/public static void showFloatingMenu(Context context) {context.startService(new Intent(context, HoverDemoService.class));}@Overrideprotected HoverMenuAdapter createHoverMenuAdapter() {try {Map<String, NavigatorContent> data = new HashMap<>();/*添加tab和对应的NavigationContent*/data.put("1", new MyNavigationContent(this, R.drawable.bike, "1,自行车是克服心脏功能毛病的最佳工具之一。世界上有半数以上的人是死于心脏病的,骑单车不只能藉腿部的运动压缩血液流动,以及把备注从血管末梢抽回心脏,事实上却同时强化了微血管组织,这叫“附带循环”。强化血管可以使你不受年龄的威胁,青春永驻。 \n" +"2,习惯性的单车运动,更能扩大你的心脏。否则血管愈来愈细,心脏愈来愈退化,到了晚年,你就会体验到它所带来的烦恼,那时你会发现,自行车运动是多么的完美。单车是需要大量氧气的运动,曾经有个老年人以6天时间,完成了460公里的单车旅行。他说:“老年人一周至少要有3次运动,使心脏强化起来,恢复正常功能。你要使心脏激烈跳动,但不可过久。如此它将能适应紧急状况,如赶车或抵抗困境。”\n" +"3,单车运动同时也能防止高血压,有时比药物更有效。还能防止发胖、血管硬化,并使骨骼强半。自行车使你不必用药物来维持健康,而且毫无害处。"));data.put("2", new MyNavigationContent(this,R.drawable.run, "1.告别臃肿身材。\n" +"\n" +"许多人开始跑步就是因为减肥,跑步确实减肥的最好运动方式,跑步每分钟比起其他运动燃烧更多的卡路里。\n" +"\n" +"2.防止你的骨骼,肌肉退化。\n" +"\n" +"我们的骨骼是和你的身体需求相互协调的。长期坐在显示器前的我们让我们的骨骼越来越脆弱。而长期的,经常的运动会使你的骨骼保持健康。更进一步说就是防止我们身体内部老化的更快。经常的高强度锻炼,例如跑步,被证明可以促进人体荷尔蒙的生长,荷尔蒙就是那些名人为了看起来更年轻而持续注射的药剂。\n" +"\n" +"3.抵抗疾病\n" +"\n" +"跑步可以降低得中风和乳腺癌的风险。经常的跑步已经成为医生对那些容易引发或在已经处在早期的骨质疏松,糖尿病,高血压病人的治疗建议。\n" +"\n" +"4.维持并提高总体的身体水平。\n" +"\n" +"跑步是是人们可以采取的最好的锻炼身体的运动。它可以提高胆固醇,降低血液凝块的危险,锻炼你的50%的经常处于闲置状态的肺。跑步还可以通过增加你的淋巴细胞来增强你的免疫力。\n" +"\n" ));data.put("3", new MyNavigationContent(this,R.drawable.android,"Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。[1]  2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。"));/*创建Adapter*/mDemoHoverMenuAdapter = new HoverDemoMenuAdapter(this, data);return mDemoHoverMenuAdapter;} catch (IOException e) {throw new RuntimeException(e);}}
}

4.入口Activity中设置一个点击事件显示悬浮框

public class DeActivity extends AppCompatActivity {Button btShow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_de);btShow = (Button)findViewById(R.id.bt_show);btShow.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {HoverDemoService.showFloatingMenu(DeActivity.this);}});}
}

##实际效果

##写在最后
博文内容基于如下版本

compile 'io.mattcarroll.hover:hover:0.9.6'

个人创建类的方式和Github上推荐的使用方式是相反的,依据个人习惯使用即可。

《Android开源库》 Google 最新Hover Menu(悬浮菜单)相关推荐

  1. Android开源库集合(控件)

    RecycleView: RecycleView功能增强 https://github.com/Malinskiy/SuperRecyclerView RecycleView功能增强(拖拽,滑动删除, ...

  2. GitHub 上排名前 100 的 Android 开源库介绍

    转自:http://www.codeceo.com/article/github-top-100-android-libs.html 本项目主要对目前 GitHub 上排名前 100 的 Androi ...

  3. Android开源库总结

    自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...

  4. GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    本文转载于:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 Gi ...

  5. GitHub上排名前100的Android开源库介绍

    摘要: 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍,至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果,然 ...

  6. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

  7. 《Android开源库 ~ 1》 GitHub Android Libraries Top 100 简介

    转载自GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitH ...

  8. GitHub上排名前100的Android开源库(201603)

    https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 GitHub 上 ...

  9. 【基础学习】GitHub 上100 的 Android 开源库分享

    本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择 (Best Match) 得到的结果, 然后过滤了跟A ...

  10. GitHub上排名前100的Android开源库

    转载于:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md 本项目主要对目前 GitH ...

最新文章

  1. android h5使用缓存_程序员必须了解的之小程序 与 App 与 H5 之间的区别
  2. 微信红包API接口(PHP)
  3. cookie和session(1)
  4. codesys 串口通讯实例_常见的PLC程序实例,车库自动门的PLC控制!
  5. 各种学习资源 文档、手册 (Docker 、springboot 、Guava、git、logback 、Linux 、MQ、vue、Axios)
  6. OpenShift 4 - 用CA证书或Token访问Internal Registry中的容器
  7. JVM的4种垃圾回收算法、垃圾回收机制与总结
  8. CocosCreator中TiledMap简单使用
  9. IDEA插件(BindED)——查看class文件的十六进制
  10. CSS3实现钟表特效
  11. 炒汇常识--股市与汇市的区别
  12. GitHub与微信开启“秘密扫描”计划,来确保数据安全
  13. css 全屏显示一张图片_css 如何让图片全屏的问题
  14. 正则表达式详解(三、常用符号的使用)
  15. HDU 5514 容斥原理
  16. python面向对象试题_python面向对象程序设计-中国大学mooc-试题题目及答案
  17. 联接+AI,华为用智能联接为智能时代加速
  18. GOOGLE Chrome谷歌翻译失效(用不了/打不开)的解决方法
  19. 中国联通亮相5G创新应用大会5G创新开启数字化转型新征程
  20. 企业该分多少钱给员工?看柏明顿阿米巴奖金分配方案

热门文章

  1. 启用计算机上的无线,如何使用命令提示符打开或关闭计算机上的wifi
  2. 策略分享-基于海龟交易模型的优化 暂存
  3. 【Python cursor指针】——Python Tkinter Cursor鼠标指针属性值
  4. 开机后黑屏看不到桌面_开机不显示桌面黑屏怎么办_win10开机黑屏啥也没有的解决办法...
  5. leetcode_1370. 上升下降字符串
  6. 会议OA项目之我的审批签字功能
  7. Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)
  8. 牛客练习赛73 B.遥远的记忆(并查集)
  9. 无惧断电 小苏云“同城三机房”容灾演练成功
  10. 股票市场行情走势图绘制