From 3d57fe452667514889931a74dd7294ed2b436cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toldi=20Bal=C3=A1zs=20=C3=81d=C3=A1m?= Date: Wed, 29 Sep 2021 22:40:34 +0200 Subject: [PATCH] Added Article WebView --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 9 ++- .../balazs/anotherfeedreader/MainActivity.kt | 65 ++++++++++++++---- .../toldi/balazs/anotherfeedreader/WebView.kt | 68 +++++++++++++++++++ .../views/CustomWebViewClient.kt | 12 ++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 140 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/eu/toldi/balazs/anotherfeedreader/WebView.kt create mode 100644 app/src/main/java/eu/toldi/balazs/anotherfeedreader/views/CustomWebViewClient.kt diff --git a/app/build.gradle b/app/build.gradle index f32f02b..c1aebab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,6 +57,7 @@ dependencies { implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.3.1' + implementation "androidx.navigation:navigation-compose:2.4.0-alpha09" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5fff9bd..098ad69 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,15 +1,22 @@ + + - + - showArticle(article = feed.get(index), feed.name!!) + val scrollState = rememberScrollState() + LazyColumn( + modifier = Modifier.scrollable( + state = scrollState, + orientation = Orientation.Vertical + ) + + ) { + items(articleCount.value) { index -> + Column( + Modifier + .clickable { + Log.i(null, feed[index].title.toString()) + WebView.webURL = feed[index].url.toString() + WebView.barTitle = feed.name.toString() + startActivity(Intent(baseContext, WebView::class.java)) + } + .padding( + horizontal = 3.dp + ) + ) { + showArticle(article = feed[index], feed.name!!) + } } } @@ -91,7 +119,7 @@ class MainActivity : ComponentActivity() { @Composable fun showArticle(article: Article, feedName: String) { - Column(modifier = Modifier.padding(top = 5.dp, bottom = 5.dp)) { + Column(modifier = Modifier.padding(all = 5.dp)) { Row { if (article.author != null) { Text( @@ -116,7 +144,9 @@ class MainActivity : ComponentActivity() { } if (article.title != null) { Text( - text = article.title + text = article.title.trim(), + maxLines = 2, + overflow = TextOverflow.Ellipsis ) } else Text("") if (article.description != null) { @@ -142,15 +172,20 @@ class MainActivity : ComponentActivity() { author = "Toldi Balázs", pubDate = LocalDateTime.now() ) - showArticle(article, "Test feed") - showArticle( - Article( - title = "Teszt Article #2", - description = "Ez egy másik megjelenítést tesztelő cikk. Ebben egy nagyon hosszú szöveget akarok ábrázolni, aminek nem szabad egyben kiférnie. Legfeljebb 2 sort jeleníthet meg", - author = "Toldi Balázs", - pubDate = LocalDateTime.now().plusDays(-1) - ), "Test2 feed" - ) + Column( + modifier = Modifier.padding( horizontal = 1.dp) + ) { + showArticle(article, "Test feed") + showArticle( + Article( + title = "Teszt Article #2", + description = "Ez egy másik megjelenítést tesztelő cikk. Ebben egy nagyon hosszú szöveget akarok ábrázolni, aminek nem szabad egyben kiférnie. Legfeljebb 2 sort jeleníthet meg", + author = "Toldi Balázs", + pubDate = LocalDateTime.now().plusDays(-1) + ), "Test2 feed" + ) + } + } } } diff --git a/app/src/main/java/eu/toldi/balazs/anotherfeedreader/WebView.kt b/app/src/main/java/eu/toldi/balazs/anotherfeedreader/WebView.kt new file mode 100644 index 0000000..3cc983f --- /dev/null +++ b/app/src/main/java/eu/toldi/balazs/anotherfeedreader/WebView.kt @@ -0,0 +1,68 @@ +package eu.toldi.balazs.anotherfeedreader + +import android.os.Bundle +import android.webkit.WebView +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.Column +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.viewinterop.AndroidView +import eu.toldi.balazs.anotherfeedreader.WebView.Companion.barTitle +import eu.toldi.balazs.anotherfeedreader.WebView.Companion.webURL +import eu.toldi.balazs.anotherfeedreader.ui.theme.AnotherFeedReaderTheme +import eu.toldi.balazs.anotherfeedreader.views.CustomWebViewClient + +class WebView : ComponentActivity() { + companion object { + var webURL = "http://example.rog" + var barTitle = "" + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + AnotherFeedReaderTheme { + // A surface container using the 'background' color from the theme + Surface(color = MaterialTheme.colors.background) { + Column() { + TopBar(topTitle = barTitle) + ShowWebView("Android") + } + } + } + } + } +} +@Composable +fun TopBar(topTitle: String) { + TopAppBar ( + title = { Text(text = topTitle) } + ) +} + +@Composable +fun ShowWebView(name: String) { + AndroidView(factory = { ctx -> + WebView(ctx).apply { + loadUrl(webURL) + webViewClient = CustomWebViewClient() + } + }) +} + +@Preview(showBackground = true) +@Composable +fun DefaultPreview() { + AnotherFeedReaderTheme { + Column { + TopBar("WebView") + ShowWebView("Android") + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/toldi/balazs/anotherfeedreader/views/CustomWebViewClient.kt b/app/src/main/java/eu/toldi/balazs/anotherfeedreader/views/CustomWebViewClient.kt new file mode 100644 index 0000000..a948a34 --- /dev/null +++ b/app/src/main/java/eu/toldi/balazs/anotherfeedreader/views/CustomWebViewClient.kt @@ -0,0 +1,12 @@ +package eu.toldi.balazs.anotherfeedreader.views + +import android.webkit.WebView +import android.webkit.WebViewClient + + +class CustomWebViewClient : WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + view.loadUrl(url) + return true + } +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b45b0ed..7b3603e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ AnotherFeedReader + WebView \ No newline at end of file