Skip to content

amosbake/LexingFrame

Repository files navigation

LexingFrame

简介

乐星互动公司开源的Android工具类库,主要是整合了开发中常用的工具类来帮助日常的开发和维护工作。

LexingFrame provides general purpose utilities for Android projects.focus on effciency and performance.

添加依赖

在项目的 build.gradle 文件中添加

 repositories {
    ....
    maven {
            url 'https://dl.bintray.com/yhvector/maven/'
    }
 }

模块的 build.gradle 文件中添加

    /**基本模块**/
    compile 'com.lexing.common:common:0.3.6'
    /**小红点控件**/
    compile 'com.lexing.common:badgeview:1.0.1'
    /**富类型显示的RecyclerView,包括下拉刷新和加载更多**/
    compile 'com.lexing.common:lrecyclerview:1.3.3'
    /**自定义进度条**/
    compile 'com.lexing.common:lprogressbarcollection:0.8.1'

添加Permission

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

功能模块说明

Class Introduction
AppUtils 应用相关方法,如获取应用信息,安装卸载,停止服务等
CipherUtils 加密解密相关,MD5,SHA1,AES,HEX...
CoordinateTransformUtil 常用地图坐标系之间的相互转换.详细说明
DensityUtils 手机屏幕相关,sp,dp,px 的相互转换,获取屏幕高宽,特别是去除虚拟按键之后的高度
FileUtils SD卡,Asserts的读,写,检测,解压
L 日志的美观打印,可打印json字符串 详细说明
NetUtils 网络状态的检测,扫描
SPUtils SharedPreferences 的存取 setParamDefault(context,"key","value")
StringUtils 字符串的转化,格式检查.钱,文件大小的格式化 比较等
SystemTool 手机系统相关,mac地址,IMEI,UUID,SD卡剩余容量等
TimeUtils 解析日期帮助类
ViewUtils 方便视图操作(检测事件,删除子视图,截图,popupwindow)
Check 对字符串,集合,数组的判空方法
CrashHandler 程序错误跳出时给予提示并记录错误报告
Rotate3dAnimtion 一个3d翻转效果的动画

BadgeView

BadgeView 是一个右上角带有小红点或数字的控件

    <com.lexing.badgeview.BadgeView
                app:btnBadgeHeight ="14dp"//图标高度
                app:btnBadgeColor ="@color/colorAccent"//图标颜色
                android:drawableTop="@mipmap/ic_launcher" //设置图标
                app:btnBadgeText="2" //设置提示文字 不设置即为小红点 />

LRecyclerView

此模块基于XRecyclerView.

设置下拉刷新和加载更多

        mRecyclerView.setPullRefreshEnabled(true);
        mRecyclerView.setLoadingMoreEnabled(true);
        mRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
               //刷新数据逻辑
            }

            @Override
            public void onLoadMore() {
                //加载更多逻辑
            }
        });

加载完成后需要手动通知视图完成状态和适配器更新

    //loadmore callback complete
    ......
    mAdapter.addAll(datas);
    mRecyclerView.loadMoreComplete();
    mAdapter.notifyDataSetChanged();

    //refresh callback complete
    ......
    mAdapter.refresh(datas);
    mRecyclerView.refreshComplete();
    mAdapter.notifyDataSetChanged();

设置加载控件样式

        //下拉刷新进度条样式
        mRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader;
        //加载更多进度条样式
        mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallBeat);
        //下拉箭头图形 R.drawable.iconfont_downgrey 为默认样式
        mRecyclerView.setArrowImageView(R.drawable.iconfont_downgrey);

设置列表头部

如列表是在Fragment中,android.R.id.content也可改成Activity中装载Frangment的容器id 可加载多个头部

View header =  LayoutInflater.from(this).inflate(R.layout.recyclerview_header, (ViewGroup)findViewById(android.R.id.content),false);

mRecyclerView.addHeaderView(header);

适配器

简单适配器(列表中只有一种视图类型)

适配器需要继承BaseRecyclerAdapter<T>并实现convert方法,并可对RecyclerHolder实现链式设置 注意:convert 有两个,其中一个有List<Object> payloads的参数的是用来实现视图局部刷新的

    @Override
    protected void convert(RecyclerHolder holder, GanhuoAndroid item, int position, boolean isScrolling) {
        holder.setText(R.id.tvTitle,item.desc)
                .setText(R.id.tvAuthor,item.author)
                .setText(R.id.tvUrl,item.url)
                .itemView.setBackgroundColor(getRandomColor(position));
    }

多类型列表适配器

首先: 让每个需要列表展示的数据类都implements Item

ublic class TitleData implements Item {
    public TitleData(String title) {
        this.title = title;
    }

    String title;
}

创建将数据类与相关的视图ViewHolder链接起来的ItemViewProvider

public class TitleItemProvider extends ItemViewProvider<TitleData, RecyclerHolder> {

    @NonNull
    @Override
    protected RecyclerHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
        View root = inflater.inflate(R.layout.item_time, parent, false);
        return new RecyclerHolder(root);
    }

    @Override
    protected void onBindViewHolder(@NonNull RecyclerHolder holder, @NonNull TitleData titleData) {
        ((TextView)holder.itemView).setText(titleData.title);
    }
}

为你的适配器注册帮助类并设置到RecyclerView中,注意List中的所有数据类都必须注册到适配器上.

        mMultiTypeAdapter=new MultiTypeAdapter(getInitDatas());
        mMultiTypeAdapter.applyGlobalMultiTypePool();
        mMultiTypeAdapter.register(ImageDatas.class,new ImageItemProvider());
        mMultiTypeAdapter.register(TitleData.class,new TitleItemProvider());
        mRecyclerView.setAdapter(mMultiTypeAdapter);

示例项目

ganhuo: Rxjava+retrofit

ExecutorManager提供基于手机cpu数量大小的线程池

SchedlersCompat使得Rxjava中线程调度的写法更加简洁

ServiceGenerator是提供Retrofit网络服务的一般性写法,使用时只用加上主域名和接口api即可使用

GalleryFragment

RecylerView的基于MutiType的富类型展示

BadgeActivity

展示badgeview的示例

ProgressActivity

展示自定义GradientProgressBar的效果

About

安卓开发工具库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages