Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,57 @@
.cxx
.buildSrc/build/
.buildSrc/.gradle/

# 生成的文件
bin/
gen/
out/

# Gradle文件
.gradle/
build/
*/build/
gradlew
gradlew.bat
gradle/wrapper/gradle-wrapper.jar

# 本地配置文件
local.properties
*.log

# Android Studio导航编辑器临时文件
.navigation/

# Android Studio捕获的文件
captures/

# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml

# Keystore文件
*.jks
*.keystore

# Google服务配置
google-services.json

# Proguard
proguard/

# 日志文件
*.log

# 备份文件
*~
*.bak

# Android Profiling
*.hprof

# 其他临时文件
*.tmp
*.temp
Binary file modified app/.gitignore
Binary file not shown.
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ android {
// resConfigs("en", "zh", "zh-rCN")
androidResources {
// 声明应用支持的语言区域(BCP 47 格式)
localeFilters.addAll(listOf("en", "zh", "zh-CN"))
localeFilters.addAll(listOf("en", "zh", "zh-rCN"))
}

ndk {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ abstract class BaseVmActivity<VB : ViewBinding, VM : BaseViewModel>(inflate: (La
* 初始化ViewModel
*/
private fun initViewModel() {
mViewModel = ViewModelProvider(this).get(viewModelClass())
mViewModel = ViewModelProvider(this)[viewModelClass()]
}

/**
Expand All @@ -44,12 +44,12 @@ abstract class BaseVmActivity<VB : ViewBinding, VM : BaseViewModel>(inflate: (La
*/
open fun observe() {
// 需要登录,跳转登录页
mViewModel.needLogin.observe(this, {
mViewModel.needLogin.observe(this) {
if (it) {
SpUtil.setBoolean(MyConfig.IS_LOGIN, false)
startActivity(Intent(this, LoginActivity::class.java))
}
})
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ abstract class BaseVmFragment<VB : ViewBinding, VM : BaseViewModel>(inflate: (La
* 初始化ViewModel
*/
private fun initViewModel() {
mViewModel = ViewModelProvider(this).get(viewModelClass())
mViewModel = ViewModelProvider(this)[viewModelClass()]
}

/**
Expand All @@ -55,12 +55,12 @@ abstract class BaseVmFragment<VB : ViewBinding, VM : BaseViewModel>(inflate: (La
*/
open fun observe() {
// 需要登录,跳转登录页
mViewModel.needLogin.observe(viewLifecycleOwner, {
mViewModel.needLogin.observe(viewLifecycleOwner) {
if (it) {
SpUtil.setBoolean(MyConfig.IS_LOGIN, false)
startActivity(Intent(requireActivity(), LoginActivity::class.java))
}
})
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class CollectActivity : BaseVmActivity<ActivityCollectBinding, CollectViewModel>
ToastUtil.show("取消成功")
mCollectAdapter.data.removeAt(mPosition)
mCollectAdapter.notifyItemRemoved(mPosition)
if (mCollectAdapter.data.size == 0) {
if (mCollectAdapter.data.isEmpty()) {
mCollectAdapter.setEmptyView(R.layout.layout_empty_view)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.yechaoa.wanandroid_jetpack.ui.detail

import android.annotation.SuppressLint
import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import android.text.Html
import android.view.Gravity
Expand All @@ -13,6 +12,7 @@ import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.core.graphics.toColorInt
import com.just.agentweb.AgentWeb
import com.just.agentweb.WebViewClient
import com.yechaoa.wanandroid_jetpack.base.BaseActivity
Expand Down Expand Up @@ -75,8 +75,8 @@ class DetailActivity : BaseActivity<ActivityDetailBinding>(ActivityDetailBinding
val mTextView = TextView(frameLayout.context)
mTextView.text = title
mTextView.textSize = 16f
mTextView.setTextColor(Color.parseColor("#727779"))
frameLayout.setBackgroundColor(Color.parseColor("#272b2d"))
mTextView.setTextColor("#727779".toColorInt())
frameLayout.setBackgroundColor("#272b2d".toColorInt())
val mFlp = FrameLayout.LayoutParams(-2, -2)
mFlp.gravity = Gravity.CENTER_HORIZONTAL
val scale: Float = frameLayout.context.resources.displayMetrics.density
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import com.yechaoa.yutilskt.ActivityUtil
import com.yechaoa.yutilskt.SpUtil
import com.yechaoa.yutilskt.ToastUtil
import com.yechaoa.yutilskt.YUtils
import java.util.*

class LoginActivity : BaseVmActivity<ActivityLoginBinding, LoginViewModel>(ActivityLoginBinding::inflate) {

Expand Down Expand Up @@ -138,7 +137,9 @@ class LoginActivity : BaseVmActivity<ActivityLoginBinding, LoginViewModel>(Activ
return spanBuilder
}

@Suppress("OVERRIDE_DEPRECATION")
override fun onBackPressed() {
super.onBackPressed()
ActivityUtil.closeAllActivity()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ import com.yechaoa.yutilskt.ActivityUtil
import com.yechaoa.yutilskt.ShareUtil
import com.yechaoa.yutilskt.SpUtil
import com.yechaoa.yutilskt.ToastUtil
import androidx.core.view.get
import androidx.activity.OnBackPressedCallback


class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {

Expand All @@ -41,6 +44,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
initActionBarDrawer()

initFragments()

setupBackPressedCallback()
}

/**
Expand Down Expand Up @@ -125,36 +130,38 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}

override fun onPageSelected(position: Int) {
mAppBarMainBinding.contentMain.bottomNavigation.menu.getItem(position).isChecked = true
when (position) {
0 -> mAppBarMainBinding.toolbar.title = resources.getString(R.string.title_home)
1 -> mAppBarMainBinding.toolbar.title = resources.getString(R.string.title_tree)
2 -> mAppBarMainBinding.toolbar.title = resources.getString(R.string.title_navi)
else -> mAppBarMainBinding.toolbar.title = resources.getString(R.string.title_project)
}
mAppBarMainBinding.contentMain.bottomNavigation.menu[position].isChecked = true
mAppBarMainBinding.toolbar.title = resources.getString(
when (position) {
MainTab.HOME.position -> MainTab.HOME.titleResId
MainTab.TREE.position -> MainTab.TREE.titleResId
MainTab.NAVI.position -> MainTab.NAVI.titleResId
else -> MainTab.PROJECT.titleResId
}
)
}
})

/**
* bottom_navigation 点击事件
*/
mAppBarMainBinding.contentMain.bottomNavigation.setOnNavigationItemSelectedListener {
mAppBarMainBinding.contentMain.bottomNavigation.setOnItemSelectedListener {
when (it.itemId) {
R.id.navigation_home -> {
mAppBarMainBinding.contentMain.viewPager.currentItem = 0
return@setOnNavigationItemSelectedListener true
mAppBarMainBinding.contentMain.viewPager.currentItem = MainTab.HOME.position
return@setOnItemSelectedListener true
}
R.id.navigation_tree -> {
mAppBarMainBinding.contentMain.viewPager.currentItem = 1
return@setOnNavigationItemSelectedListener true
mAppBarMainBinding.contentMain.viewPager.currentItem = MainTab.TREE.position
return@setOnItemSelectedListener true
}
R.id.navigation_navi -> {
mAppBarMainBinding.contentMain.viewPager.currentItem = 2
return@setOnNavigationItemSelectedListener true
mAppBarMainBinding.contentMain.viewPager.currentItem = MainTab.NAVI.position
return@setOnItemSelectedListener true
}
R.id.navigation_project -> {
mAppBarMainBinding.contentMain.viewPager.currentItem = 3
return@setOnNavigationItemSelectedListener true
mAppBarMainBinding.contentMain.viewPager.currentItem = MainTab.PROJECT.position
return@setOnItemSelectedListener true
}
}
false
Expand All @@ -181,16 +188,34 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
/**
* 拦截返回事件,自处理
*/
override fun onBackPressed() {
if (mBinding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
mBinding.drawerLayout.closeDrawer(GravityCompat.START)
} else {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
ToastUtil.show("再按一次退出" + resources.getString(R.string.wanandroid))
mExitTime = System.currentTimeMillis()
} else {
ActivityUtil.closeAllActivity()
private fun setupBackPressedCallback() {
val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (mBinding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
mBinding.drawerLayout.closeDrawer(GravityCompat.START)
} else {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
ToastUtil.show("再按一次退出" + resources.getString(R.string.wanandroid))
mExitTime = System.currentTimeMillis()
} else {
ActivityUtil.closeAllActivity()
}
}
}
}
onBackPressedDispatcher.addCallback(this, callback)
}

@Suppress("OVERRIDE_DEPRECATION")
override fun onBackPressed() {
super.onBackPressed()
}
}
}

//底部导航栏
enum class MainTab(val position: Int, val titleResId: Int) {
HOME(0, R.string.title_home),
TREE(1, R.string.title_tree),
NAVI(2, R.string.title_navi),
PROJECT(3, R.string.title_project)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import com.yechaoa.wanandroid_jetpack.ui.detail.DetailActivity
import com.yechaoa.yutilskt.DisplayUtil
import com.yechaoa.yutilskt.ToastUtil
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.*
import java.util.*
import com.youth.banner.transformer.AlphaPageTransformer
import com.youth.banner.transformer.ScaleInTransformer
import kotlin.math.roundToInt

class HomeFragment : BaseVmFragment<FragmentHomeBinding, HomeViewModel>(FragmentHomeBinding::inflate) {
Expand Down Expand Up @@ -70,7 +70,7 @@ class HomeFragment : BaseVmFragment<FragmentHomeBinding, HomeViewModel>(Fragment

override fun observe() {
super.observe()
mViewModel.bannerList.observe(this, { bannerList ->
mViewModel.bannerList.observe(this) { bannerList ->
//动态设置高度
val layoutParams = mBinding.banner.layoutParams
layoutParams.height = (DisplayUtil.getScreenWidth() / 1.99).roundToInt()
Expand All @@ -92,33 +92,33 @@ class HomeFragment : BaseVmFragment<FragmentHomeBinding, HomeViewModel>(Fragment
}
startActivity(intent)
}
})
}

mViewModel.articleList.observe(this, {
mViewModel.articleList.observe(this) {
mCurrentSize = it.size
if (0 == mCurrentPage) {
mArticleAdapter.setList(it)
} else {
mArticleAdapter.addData(it)
mArticleAdapter.loadMoreModule.loadMoreComplete()
}
})
}

mViewModel.collectState.observe(this, {
mViewModel.collectState.observe(this) {
if (it) {
ToastUtil.show("收藏成功")
mArticleAdapter.data[mPosition].collect = true
mArticleAdapter.notifyItemChanged(mPosition)
}
})
}

mViewModel.unCollectState.observe(this, {
mViewModel.unCollectState.observe(this) {
if (it) {
ToastUtil.show("取消成功")
mArticleAdapter.data[mPosition].collect = false
mArticleAdapter.notifyItemChanged(mPosition)
}
})
}
}

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.yechaoa.wanandroid_jetpack.ui.main.navi

import android.content.Intent
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.core.graphics.toColorInt
import com.yechaoa.wanandroid_jetpack.R
import com.yechaoa.wanandroid_jetpack.base.BaseVmFragment
import com.yechaoa.wanandroid_jetpack.data.bean.Article
Expand Down Expand Up @@ -40,7 +40,7 @@ class NaviFragment : BaseVmFragment<FragmentNaviBinding, NaviViewModel>(Fragment

override fun observe() {
super.observe()
mViewModel.naviList.observe(this, {
mViewModel.naviList.observe(this) {
mNaviList = it
mTabAdapter = MyTabAdapter(mNaviList)
mBinding.verticalTabLayout.setTabAdapter(mTabAdapter)
Expand All @@ -49,7 +49,7 @@ class NaviFragment : BaseVmFragment<FragmentNaviBinding, NaviViewModel>(Fragment
*/
mArticles = mNaviList[0].articles
setFlowLayout(mArticles)
})
}
}

/**
Expand Down Expand Up @@ -108,7 +108,7 @@ class NaviFragment : BaseVmFragment<FragmentNaviBinding, NaviViewModel>(Fragment
override fun getTitle(position: Int): ITabView.TabTitle {
return ITabView.TabTitle.Builder()
.setContent(naviList[position].name)
.setTextColor(Color.parseColor("#FF9800"), Color.parseColor("#757575"))
.setTextColor("#FF9800".toColorInt(), "#757575".toColorInt())
.setTextSize(16)
.build()
}
Expand Down
Loading