Skip to content

Commit 3fa2d7d

Browse files
committed
update
1 parent 30471c4 commit 3fa2d7d

File tree

6 files changed

+65
-20
lines changed

6 files changed

+65
-20
lines changed

app/build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ dependencies {
6565

6666
implementation(libs.androidx.navigation.compose)
6767

68-
val ktor_version = "2.3.6"
69-
implementation("io.ktor:ktor-client-core:$ktor_version")
70-
implementation("io.ktor:ktor-client-okhttp:$ktor_version")
68+
implementation(libs.ktor.client.core)
69+
implementation(libs.ktor.client.okhttp)
70+
implementation(libs.ktor.client.content.negotiation)
71+
implementation(libs.ktor.serialization.kotlinx.json)
72+
7173
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
72-
implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")
73-
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version")
7474

7575
testImplementation(libs.junit)
7676
androidTestImplementation(libs.androidx.test.ext.junit)

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
<activity
1515
android:name=".MainActivity"
1616
android:exported="true"
17-
android:label="@string/app_name"
1817
android:theme="@style/Theme.JetpackDemo">
1918
<intent-filter>
2019
<action android:name="android.intent.action.MAIN" />
2120

2221
<category android:name="android.intent.category.LAUNCHER" />
2322
</intent-filter>
2423
</activity>
24+
<activity android:name="com.wzq.jd.compose.app.WebActivity" />
2525
</application>
2626

2727
</manifest>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.wzq.jd.compose.app
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.os.Bundle
6+
import android.view.ViewGroup
7+
import android.webkit.WebView
8+
import androidx.activity.ComponentActivity
9+
10+
/**
11+
* create by wzq on 2023/11/27
12+
*
13+
*/
14+
class WebActivity : ComponentActivity() {
15+
companion object {
16+
fun open(context: Context, url: String) {
17+
context.startActivity(Intent(context, WebActivity::class.java).also {
18+
it.putExtra("url", url)
19+
})
20+
}
21+
}
22+
23+
override fun onCreate(savedInstanceState: Bundle?) {
24+
super.onCreate(savedInstanceState)
25+
val webView = WebView(this)
26+
setContentView(
27+
webView, ViewGroup.LayoutParams(
28+
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
29+
)
30+
)
31+
32+
val uri = intent.getStringExtra("url")
33+
if (uri.isNullOrEmpty()) {
34+
finish()
35+
return
36+
}
37+
webView.loadUrl(uri)
38+
}
39+
}

app/src/main/java/com/wzq/jd/compose/app/page/ArticleItemPage.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import androidx.compose.material3.MaterialTheme
99
import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.platform.LocalContext
1213
import androidx.compose.ui.unit.dp
14+
import com.wzq.jd.compose.app.WebActivity
1315
import com.wzq.jd.compose.app.data.ArticleItem
1416

1517
/**
@@ -19,8 +21,11 @@ import com.wzq.jd.compose.app.data.ArticleItem
1921
@OptIn(ExperimentalMaterial3Api::class)
2022
@Composable
2123
fun ArticleItemPage(itemData: ArticleItem) {
24+
val context = LocalContext.current
2225
Card(
23-
onClick = { /*TODO*/ }, modifier = Modifier
26+
onClick = {
27+
WebActivity.open(context, itemData.link)
28+
}, modifier = Modifier
2429
.padding(8.dp)
2530
.fillMaxWidth()
2631
) {

app/src/main/java/com/wzq/jd/compose/app/page/HomePage.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,27 @@ import androidx.compose.runtime.Composable
66
import androidx.compose.runtime.LaunchedEffect
77
import androidx.compose.runtime.mutableStateListOf
88
import androidx.compose.runtime.remember
9-
import androidx.compose.runtime.rememberCoroutineScope
109
import com.wzq.jd.compose.app.data.ArticleItem
1110
import com.wzq.jd.compose.app.data.NetResult
1211
import com.wzq.jd.compose.app.data.NetResultList
1312
import com.wzq.jd.compose.app.data.NetworkUtil
14-
import kotlinx.coroutines.launch
1513

1614
/**
1715
* create by wzq on 2023/11/27
1816
*
1917
*/
2018
@Composable
2119
fun HomePage() {
22-
val coroutineScope = rememberCoroutineScope()
2320
val data = remember {
2421
mutableStateListOf<ArticleItem>()
2522
}
2623
LaunchedEffect(key1 = true, block = {
27-
coroutineScope.launch {
28-
try {
29-
val response: NetResult<NetResultList<ArticleItem>> =
30-
NetworkUtil.requestGet(NetworkUtil.Url.HomeArticleList)
31-
data.addAll(response.data.listData)
32-
} catch (e: Exception) {
33-
e.printStackTrace()
34-
}
35-
24+
try {
25+
val response: NetResult<NetResultList<ArticleItem>> =
26+
NetworkUtil.requestGet(NetworkUtil.Url.HomeArticleList)
27+
data.addAll(response.data.listData)
28+
} catch (e: Exception) {
29+
e.printStackTrace()
3630
}
3731
})
3832

gradle/libs.versions.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ ksp = "1.9.0-1.0.13"
77
core-ktx = "1.12.0"
88
appcompat = "1.6.1"
99
lifecycle-runtime-ktx = "2.6.2"
10+
1011
activity-compose = "1.8.1"
1112
compose-bom = "2023.10.01"
12-
kotlinx-coroutines-android = "1.7.1"
13+
14+
ktor-client-core = "2.3.6"
1315

1416
coil = "2.4.0"
1517

@@ -35,6 +37,11 @@ ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
3537
ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
3638
material3 = { group = "androidx.compose.material3", name = "material3" }
3739

40+
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor-client-core" }
41+
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor-client-core" }
42+
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor-client-core" }
43+
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor-client-core" }
44+
3845
junit = { group = "junit", name = "junit", version.ref = "junit" }
3946
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" }
4047
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" }

0 commit comments

Comments
 (0)