前言:
针对不同群体的需求,想着应该拓展写方向。医疗app很受大家喜欢,就打算顺手写个消防app,里面基础框架还是挺简洁 规整的。登陆注册和本地数据库写的便于大家理解。是广大学子的毕设首选啊!
此app主要为了传递 消防知识,以及歌颂消防士兵的奉献精神。在这里我们向他们致敬!此app采用本地数据库litpal,涵盖多种三方依赖,webView,登录注册,头像修改,EventBus,Butterknife,SmartRefreshLayout,XTabLayout,悬浮球,对于初学者及毕业生是很好的项目。注释很全。ui依然是我自己设计的。
项目内使用的依赖,局部展示 :
plugins {id 'com.android.application' } def dbflow_version = "4.2.4"android {namespace 'com.vipbasemaster'/* 编译版本 */compileSdk 33//默认配置defaultConfig {/* 应用Id */applicationId "com.vipbasemaster"/* 最小sdk */minSdk 23/* 目标版本 */targetSdk 33/* 版本编号 */versionCode 1/* 版本名称 */versionName "1.0"/* 添加多 dex分包支持 */multiDexEnabled = truetestInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}//构建类型配置buildTypes {release {/* 是否开启代码混淆,默认false */minifyEnabled false/* 混淆规则配置文件 */proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}//编译选项compileOptions {/*编译Java源代码时使用的Java版本兼容性*/sourceCompatibility JavaVersion.VERSION_1_8/*用于生成类的Java版本*/targetCompatibility JavaVersion.VERSION_1_8} } //依赖 dependencies {implementation 'androidx.appcompat:appcompat:1.4.1'implementation 'com.google.android.material:material:1.5.0'implementation 'androidx.constraintlayout:constraintlayout:2.1.3'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'/**沉浸式**/implementation 'com.yanzhenjie:sofia:1.0.5'annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:$dbflow_version"// gradle 3.0.0 可以使用 implementation,否则用 compileimplementation "com.github.Raizlabs.DBFlow:dbflow-core:$dbflow_version"implementation "com.github.Raizlabs.DBFlow:dbflow:$dbflow_version"/**黄刀油**/implementation 'com.jakewharton:butterknife:10.2.1'annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'/**消息发送**/implementation 'org.greenrobot:eventbus:3.0.0'/**权限检测**/implementation 'com.yanzhenjie:permission:2.0.0-rc12'/**万能RecyclerView的数据适配器**/implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'/**数据库**/implementation 'org.litepal.android:core:2.0.0'/**二维码**/implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.3.4'/**按钮切换**/implementation 'com.github.zcweng:switch-button:0.0.3@aar'/**选择图片(照片)第三方框架,(照片)框架,解决7.0打开相机报错问题**/implementation 'com.hx.multi-image-selector:multi-image-selector:1.2.2'/**图片缩放的第三方框架**/implementation 'me.relex:photodraweeview:1.1.0'/**图片查看器**/implementation 'com.github.chrisbanes:PhotoView:1.3.0'/**万能布局**/implementation 'androidx.recyclerview:recyclerview:1.2.1'/**轮播**/implementation 'com.youth.banner:banner:1.4.10'/**弹出对话框**/implementation 'com.yanzhenjie.alertdialog:alertdialog:1.0.1'/**万能pop**/implementation 'com.github.zyyoona7:EasyPopup:1.1.2'/**京东地址选择器**/implementation 'com.github.chihane:JDAddressSelector:1.1.4'/**下拉刷新**/implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'/**没有使用特殊Header,可以不加这行**/implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'/**MultiDex使用**/implementation 'com.android.support:multidex:1.0.3'/**图片缓存**/implementation 'com.github.bumptech.glide:glide:4.12.0'/**标签切换**/implementation 'com.androidkun:XTabLayout:1.1.3'/**简易时间选择器**/implementation 'com.contrarywind:Android-PickerView:4.1.9'/**加载gif动画**/implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15'/**android常用工具类依赖**/implementation 'com.blankj:utilcodex:1.30.6'/**主页tab**/implementation 'com.github.Vincent7Wong:EasyNavigation:2.0.5'/**配合主页yoyo动画1**/implementation 'com.nineoldandroids:library:2.4.0'/**配合主页yoyo动画2**/implementation 'com.daimajia.easing:library:2.0@aar'/**配合主页yoyo动画3**/implementation 'com.daimajia.androidanimations:library:2.2@aar'/**loading组件**/implementation 'com.wang.avi:library:2.1.3'/**标题栏**/implementation 'com.wuhenzhizao:titlebar:1.2.0'/**显示文本组件**/implementation 'com.github.linger1216:labelview:v1.1.2'/** 我的水波纹 */implementation 'com.scwang.wave:MultiWaveHeader:1.0.0-alpha-1'/**x5webView**///noinspection GradleDependencyimplementation 'com.tencent.tbs:tbssdk:44226'/**视频播放**/implementation 'cn.jzvd:jiaozivideoplayer:6.4.1'
项目好不好,还得大家自己看看代码能不能读懂,适不适合自己。
良好的代码风格
@Override public void initView() {fragments.add(new OneFragment());fragments.add(new TwoFragment());fragments.add(new ThreeFragment());fragments.add(new FourFragment());fragments.add(new FiveFragment());easy_navigation_bar.titleItems(tabText)//必传 Tab未选中图标集合.normalIconItems(normalIcon)//必传 Tab选中图标集合.selectIconItems(selectIcon)//必传 fragment集合.fragmentList(fragments)//必传.fragmentManager(getSupportFragmentManager())//分割线高度(默认是1,传0就不展示).lineHeight(0)//Tab图标大小.iconSize(44)//Tab文字大小,0会让文字不显示.tabTextSize(10)//Tab文字距Tab图标的距离.tabTextTop(0)//Tab未选中时字体颜色.normalTextColor(Color.parseColor("#7F7F7F"))//Tab选中时字体颜色.selectTextColor(Color.parseColor("#F0605F"))//同 ImageView的ScaleType.scaleType(ImageView.ScaleType.CENTER_INSIDE)//点击Tab Viewpager切换是否有动画.smoothScroll(true)//Viewpager能否左右滑动.canScroll(false)//导航栏高度.navigationHeight(58)//true ViewPager 布局在导航栏之上 false 有重叠.hasPadding(true).navigationBackground(Color.parseColor("#252732")).build(); }
有需要的可以私信我, 有偿。