android第三方框架,Android常用第三方框架

c4892dfc2171

一 图片加载库Fresco

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

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

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

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

// 3.Application中初始化

Fresco.initialize(this);

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

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

android:layout_height="50dp"

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

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

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

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

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

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

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

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

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

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

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

// 1.添加依赖

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

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

// 2.布局文件中使用

android:id="@+id/refreshLayout"

android:layout_width="@dimen/x0"

android:layout_height="@dimen/y0"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent">

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

// 3.代码中使用

mRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {

@Override

public void onLoadMore(RefreshLayout refreshLayout) {

// 上拉加载

page++;

requestList();

}

@Override

public void onRefresh(RefreshLayout refreshLayout) {

// 下拉刷新

page = 1;

requestList();

}

});

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

mRefreshLayout.finishRefresh();

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

mRefreshLayout.finishLoadMore();

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

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

mRefreshLayout.setEnableLoadMore(false);

} else {

mRefreshLayout.setEnableLoadMore(true);

}

三 仿微信图片选择

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

// 1.1.添加依赖

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

// 1.2.项目gradle中

allprojects {

repositories {

jcenter()

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

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

}

}

// 1.3.权限

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

PictureSelector.create(this)

.openGallery(PictureMimeType.ofImage())

.forResult(PictureConfig.CHOOSE_REQUEST);

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

@Override

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

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK) {

switch (requestCode) {

case PictureConfig.CHOOSE_REQUEST:

// 图片选择结果回调

selectList = PictureSelector.obtainMultipleResult(data);

// LocalMedia 里面返回三种 path

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

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

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

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

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

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

}

mAdapter.notifyDataSetChanged();

break;

}

}

}

四 屏幕适配方案(很多人都不知道的最佳适配方案)

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

// 添加依赖

api 'me.jessyan:autosize:1.1.2'

// Application中配置(设置宽适配)

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

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

android:name="design_width_in_dp"

android:value="375" />

android:name="design_height_in_dp"

android:value="667" />

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

五 Recycler适配器封装

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

// 依赖

allprojects {

repositories {

...

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

}

}

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

dependencies {

// 适用于AndroidX

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

// 适用于Support

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

}

// 详细使用自行百度吧, 真的好用, 支持多布局, 支持拖拽排序(修改继承的BaseAdapter就可以)等等

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

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

// 添加依赖

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

// 使用

// 时间选择器

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

@Override

public void onTimeSelect(Date date, View v) {

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

}

}).build();

// 条件选择器

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

@Override

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

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

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

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

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

tvOptions.setText(tx);

}

}).build();

pvOptions.setPicker(options1Items, options2Items, options3Items);

pvOptions.show();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值