安卓常用库,包括下拉刷新,图片选择,底部选择弹框(时间、类型、省市县等)

一 、图片加载库Fresco

 
  1. Github地址: https://github.com/facebook/fresco

  2.  
  3. // 1.添加依赖(最新已经更新到2.2.0)

  4. api 'com.facebook.fresco:fresco:1.9.0'

  5.  
  6. // 2.清单文件中添加权限

  7. <uses-permission android:name="android.permission.INTERNET" />

  8.  
  9. // 3.Application中初始化

  10. Fresco.initialize(this);

  11.  
  12. // 4.布局文件中引用(更多设置自己百度哈)

  13. <com.facebook.drawee.view.SimpleDraweeView

  14. android:layout_width="50dp" // 必须设置尺寸, 不支持wrap_content

  15. android:layout_height="50dp"

  16. app:actualImageScaleType="centerCrop" // 实际尺寸缩放类型

  17. app:placeholderImage="@drawable/ic_default_user_logo" // 占位图

  18. app:placeholderImageScaleType="centerCrop" // 占位图缩放类型

  19. app:roundAsCircle="true" // 设置圆形图片

  20. app:roundedCornerRadius="5dp" /> // 设置圆角图片

  21.  
  22. // 5.加载图片显示(三种方式)

  23. simpleDraweeView.setImageURI("网络图片地址");

  24. simpleDraweeView.setImageURI(Uri.fromFile(new File("文件管理中的图片地址")));

  25. image.setImageResource(R.drawable."资源图片名");

 

二 、上拉加载下拉刷新框架(设置修改头部自行百度) 

 
  1. Github地址:https://github.com/scwang90/SmartRefreshLayout

  2.  
  3. // 1.添加依赖

  4. api 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'

  5. api 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'

  6.  
  7. // 2.布局文件中使用

  8. <com.scwang.smartrefresh.layout.SmartRefreshLayout

  9. android:id="@+id/refreshLayout"

  10. android:layout_width="@dimen/x0"

  11. android:layout_height="@dimen/y0"

  12. app:layout_constraintBottom_toBottomOf="parent"

  13. app:layout_constraintLeft_toLeftOf="parent"

  14. app:layout_constraintRight_toRightOf="parent">

  15.  
  16. <android.support.v7.widget.RecyclerView

  17. android:id="@+id/recyclerView"

  18. android:layout_width="match_parent"

  19. android:layout_height="match_parent" />

  20.  
  21. </com.scwang.smartrefresh.layout.SmartRefreshLayout>

  22.  
  23. // 3.代码中使用

  24. mRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {

  25. @Override

  26. public void onLoadMore(RefreshLayout refreshLayout) {

  27. // 上拉加载

  28. page++;

  29. requestList();

  30. }

  31.  
  32. @Override

  33. public void onRefresh(RefreshLayout refreshLayout) {

  34. // 下拉刷新

  35. page = 1;

  36. requestList();

  37. }

  38. });

  39. // 数据返回之后停止下拉

  40. mRefreshLayout.finishRefresh();

  41. // 数据返回之后停止上拉

  42. mRefreshLayout.finishLoadMore();

  43. // 数据分页情况下, 当当前页大于等于总页数, 禁止上拉

  44. if (page >= result.getPages()) {

  45. mRefreshLayout.setEnableLoadMore(false);

  46. } else {

  47. mRefreshLayout.setEnableLoadMore(true);

  48. }

 

