数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

河北快三:Android 仿高德地图可拉伸的BottomSheet的示例代码

来源:脚本之家  责任编辑:小易  

河北20选五开奖结果 www.vhmyd.cn 前言

最近项目中需要用到高德地图搜索结果后的结果展示的可拉伸控件。

gaode.gif

而我看到这个效果图,觉得这个就是一个slidingpanel,但是翻阅了一些发现用google自带的bottomsheet实现更方便

什么是BottomSheet?

Bottom Sheet是Design Support Library23.2 版本引入的一个类似于对话框的控件,可以暂且叫做底部弹出框吧。 Bottom Sheet中的内容默认是隐藏起来的,只显示很小一部分,可以通过在代码中设置其状态或者手势操作将其完全展开,或者完全隐藏,或者部分隐藏。对于Bottom Sheet的描述可以在官网查询:https://material.io/design/#

怎么使用?

添加依赖

implemention 'com.android.support:design:25.3.1'

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="//schemas.android.com/apk/res/android"
 xmlns:app="//schemas.android.com/apk/res-auto"
 android:id="@+id/cl_chouti"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <FrameLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <com.amap.api.maps.MapView
   android:id="@+id/map_view"
   android:layout_width="match_parent"
   android:layout_height="match_parent" />

  <RelativeLayout
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center">

   <ImageView
    android:id="@+id/mark"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:src="@drawable/poi_marker_pressed" />
   <!--为了更好与定位之后的红点适配此imagview只是适配用没有意义-->
   <ImageView
    android:layout_width="30dp"
    android:layout_height="40dp"
    android:layout_below="@+id/mark" />
  </RelativeLayout>
 </FrameLayout>

 <RelativeLayout
  android:id="@+id/bottom_sheet"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  app:behavior_hideable="true"
  app:behavior_peekHeight="160dp"
  app:layout_behavior="@string/bottom_sheet_behavior">

  <include layout="@layout/layout_bottom_sheet" />
 </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

 layout_bottom_sheet.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="#ffffff"
 android:orientation="vertical">
 <TextView
  android:id="@+id/tv_tishi"
  android:layout_gravity="center_horizontal"
  android:layout_marginTop="40dp"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="附近热点"
  android:textSize="10sp"/>
 <android.support.v7.widget.RecyclerView
  android:id="@+id/recyclerview"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>
</LinearLayout>

activity中的使用

 //底部抽屉栏展示地址
  bottomSheet = findViewById(R.id.bottom_sheet);
  behavior = BottomSheetBehavior.from(bottomSheet);

  behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
   @Override
   public void onStateChanged(@NonNull View bottomSheet, @BottomSheetBehavior.State int newState) {
    String state = "null";
    switch (newState) {
     case 1:
      state = "STATE_DRAGGING";//过渡状态此时用户正在向上或者向下拖动bottom sheet
      break;
     case 2:
      state = "STATE_SETTLING"; // 视图从脱离手指自由滑动到最终停下的这一小段时间
      break;
     case 3:
      state = "STATE_EXPANDED"; //处于完全展开的状态

      break;
     case 4:
      state = "STATE_COLLAPSED"; //默认的折叠状态
      break;
     case 5:
      state = "STATE_HIDDEN"; //下滑动完全隐藏 bottom sheet
      break;
    }

   }

   @Override
   public void onSlide(@NonNull View bottomSheet, float slideOffset) {
//    Log.d("BottomSheetDemo", "slideOffset:" + slideOffset);
   }
  });

注意分析

CoordinatorLayout 是Meterial Design中的一个新控件,通过behavior用来协调其他组件, 实现联动,因此父布局必须是CoordinatorLayout 。

注意到布局中,RelativeLayout中的app:layout_behavior=”@string/bottom_sheet_behavior”属性,点进去可以看到,这个属性实际上是设置系统默认实现的BottomSheet的behavior。原则上来说,只要是可以滚动的View,在加上了这个属性后,都可以作为BottomSheet来使用,建议使用NestedScrollView或者RecyclerView。

【贡献源码地址】

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:


  • 本文相关:
  • android中imageview.src设置图片拉伸、填满控件的方法
  • android zxing二维码扫描图片拉伸的解决方法
  • android zxing二维码扫描图片拉伸问题的解决方法
  • android中关于自定义相机预览界面拉伸问题
  • android开发框架之自定义zxing二维码扫描界面并解决取景框拉伸问题
  • android 使用asynctask实现多任务多线程断点续传下载
  • android anr(application not responding)的分析
  • android实现图片轮播切换实例代码
  • android应用签名详细步骤
  • 详解android中的mvp架构分解和实现
  • android 简单实现一个流式布局的示例
  • android程序开发仿新版qq锁屏下弹窗功能
  • android okhttp的单例和再封装的实例
  • 深入分析安卓(android)中的注解
  • android获取时间差的方法
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 河北20选五开奖结果 - 频道导航
    Copyright © 2017 河北20选五开奖结果 www.vhmyd.cn All Rights Reserved
  • 吕梁:交口公安侦破“5.24”疯狂砸车玻璃盗窃案 2018-12-19
  • 央企合作工作简报(2018年第9期) 2018-12-19
  • 靳东神预测世界杯:两个星期前预测英格兰21突尼斯 2018-12-19
  • 美最新研究:抑郁会引发记忆问题 2018-12-18
  • 日本佳子公主留学后回国 被称日本皇室"最美公主" 2018-12-18
  • 骗子用女子照片制作“通缉令” 诈骗对方11万 2018-12-18
  • 太原11家培训学校承诺规范办学 2018-12-18
  • 深圳2018年将开行3趟援疆旅游扶贫专列 2018-12-17
  • 人民日报80后评论员为大学生讲改革40年 2018-12-17
  • 用事实来回敬非马克思主义思潮(原创首发) 2018-12-17
  • 俄罗斯球队为国争光,为普京争脸。揭幕战横扫沙特队,吸引世界眼球。一代伟人普京,是俄罗斯人民的福气,强国,强军、富民,是普京献词“地球盛宴”的真正荣耀时刻,俄国人 2018-12-17
  • 习近平:请乡亲们同党中央一起,撸起袖子加油干! 2018-12-16
  • E3 2018:玩家期待已久的《上古卷轴6》正式公布 2018-12-16
  • 京东和他的“朋友圈” 2018-12-15
  • 新华国际时评:中国两会向世界传递三大信号 2018-12-15
  • 962| 531| 69| 774| 654| 479| 504| 373| 670| 169|