BottomSheets是一个底部可操作的布局,可以做菜单,对话框。最近项目中需要做一个类似高德地图poi详情卡片上拉并且配合图片滑出的效果,所以简单的做个总结,碰到的问题也记一下。效果请看下图:


其他的就不多说了,show my code

布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.bottomsheetdemo.MainActivity"><Buttonandroid:id="@+id/show"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="show"/><RelativeLayoutandroid:id="@+id/test"android:layout_width="match_parent"android:layout_height="match_parent"app:behavior_hideable="true"app:behavior_peekHeight="300dp"app:layout_behavior="android.support.design.widget.BottomSheetBehavior"><RelativeLayoutandroid:id="@+id/test_top"android:layout_width="match_parent"android:layout_height="200dp"android:background="@color/colorAccent"></RelativeLayout><com.example.bottomsheetdemo.ScrollBottomScrollViewandroid:id="@+id/test_bottom"android:layout_width="match_parent"android:layout_height="match_parent"android:clipToPadding="true"android:fillViewport="true"android:overScrollMode="never"android:scrollbars="none"><LinearLayoutandroid:id="@+id/test_list"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"></LinearLayout></com.example.bottomsheetdemo.ScrollBottomScrollView></RelativeLayout></android.support.design.widget.CoordinatorLayout>

MainActivity:

 /*** Created by wuwei* 2019/3/14* 佛祖保佑       永无BUG*/
public class MainActivity extends AppCompatActivity {private RelativeLayout mTest;private LinearLayout mTestList;private Button mShow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTest = (RelativeLayout) findViewById(R.id.test);mTestList = (LinearLayout) findViewById(R.id.test_list);mShow = (Button) findViewById(R.id.show);for (int i = 0; i < 200; i++) {TextView textView = new TextView(this);LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);textView.setText(i + "");textView.setBackgroundColor(Color.RED);textView.setPadding(0, 50, 0, 50);layoutParams.gravity = Gravity.CENTER;textView.setLayoutParams(layoutParams);mTestList.addView(textView);}mShow.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {BottomSheetBehavior.from(mTest).setState(BottomSheetBehavior.STATE_COLLAPSED);}});BottomSheetBehavior.from(mTest).setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {@Overridepublic void onStateChanged(@NonNull View bottomSheet, int newState) {}@Overridepublic void onSlide(@NonNull View bottomSheet, float slideOffset) {if (slideOffset >= 0) {ScrollView.LayoutParams params = (ScrollView.LayoutParams) mTestList.getLayoutParams();params.topMargin = (int) (slideOffset * dip2px(200));mTestList.setLayoutParams(params);}}});}public int dip2px(float dip) {float density = getResources().getDisplayMetrics().density;return (int) (dip * density + 0.5f);}
}

至于ScrollBottomScrollView,这只是一个可以监听ScrollView滑倒底部的一个自定义控件,也贴上吧:

/*** Created by wuwei* 2018/6/13* 佛祖保佑       永无BUG*/
public class ScrollBottomScrollView extends NestedScrollView {private OnScrollBottomListener _listener;private int _calCount;public interface OnScrollBottomListener {void srollToBottom();}public void registerOnScrollViewScrollToBottom(OnScrollBottomListener l) {_listener = l;}public void unRegisterOnScrollViewScrollToBottom() {_listener = null;}public ScrollBottomScrollView(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {View view = this.getChildAt(0);if (this.getHeight() + this.getScrollY() == view.getHeight()) {_calCount++;if (_calCount == 1) {if (_listener != null) {_listener.srollToBottom();}}} else {_calCount = 0;}}
}

如果觉得对你有帮助的话就点个赞吧~

高德地图poi详情卡片上滑效果相关推荐

  1. 实用工具|零代码实现高德地图POI数据下载

    1 工具获取方式 点击下面链接,即可获取地理坐标系转换工具 地理坐标系转换工具 2 工具介绍 高德地图POI数据下载工具(下文称该工具)是一款能够让用户在不写代码的前提下实现高德地图POI数据批量下载 ...

  2. python获取高德地图POI——关键字搜索

