Skip to content

Commit

Permalink
kotlin模块语法速览实现展示UI
Browse files Browse the repository at this point in the history
  • Loading branch information
iOrchid committed Mar 15, 2024
1 parent de65251 commit de326f7
Show file tree
Hide file tree
Showing 19 changed files with 217 additions and 61 deletions.
43 changes: 21 additions & 22 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools">

<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Base.Theme.Jetpack"
tools:replace="android:icon"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Base.Theme.Jetpack">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:icon"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
15 changes: 15 additions & 0 deletions app/src/main/res/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Material Theme Builder Android Export

## Basics

This archive contains a number of files defining a Material 3 theme:

* values/colors.xml - contains all colors used by your theme
* values/theme.xml - assigns those colors to roles in the light theme
* values-night/theme.xml - assigns those colors to roles in the dark theme

In your project, you can copy the two directories to /app/src/main/res/.
Please note that in Android Studio, the Android project view groups theme.xml files
appearing to indicate there is an additional subdirectory. Either switch to the

Project view or copy the files over in Finder/File Explorer.
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_kotlin_language"
android:textColor="@color/white" />
android:textColor="@color/md_theme_light_onPrimary" />
</LinearLayout>

<LinearLayout
Expand Down
37 changes: 31 additions & 6 deletions app/src/main/res/values-night/themes.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@

<resources>
<!-- Base application theme. -->
<style name="Base.Theme.Jetpack" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>

<style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar">
<item name="colorPrimary">@color/md_theme_dark_primary</item>
<item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
<item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
<item name="colorSecondary">@color/md_theme_dark_secondary</item>
<item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
<item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
<item name="colorTertiary">@color/md_theme_dark_tertiary</item>
<item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
<item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
<item name="colorError">@color/md_theme_dark_error</item>
<item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
<item name="colorOnError">@color/md_theme_dark_onError</item>
<item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
<item name="android:colorBackground">@color/md_theme_dark_background</item>
<item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
<item name="colorSurface">@color/md_theme_dark_surface</item>
<item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
<item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
<item name="colorOutline">@color/md_theme_dark_outline</item>
<item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_dark_inversePrimary</item>
</style>
</resources>
2 changes: 1 addition & 1 deletion app/src/main/res/values-v23/themes.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<resources>

<style name="Theme.Jetpack" parent="Base.Theme.Jetpack">
<style name="Theme.Jetpack" parent="AppTheme">
<!-- Transparent system bars for edge-to-edge. -->
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
Expand Down
67 changes: 63 additions & 4 deletions app/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>

<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
<color name="seed">#C5E1A5</color>
<color name="md_theme_light_primary">#416916</color>
<color name="md_theme_light_onPrimary">#FFFFFF</color>
<color name="md_theme_light_primaryContainer">#C1F18F</color>
<color name="md_theme_light_onPrimaryContainer">#0E2000</color>
<color name="md_theme_light_secondary">#186C32</color>
<color name="md_theme_light_onSecondary">#FFFFFF</color>
<color name="md_theme_light_secondaryContainer">#A2F6AB</color>
<color name="md_theme_light_onSecondaryContainer">#002109</color>
<color name="md_theme_light_tertiary">#006782</color>
<color name="md_theme_light_onTertiary">#FFFFFF</color>
<color name="md_theme_light_tertiaryContainer">#BBE9FF</color>
<color name="md_theme_light_onTertiaryContainer">#001F29</color>
<color name="md_theme_light_error">#BA1A1A</color>
<color name="md_theme_light_errorContainer">#FFDAD6</color>
<color name="md_theme_light_onError">#FFFFFF</color>
<color name="md_theme_light_onErrorContainer">#410002</color>
<color name="md_theme_light_background">#FCFFDC</color>
<color name="md_theme_light_onBackground">#191E00</color>
<color name="md_theme_light_surface">#FCFFDC</color>
<color name="md_theme_light_onSurface">#191E00</color>
<color name="md_theme_light_surfaceVariant">#E1E4D5</color>
<color name="md_theme_light_onSurfaceVariant">#44483D</color>
<color name="md_theme_light_outline">#74796C</color>
<color name="md_theme_light_inverseOnSurface">#E9FA86</color>
<color name="md_theme_light_inverseSurface">#2D3400</color>
<color name="md_theme_light_inversePrimary">#A6D476</color>
<color name="md_theme_light_shadow">#000000</color>
<color name="md_theme_light_surfaceTint">#416916</color>
<color name="md_theme_light_outlineVariant">#C4C8BA</color>
<color name="md_theme_light_scrim">#000000</color>
<color name="md_theme_dark_primary">#A6D476</color>
<color name="md_theme_dark_onPrimary">#1C3700</color>
<color name="md_theme_dark_primaryContainer">#2B5000</color>
<color name="md_theme_dark_onPrimaryContainer">#C1F18F</color>
<color name="md_theme_dark_secondary">#87D991</color>
<color name="md_theme_dark_onSecondary">#003914</color>
<color name="md_theme_dark_secondaryContainer">#005320</color>
<color name="md_theme_dark_onSecondaryContainer">#A2F6AB</color>
<color name="md_theme_dark_tertiary">#61D4FF</color>
<color name="md_theme_dark_onTertiary">#003545</color>
<color name="md_theme_dark_tertiaryContainer">#004D63</color>
<color name="md_theme_dark_onTertiaryContainer">#BBE9FF</color>
<color name="md_theme_dark_error">#FFB4AB</color>
<color name="md_theme_dark_errorContainer">#93000A</color>
<color name="md_theme_dark_onError">#690005</color>
<color name="md_theme_dark_onErrorContainer">#FFDAD6</color>
<color name="md_theme_dark_background">#191E00</color>
<color name="md_theme_dark_onBackground">#DBEC79</color>
<color name="md_theme_dark_surface">#191E00</color>
<color name="md_theme_dark_onSurface">#DBEC79</color>
<color name="md_theme_dark_surfaceVariant">#44483D</color>
<color name="md_theme_dark_onSurfaceVariant">#C4C8BA</color>
<color name="md_theme_dark_outline">#8E9285</color>
<color name="md_theme_dark_inverseOnSurface">#191E00</color>
<color name="md_theme_dark_inverseSurface">#DBEC79</color>
<color name="md_theme_dark_inversePrimary">#416916</color>
<color name="md_theme_dark_shadow">#000000</color>
<color name="md_theme_dark_surfaceTint">#A6D476</color>
<color name="md_theme_dark_outlineVariant">#44483D</color>
<color name="md_theme_dark_scrim">#000000</color>
</resources>
38 changes: 31 additions & 7 deletions app/src/main/res/values/themes.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,33 @@
<resources>
<!-- Base application theme. -->
<style name="Base.Theme.Jetpack" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>

