Skip to content

jk08039527/framework

Repository files navigation

myFramework - Android开发框架

一个功能丰富的Android开发框架,包含了大量常用的工具类、UI组件和基础模块,旨在提高Android开发效率。

项目结构

myFramework/
├── baselib/         # 核心框架库模块
├── app/            # 示例应用模块
└── settings.gradle

核心功能模块

1. 异步任务模块 (asyctask)

  • JerryTask - 强大的异步任务框架,支持链式调用
  • AppTask - 异步任务管理
  • BackgroundTask - 后台任务接口
  • ThreadPoolExecutorHelper - 线程池管理

使用示例:

JerryTask.with(context)
    .assign(new BackgroundTask() {
        @Override
        public Object onBackground() {
            // 后台执行的任务
            return processData();
        }
    })
    .whenDone(result -> {
        // 任务完成时的处理
        updateUI(result);
    })
    .whenBroken(t -> {
        // 任务失败时的处理
        showError(t.getMessage());
    })
    .execute();

2. UI组件模块 (weidgt)

  • 各种对话框

    • BaseDialog - 基础对话框
    • EditDialog - 带编辑框的对话框
    • SingleSelectDialog - 单选对话框
    • NoticeDialog - 通知对话框
    • UpdateDialog - 更新对话框
    • KeyValueTextDialog - 键值对输入对话框
    • ProgressDialog - 进度对话框
    • RefreshDialog - 刷新对话框
  • 自定义View

    • MyWebView - 增强的WebView
    • MyEditText - 带图标功能的EditText
    • DragPhotoView - 可拖拽的图片查看器
    • CirclePgBar - 圆形进度条
    • BannerLayout - Banner轮播组件
    • PagerSlidingTabStrip - 滑动Tab指示器

3. 下拉刷新模块 (ptrlib)

  • PtrFrameLayout - 下拉刷新布局
  • PtrRecyclerView - 带下拉刷新的RecyclerView
  • PtrSimpleView - 简化版下拉刷新视图
  • PtrWebView - 带下拉刷新的WebView
  • PtrEmptyHeaderScrollView - 空Header的ScrollView
  • PtrStickyRecyclerView - 带粘性Header的RecyclerView

4. Banner轮播模块 (weidgt/banner)

  • BannerLayout - 轮播布局
  • BannerLayoutManager - 轮播布局管理器
  • BannerAdapter - 轮播适配器
  • CenterSnapHelper - 居中对齐辅助类

5. 网络请求模块 (okhttp)

  • OkHttpUtils - OkHttp工具类(单例模式)
  • BaseOkHttpRequest - 基础网络请求
  • GetRequest / PostRequest - GET/POST请求实现
  • Callback / SBCallBack - 回调接口

使用示例:

OkHttpUtils.getInstance()
    .get()
    .url("https://api.example.com/data")
    .addHeader("Authorization", "Bearer token")
    .execute(new Callback() {
        @Override
        public void onResponse(String response) {
            // 处理响应数据
        }

        @Override
        public void onError(Exception e) {
            // 处理错误
        }
    });

6. 基础类模块 (base)

  • BaseActivity - 基础Activity
  • BaseFragment - 基础Fragment
  • BaseActivityWithFragment - 带Fragment的Activity
  • BaseRecyclerActivity - 带RecyclerView的Activity
  • BaseRecyclerFragment - 带RecyclerView的Fragment
  • BaseRecyclerAdapter - 基础RecyclerView适配器
  • RecyclerViewHolder - RecyclerView ViewHolder
  • FragmentViewPagerAdapter - Fragment ViewPager适配器