三、 仿微信图片选择 

 
  1. Github地址: https://github.com/LuckSiege/PictureSelector

  2.  
  3. // 1.1.添加依赖

  4. api 'com.github.LuckSiege.PictureSelector:picture_library:v2.2.3'

  5.  
  6. // 1.2.项目gradle中

  7. allprojects {

  8. repositories {

  9. jcenter()

  10. maven { url 'https://jitpack.io' }

  11. maven { url 'https://maven.google.com' }

  12. }

  13. }

  14.  
  15. // 1.3.权限

  16. <uses-permission android:name="android.permission.CAMERA"/>

  17. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  18.  
  19. // 2.调用相机相册(最简单的使用, 使用之前最好百度, 了解所有属性设置)

  20. PictureSelector.create(this)

  21. .openGallery(PictureMimeType.ofImage())

  22. .forResult(PictureConfig.CHOOSE_REQUEST);

  23.  
  24. // 3.图片接收, 展示到UI界面

  25. @Override

  26. protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  27. super.onActivityResult(requestCode, resultCode, data);

  28. if (resultCode == RESULT_OK) {

  29. switch (requestCode) {

  30. case PictureConfig.CHOOSE_REQUEST:

  31. // 图片选择结果回调

  32. selectList = PictureSelector.obtainMultipleResult(data);

  33. // LocalMedia 里面返回三种 path

  34. // 1.media.getPath(); 为原图 path

  35. // 2.media.getCutPath();为裁剪后 path,需判断 media.isCut();是否为 true

  36. // 3.media.getCompressPath();为压缩后 path,需判断 media.isCompressed();是否为 true

  37. // 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的

  38. for(int i = 0;i < selectList.size(); i++){

  39. imagePaths.add(selectList.get(i).getPath());

  40. }

  41. mAdapter.notifyDataSetChanged();

  42. break;

  43. }

  44. }

  45. }

 

 四 、屏幕适配方案(很多人都不知道的最佳适配方案(字节跳动))

 
  1. Github地址: https://github.com/JessYanCoding/AndroidAutoSize

  2.  
  3. // 添加依赖

  4. api 'me.jessyan:autosize:1.1.2'

  5.  
  6. // Application中配置(设置宽适配)

  7. AutoSizeConfig.getInstance().setExcludeFontScale(true).setBaseOnWidth(true);

  8.  
  9. // 清单文件中设置UI图尺寸(单位是dp)

  10. <meta-data

  11. android:name="design_width_in_dp"

  12. android:value="375" />

  13. <meta-data

  14. android:name="design_height_in_dp"

  15. android:value="667" />

  16. // 其实到这里适配就算完成了, 至于原理等多百度, 看看源码吧, 很简单。

 

五、 Recycler适配器封装 

 
  1. Github地址: https://github.com/CymChad/BaseRecyclerViewAdapterHelper

  2.  
  3. // 依赖

  4. allprojects {

  5. repositories {

  6. ...

  7. maven { url 'https://jitpack.io' }

  8. }

  9. }

  10. // 选择自己所需要的,AndroidX和Support不共存

  11. dependencies {

  12. // 适用于AndroidX

  13. implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'

  14. // 适用于Support

  15. api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42'

  16. }

  17.  
  18. // 详细使用自行百度吧, 真的好用, 支持多布局, 支持拖拽排序等等

 

六 、底部选择弹框(时间、类型、省市县等)

 
  1. Github地址: https://github.com/Bigkoo/Android-PickerView

  2.  
  3. // 添加依赖

  4. compile 'com.contrarywind:Android-PickerView:4.1.9'

  5.  
  6. // 使用

  7. // 时间选择器

  8. TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {

  9. @Override

  10. public void onTimeSelect(Date date, View v) {

  11. Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();

  12. }

  13. }).build();

  14.  
  15. // 条件选择器

  16. OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() {

  17. @Override

  18. public void onOptionsSelect(int options1, int option2, int options3 ,View v) {

  19. //返回的分别是三个级别的选中位置

  20. String tx = options1Items.get(options1).getPickerViewText()

  21. + options2Items.get(options1).get(option2)

  22. + options3Items.get(options1).get(option2).get(options3).getPickerViewText();

  23. tvOptions.setText(tx);

  24. }

  25. }).build();

  26. pvOptions.setPicker(options1Items, options2Items, options3Items);

  27. pvOptions.show();

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修行者对666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值