<style name="Theme.Jetpack" parent="Base.Theme.Jetpack" />
</resources>
<style name="AppTheme" parent="Theme.Material3.Light.NoActionBar">
<item name="colorPrimary">@color/md_theme_light_primary</item>
<item name="colorOnPrimary">@color/md_theme_light_onPrimary</item>
<item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item>
<item name="colorSecondary">@color/md_theme_light_secondary</item>
<item name="colorOnSecondary">@color/md_theme_light_onSecondary</item>
<item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item>
<item name="colorTertiary">@color/md_theme_light_tertiary</item>
<item name="colorOnTertiary">@color/md_theme_light_onTertiary</item>
<item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item>
<item name="colorError">@color/md_theme_light_error</item>
<item name="colorErrorContainer">@color/md_theme_light_errorContainer</item>
<item name="colorOnError">@color/md_theme_light_onError</item>
<item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item>
<item name="android:colorBackground">@color/md_theme_light_background</item>
<item name="colorOnBackground">@color/md_theme_light_onBackground</item>
<item name="colorSurface">@color/md_theme_light_surface</item>
<item name="colorOnSurface">@color/md_theme_light_onSurface</item>
<item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item>
<item name="colorOutline">@color/md_theme_light_outline</item>
<item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_light_inversePrimary</item>
</style>

<style name="Theme.Jetpack" parent="AppTheme" />
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ const val PI: Double = 3.14 //常量,类似于Java的static final 其存放
//6. 不同于Java文件,在Kotlin的kt文件中,可以直接在文件内声明函数,变量,常量,类等定义,而不是Java那种必须在某个类中定义。且一个kt文件可以定义多个public的类。
//6.1 kotlin中定义函数,变量,类,接口等,如果在文件层级,权限修饰符默认是public,则会省略不写。类与函数默认是final的。
//7. 类定义格式class 类名(参数):父类,接口 。类定义可继承父类,实现接口,如果最简化,则如下,class 类名 即可。
public class Syntax //默认前面有修饰符public的,省略不写
public class QuickSyntax //默认前面有修饰符public的,省略不写

interface Shape

Expand Down
4 changes: 4 additions & 0 deletions kotlin/src/main/kotlin/org/zhiwei/kotlin/ui/BasicFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import org.zhiwei.kotlin.R

Expand All @@ -17,7 +18,10 @@ internal class BasicFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
Toast.makeText(requireContext(), "请参照basic包下QuickSyntax.kt文件", Toast.LENGTH_LONG)
.show()
return inflater.inflate(R.layout.fragment_basic, container, false)
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ internal class CoroutinesFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_basic, container, false)
return inflater.inflate(R.layout.fragment_coroutines, container, false)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ internal class FlowFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_basic, container, false)
return inflater.inflate(R.layout.fragment_flow, container, false)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ internal class SyntaxFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.fragment_basic, container, false)
return inflater.inflate(R.layout.fragment_syntax, container, false)
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 10 additions & 9 deletions kotlin/src/main/res/layout/fragment_basic.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="kotlin语法基础速览"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@drawable/kotlin_basic" />
</ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>
11 changes: 11 additions & 0 deletions kotlin/src/main/res/layout/fragment_coroutines.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="协程学习" />
</androidx.constraintlayout.widget.ConstraintLayout>
11 changes: 11 additions & 0 deletions kotlin/src/main/res/layout/fragment_flow.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="flow专栏" />
</androidx.constraintlayout.widget.ConstraintLayout>
11 changes: 11 additions & 0 deletions kotlin/src/main/res/layout/fragment_syntax.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="语法品读" />
</androidx.constraintlayout.widget.ConstraintLayout>
7 changes: 0 additions & 7 deletions kotlin/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>

<color name="red">#ff0000</color>
<color name="green">#00ff00</color>
<color name="blue">#0000ff</color>
</resources>
3 changes: 3 additions & 0 deletions kotlin/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title_kotlin">Kotlin Language</string>

<string name="str_entry_toplevel_kotlin">1、先看topLevel的代码文件,主要是kotlin的基础语法的第一部分 包括变量/常量,函数的定义,以及基础的数据类型</string>
<string name="str_kt_class_kotlin">2、看KtClazz,主要是讲class内的变量/常量、函数的定义,以及kotlin中类 、接口和object,构造函数等</string>
<string name="str_advanced_kotlin">3、advanced高级语法的代码演示,包括高阶函数、协程/纤程、常用Api的释义等</string>
<string name="str_unit_test_kotlin">Kotlin语法的使用演示,代码中有不少test函数, 想要看效果,最好就在`test`包下的UnitTest内, 自己写个单元测试更能看到效果</string>


</resources>

0 comments on commit de326f7

Please sign in to comment.