7. 工具类模块 (util)

  • 文件操作FileUtil, FileLog, TxtUtil
  • 日志管理FileLog, LogUtils
  • 字符串处理StringUtil, SpannableStringUtils
  • 日期时间DateUtils
  • 网络工具NetworkUtil
  • 显示工具DisplayUtil
  • 数学计算MathUtil, ParseUtil
  • 其他工具
    • WeakHandler - 弱引用Handler
    • PreferenceHelp - SharedPreferences工具
    • AppUtils - 应用工具类
    • CollectionUtils - 集合工具
    • Patterns - 正则表达式工具
    • UrlParserUtil - URL解析工具
    • MD5 - MD5加密
    • TimeCount - 倒计时工具
    • DingDingUtil - 钉钉消息工具

8. 图片处理模块 (picture)

  • PictureActivity - 图片查看Activity
  • PictureFragment - 图片查看Fragment

9. 悬浮窗模块 (flow)

  • FloatLogoMenu - 悬浮菜单
  • FloatWindowManager - 悬浮窗管理器
  • FloatMenuView - 悬浮菜单视图
  • FloatItem - 悬浮菜单项
  • DotImageView - 带红点的ImageView

10. 无障碍服务模块 (access)

  • BaseListenerService - 基础无障碍服务
  • GlobalActionAutomator - 全局动作自动化
  • BaseTask - 基础自动化任务

11. 解析辅助模块 (parsehelper)

  • WebViewActivity - WebView Activity
  • WebViewDialog - WebView对话框
  • WebViewUtil - WebView工具

常用工具类快速参考

文件操作

// 读取文件
FileUtil.readFile(filePath);

// 写日志
FileLog.getInstance().open(filePath);
FileLog.d("tag", "message");

字符串处理

// 检查手机号
StringUtil.isPhoneNumber(phone);

// 获取文本中的数字
StringUtil.getNumberFromText(text);

// 创建SpannableString
SpannableStringUtils.Builder builder = new SpannableStringUtils.Builder();
builder.append("红色文字").setForegroundColor(Color.RED)
       .append("普通文字").build();

日期时间

// 时间戳转格式化日期
DateUtils.getDateTimeByLong(timestamp);

// 友好时间显示(如:刚刚、5分钟前)
DateUtils.toFriendly(timestamp);

// UTC时间转换
DateUtils.utc2LocalTime(utcTime);

网络工具

// 检查网络连接
NetworkUtil.isNetworkAvailable(context);

// 获取网络类型
NetworkUtil.getNetType(context);

// 获取运营商名称
NetworkUtil.getOperatorName(context);

显示工具

// dp转px
DisplayUtil.dip2px(context, dpValue);

// 获取屏幕宽度
DisplayUtil.getDisplayWidth(context);

// 获取导航栏高度
DisplayUtil.getNavigationBarHeight(context);

应用工具

// 检查是否快速双击
AppUtils.isFastDoubleClick();

// 获取版本信息
AppUtils.getVersionName(context);
AppUtils.getVersionCode(context);

// 获取设备ID
AppUtils.getDeviceId(context);

项目依赖和技术栈

Android SDK

  • Compile SDK: 35
  • Target SDK: 35
  • Min SDK: 24 (baselib) / 26 (app)

主要依赖库

AndroidX系列

  • androidx.appcompat:appcompat:1.7.1
  • androidx.recyclerview:recyclerview:1.4.0
  • androidx.constraintlayout:constraintlayout:2.2.1
  • androidx.multidex:multidex:2.0.1

网络相关

  • com.squareup.okhttp3:okhttp:5.2.1
  • com.squareup.retrofit2:adapter-rxjava:3.0.0
  • io.reactivex.rxjava2:rxjava:2.2.21
  • io.reactivex.rxjava2:rxandroid:2.1.1

数据库

  • org.greenrobot:greendao:3.3.0

图片处理

  • com.github.bumptech.glide:glide:4.11.0
  • com.github.chrisbanes:PhotoView:2.0.0

JSON处理

  • com.google.code.gson:gson:2.13.2
  • com.alibaba:fastjson:1.1.71.android

事件与生命周期

  • org.greenrobot:eventbus:3.1.1
  • com.trello.rxlifecycle2:rxlifecycle-android-lifecycle:2.2.2

使用指南

1. 添加依赖

