diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 928c4d99d..8c0318cae 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -71,7 +71,7 @@
-
+
diff --git a/app/src/main/java/io/legado/app/constant/RSSKeywords.kt b/app/src/main/java/io/legado/app/constant/RSSKeywords.kt
index 5a4119e05..bb8d4207a 100644
--- a/app/src/main/java/io/legado/app/constant/RSSKeywords.kt
+++ b/app/src/main/java/io/legado/app/constant/RSSKeywords.kt
@@ -5,7 +5,7 @@ object RSSKeywords {
const val RSS_ITEM = "item"
const val RSS_ITEM_TITLE = "title"
const val RSS_ITEM_LINK = "link"
- const val RSS_ITEM_AUTHOR = "dc:creator"
+ const val RSS_ITEM_AUTHOR = "author"
const val RSS_ITEM_CATEGORY = "category"
const val RSS_ITEM_THUMBNAIL = "media:thumbnail"
const val RSS_ITEM_ENCLOSURE = "enclosure"
diff --git a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt
index 79c82bf1d..0e0819ce5 100644
--- a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt
+++ b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt
@@ -1,19 +1,28 @@
package io.legado.app.ui.main.rss
import android.os.Bundle
+import android.util.Log
+import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import android.view.View
+import android.widget.EditText
+import android.widget.LinearLayout
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.GridLayoutManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.base.BaseFragment
+import io.legado.app.lib.dialogs.alert
+import io.legado.app.lib.dialogs.cancelButton
+import io.legado.app.lib.dialogs.yesButton
import io.legado.app.lib.theme.ATH
+import io.legado.app.ui.rss.article.RssArticlesActivity
import io.legado.app.ui.rss.source.manage.RssSourceActivity
import io.legado.app.utils.startActivity
import kotlinx.android.synthetic.main.fragment_rss.*
import kotlinx.android.synthetic.main.view_title_bar.*
+import org.jetbrains.anko.padding
class RssFragment : BaseFragment(R.layout.fragment_rss),
RssAdapter.CallBack {
@@ -34,6 +43,25 @@ class RssFragment : BaseFragment(R.layout.fragment_rss),
super.onCompatOptionsItemSelected(item)
when (item.itemId) {
R.id.menu_rss_config -> startActivity()
+ R.id.menu_rss_add -> {
+ alert {
+ title = "快速添加并预览"
+ val layout = LinearLayout(activity)
+ val urlEdit = EditText(activity)
+ urlEdit.hint = "输入RSS地址"
+ urlEdit.width = 800
+ layout.gravity = Gravity.CENTER
+ layout.addView(urlEdit)
+ customView = layout
+ cancelButton{
+ Log.i("RSS","Quick Add URL cancel")
+ }
+ yesButton{
+ Log.i("RSS","Quick Add URL: ${urlEdit.text}")
+ startActivity("QuickAddURL" to urlEdit.text.toString().trim())
+ }
+ }.show()
+ }
}
}
diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesActivity.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesActivity.kt
index a69c70fb5..3686dacdf 100644
--- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesActivity.kt
@@ -1,3 +1,74 @@
package io.legado.app.ui.rss.article
-class RssArticlesActivity
\ No newline at end of file
+import android.app.ProgressDialog
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.BaseAdapter
+import androidx.appcompat.app.AppCompatActivity
+import io.legado.app.R
+import io.legado.app.data.entities.RssArticle
+import io.legado.app.model.rss.RssParser
+import io.legado.app.ui.rss.read.ReadRssActivity
+import kotlinx.android.synthetic.main.item_rss.view.*
+import org.jetbrains.anko.*
+import org.jetbrains.anko.sdk27.listeners.onItemClick
+import java.net.URL
+
+class RssArticlesActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ if (intent.hasExtra("QuickAddURL")) {
+ // 处理从 快速添加并预览 跳转到这个页面
+ val urlString = intent.getStringExtra("QuickAddURL")
+ val adapter = ArticleAdapter(mutableListOf(), this)
+ listView {
+ this.adapter = adapter
+ onItemClick { p0, p1, p2, p3 ->
+ startActivity("description" to adapter.articles[p2].description)
+ }
+ }
+ val loading = ProgressDialog(this@RssArticlesActivity)
+ loading.setMessage("加载中...")
+ loading.show()
+ Thread {
+ val xml = URL(urlString).readText()
+ val articles = RssParser.parseXML(xml)
+ runOnUiThread {
+ adapter.articles = articles
+ adapter.notifyDataSetChanged()
+ loading.dismiss()
+ }
+ }.start()
+ }
+ }
+}
+
+class ArticleAdapter(var articles: MutableList, var context: Context) : BaseAdapter() {
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+ val item_rss = LayoutInflater.from(context).inflate(R.layout.item_rss, null)
+ val article = articles[position]
+ item_rss.title.text = article.title
+ item_rss.pub_date.text = article.pubDate
+ if (article.author != null && article.author != "") {
+ item_rss.author.text = article.author
+ } else {
+ item_rss.author.text = article.link
+ }
+ return item_rss
+ }
+
+ override fun getItem(position: Int): Any {
+ return articles[position]
+ }
+
+ override fun getItemId(position: Int): Long {
+ return 1
+ }
+
+ override fun getCount(): Int {
+ return articles.size
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
index 5e7972c6d..e93f1e982 100644
--- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
@@ -1,15 +1,15 @@
package io.legado.app.ui.rss.read
import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import io.legado.app.R
-import io.legado.app.base.BaseActivity
-
-
-class ReadRssActivity : BaseActivity(R.layout.activity_read_rss) {
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
-
+import kotlinx.android.synthetic.main.activity_read_rss.*
+
+class ReadRssActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_read_rss)
+ val description = intent.getStringExtra("description")
+ webView.loadData("$description","text/html", "utf-8")
}
-
-
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_read_rss.xml b/app/src/main/res/layout/activity_read_rss.xml
index d829e291c..0650007cf 100644
--- a/app/src/main/res/layout/activity_read_rss.xml
+++ b/app/src/main/res/layout/activity_read_rss.xml
@@ -3,5 +3,8 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_rss.xml b/app/src/main/res/layout/fragment_rss.xml
index 3d9e9a4b5..f5a3b374c 100644
--- a/app/src/main/res/layout/fragment_rss.xml
+++ b/app/src/main/res/layout/fragment_rss.xml
@@ -11,7 +11,6 @@
android:layout_height="wrap_content"
app:attachToActivity="false"
app:title="@string/rss" />
-
-
+ android:layout_height="wrap_content"
+ app:cardCornerRadius="2dp"
+ app:cardElevation="8dp">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/main_rss.xml b/app/src/main/res/menu/main_rss.xml
index 9c051a1d2..f1e39cae2 100644
--- a/app/src/main/res/menu/main_rss.xml
+++ b/app/src/main/res/menu/main_rss.xml
@@ -2,6 +2,11 @@