    本文主要内容是利用python获取高德地图上的感兴趣点(POIs). 高德开放平台:https://lbs.amap.com/ 下载POI分类编码和城市编码表 搜索POI相关文档:https://lb ...

  3. Android高德地图自定义Mark并实现聚合效果

    Android高德地图自定义Mark并实现聚合效果 起因:公司本来项目里面用到了高德地图,然后最近老板看见别人的APP里面有个聚合的这个功能,老板:"这个效果能不能实现,我也要!" ...

  4. 【数据工具】高德地图POI数据下载工具(支持选择省市以及POI类型)

    1. 工具介绍 今天分享一个能够实现零代码获取高德地图POI数据的工具. 该工具目前支持通过框选地图以及点选省或市的方式输入数据下载范围.另外,支持通过点选的方式选择想要获取的POI类型. 获取方式在 ...

  5. 【数据工具】高德地图POI数据下载工具v1.3(新增输入POI关键词+稳定性提高)

    1. 工具介绍 今天分享一个能够实现零代码获取高德地图POI数据的工具. 该工具当前版本号为v1.3,主要功能特点包括: 支持通过拉框多边形以及点选省或地级市的方式输入POI数据下载范围 支持多选输入 ...

  6. PYTHON爬取高德地图POI

    PYTHON爬取高德地图POI 使用高德地图API爬取POI数据,首先需要申请高德地图API的KEY和获取<POI分类编码表>,本实例的最后结果是根据不同的poi类型分别生成多个EXCEL ...

  7. 高德地图POI数据2020年高德POI

    高德地图POI是Point of Interest"的缩写,可以翻译成兴趣点,一共有三级分类(大类.中类.小类),其中一级分类有23个. 涵盖餐饮服务.购物服务.生活服务.体育休闲服务.医疗 ...

  8. 图像检索在高德地图POI数据生产中的应用

    简介: 高德通过自有海量的图像源,来保证现实世界的每一个新增的POI及时制作成数据.在较短时间间隔内(小于月度),同一个地方的POI 的变化量是很低的. 作者 | 灵笼.怀迩 来源 | 阿里技术公众号 ...

  9. Android高德地图poi检索仿微信发送位置

    最近项目需求把发送定位模块改成类似微信发送位置给好友的效果,我使用了高德地图实现了一个demo,效果图如下: 从主界面中我们可以看到中心标记上面显示的就是我们定位的地址,下面是一个listview列表 ...

最新文章

  1. HashMap 详解七
  2. Exception经验之谈,万万没想到被很多团队采纳!
  3. 阿里面试:索引失效的场景有哪些?索引何时会失效?
  4. opencv imencode跟imdecode函数jpg(python)
  5. [转](总结)Linux/UNIX的scp命令用法详解
  6. XCTF-Reverse:python-trade
  7. VTK:可视化算法之ColoredAnnotatedCube
  8. python利用自动识别写模块_教你用Python 实现自动导入缺失的库
  9. 海洋CMS仿爱美剧网站模板源码
  10. HTML5的input color系统颜色选择器
  11. linux查看硬件信息及驱动设备
  12. SQL Server数据同步的研究(单向/双向)
  13. 用在线RaxML构建系统发育树
  14. Android练手——分贝计
  15. 2021年黑龙江企业享受税收优惠政策,财政扶持高达90%
  16. 迅雷插件导致js获取后端返回结果报错问题
  17. 号称下一代互联网的 Web3.0 到底是个啥?
  18. 珍藏资源,msdn2001英文版
  19. CANopen DS402 驱动电机运动控制模式
  20. python 限定数据范围_Python 生成周期性波动的数据 可指定数值范围2

热门文章

  1. 王者荣耀:必须要学会的七个技巧,不然活该你连输100场!
  2. 数据库2——简单 单表查询(50)
  3. poj 3682 Bookshelf 2——背包问题(dfs)
  4. excel 日期函数date
  5. 利用mapgis6.7进行图形精校正
  6. 【Python】学习笔记——-Python2 和 Python3的区别
  7. 前馈神经网络--前向传播与反向传播计算过程
  8. Tableau可视化技巧--饼图
  9. 腾飞的野三坡,打造国际旅游黄金水岸
  10. DQL:内连接查询与外连接查询