在项目的 build.gradle 中添加:

dependencies {
    implementation project(':baselib')
    //
    // implementation 'com.github.yourname:myframework:version'
}

2. 初始化框架

在Application的onCreate()方法中:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        App.getInstance().init(this);
    }
}

3. 异步任务使用

// 基础异步任务
AppTask.getInstance()
    .with(context)
    .assign(new BackgroundTask() {
        @Override
        public Object onBackground() {
            // 后台执行复杂操作
            return performHeavyCalculation();
        }
    })
    .whenDone(result -> {
        // 主线程更新UI
        updateUIWithResult(result);
    })
    .whenBroken(e -> {
        // 异常处理
        showErrorDialog(e.getMessage());
    })
    .execute();

4. 网络请求

// GET请求
OkHttpUtils.getInstance()
    .get()
    .url(apiUrl)
    .addHeader("Content-Type", "application/json")
    .execute(new Callback() {
        @Override
        public void onResponse(String response) {
            Gson gson = new Gson();
            Data data = gson.fromJson(response, Data.class);
            // 处理数据
        }

        @Override
        public void onError(Exception e) {
            ToastUtil.showShortText(context, "请求失败: " + e.getMessage());
        }
    });

5. 下拉刷新集成

<!-- 在布局文件中 -->
<com.jerry.baselib.weidgt.ptrlib.widget.PtrRecyclerView
    android:id="@+id/ptr_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
// 在Activity/Fragment中
PtrRecyclerView ptrRecyclerView = findViewById(R.id.ptr_recycler_view);
ptrRecyclerView.setAdapter(adapter);
ptrRecyclerView.setOnRefreshListener(() -> {
    // 刷新逻辑
    loadData();
});

// 刷新完成
ptrRecyclerView.onRefreshComplete();

6. 悬浮窗使用

// 创建悬浮窗菜单
FloatLogoMenu.Builder builder = FloatLogoMenu.with(activity)
    .logo(R.drawable.logo_icon)
    .addFloatItem(new FloatItem("功能1", R.drawable.icon1, Color.BLUE))
    .addFloatItem(new FloatItem("功能2", R.drawable.icon2, Color.GREEN));

builder.build().show();

最佳实践

  1. 内存管理:使用框架提供的WeakHandler避免内存泄漏
  2. 异常处理:在异步任务中使用whenBroken()处理异常
  3. UI更新:在异步任务回调中使用框架提供的主线程更新方法
  4. 网络请求:使用统一的网络请求接口,便于管理和拦截
  5. 状态保存:使用PreferenceHelp进行轻量级数据持久化

模块说明

baselib模块

核心框架模块,包含了所有通用工具和组件,可以作为独立库使用。

app模块

示例应用模块,展示了框架的各种功能使用方法,也可以作为开发模板。

开发规范

  1. 命名规范:遵循Android开发规范,类名使用大驼峰,方法名使用小驼峰
  2. 代码注释:重要类和复杂方法需要添加注释
  3. 异常处理:所有可能出错的地方都需要进行异常处理
  4. 性能优化:避免在主线程执行耗时操作,使用框架提供的异步工具
  5. 兼容性:支持Android 5.0+(API 21+),确保向后兼容

支持与打赏

感谢您使用 myFramework!如果这个框架对您的开发工作有帮助,并且您愿意支持后续的开发和维护,可以通过以下方式打赏支持:

支付宝收款码      微信收款码

您的支持将用于:

  • 框架的持续维护和更新
  • 新功能的开发和测试
  • 文档的完善和示例的补充
  • 社区问题的解答和支持

感谢每一位支持者的厚爱!

🎉 温馨提示

  • 打赏完全自愿,不影响框架的免费使用
  • 感谢每一位使用和支持本框架的开发者
  • 如果您在使用中遇到任何问题或有改进建议,欢迎提交Issue
  • 如果您愿意贡献代码,也欢迎提交Pull Request

再次感谢您的支持!让我们一起让这个框架变得更好!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages