diff --git a/.idea/misc.xml b/.idea/misc.xml index a1e2abb..b7bf13d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -16,11 +16,14 @@ + + + @@ -28,6 +31,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 28a6f4b..af7b06d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,11 +14,14 @@ android:supportsRtl="true" android:theme="@style/Theme.LspView.NoActionBar"> + @@ -27,12 +30,13 @@ android:enabled="true" android:exported="true" /> - + - + diff --git a/app/src/main/java/com/lsp/view/activity/favtag/FavTagActivity.kt b/app/src/main/java/com/lsp/view/activity/favtag/FavTagActivity.kt new file mode 100644 index 0000000..8a7fd30 --- /dev/null +++ b/app/src/main/java/com/lsp/view/activity/favtag/FavTagActivity.kt @@ -0,0 +1,61 @@ +package com.lsp.view.activity.favtag + +import android.content.Context +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.View +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.flexbox.* +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.lsp.view.R +import com.lsp.view.activity.main.MainActivity +import com.lsp.view.bean.Tags + +class FavTagActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_fav_tag) + + val recyclerViewTag = findViewById(R.id.tag_recy) + recyclerViewTag.layoutManager = layoutManager() + val tagsArraySp = getSharedPreferences("tags_sp", Context.MODE_PRIVATE) + val array = tagsArraySp.getString("array",null) + var favTagList :ArrayList = ArrayList() + if (array!=null){ + //有收藏内容 + val tagListType = object : TypeToken>(){}.type + favTagList = Gson().fromJson(array,tagListType) + + }else{ + favTagList.add(Tags("没有任何Tag")) + } + + val favTagAdapter = FavTagAdapter(favTagList) + favTagAdapter.setOnItemClickListener(object :FavTagAdapter.OnItemClickListener{ + override fun onItemClick(view: View, position: Int) { + val intent = Intent(this@FavTagActivity, MainActivity::class.java) + intent.putExtra("searchTag",favTagList[position].tag) + startActivity(intent) + } + + }) + recyclerViewTag.adapter = favTagAdapter + + } + + private fun layoutManager(): FlexboxLayoutManager { + val manager = object : FlexboxLayoutManager(this, FlexDirection.ROW, FlexWrap.WRAP) { + override fun canScrollVertically(): Boolean { + return false + } + } + manager.flexWrap = FlexWrap.WRAP + manager.flexDirection = FlexDirection.ROW + manager.alignItems = AlignItems.CENTER + manager.justifyContent = JustifyContent.FLEX_START + return manager + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lsp/view/pic/TagAdapter.kt b/app/src/main/java/com/lsp/view/activity/favtag/FavTagAdapter.kt similarity index 50% rename from app/src/main/java/com/lsp/view/pic/TagAdapter.kt rename to app/src/main/java/com/lsp/view/activity/favtag/FavTagAdapter.kt index 2d63423..c706257 100644 --- a/app/src/main/java/com/lsp/view/pic/TagAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/favtag/FavTagAdapter.kt @@ -1,4 +1,4 @@ -package com.lsp.view.pic +package com.lsp.view.activity.favtag import android.view.LayoutInflater import android.view.View @@ -8,38 +8,50 @@ import androidx.recyclerview.widget.RecyclerView import com.lsp.view.R import com.lsp.view.bean.Tags -class TagAdapter(val tagList:List):RecyclerView.Adapter() { - inner class ViewHolder(view:View):RecyclerView.ViewHolder(view){ - val tagText = view.findViewById(R.id.tag) +class FavTagAdapter(val tagList:ArrayList): RecyclerView.Adapter() { + inner class ViewHolder(view:View):RecyclerView.ViewHolder(view) { + val fav_tag = view.findViewById(R.id.fav_tag) + } - private lateinit var mOnItemClickListener: OnItemClickListener + private lateinit var mOnItemClickListener :OnItemClickListener interface OnItemClickListener{ - fun onItemClick(view: View,position: Int) + fun onItemClick(view:View, position: Int) } - fun setOnItemClickListener(mOnItemClickListener: OnItemClickListener){ this.mOnItemClickListener = mOnItemClickListener + + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.fav_tag_item_layout,parent,false) + val viewHolder = ViewHolder(view) + viewHolder.fav_tag.setOnLongClickListener { + val position = viewHolder.adapterPosition + removeData(position) + + true + } + return viewHolder } + fun removeData(position: Int){ + tagList.removeAt(position) + notifyItemRangeInserted(0,tagList.size) - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val view = LayoutInflater.from(parent.context).inflate(R.layout.tag_item_layout,parent,false) - return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val tag = tagList[position] - holder.tagText.text = tag.tag - holder.tagText.setOnClickListener { + val tag = tagList[position].tag + holder.fav_tag.text = tag + holder.fav_tag.setOnClickListener { mOnItemClickListener.onItemClick(it,position) } - if (position == 0){ - holder.tagText.setBackgroundResource(R.drawable.title_bg) - } + } override fun getItemCount(): Int { return tagList.size } + + } \ No newline at end of file diff --git a/app/src/main/java/com/lsp/view/login/LoginActivity.kt b/app/src/main/java/com/lsp/view/activity/login/LoginActivity.kt similarity index 85% rename from app/src/main/java/com/lsp/view/login/LoginActivity.kt rename to app/src/main/java/com/lsp/view/activity/login/LoginActivity.kt index 12394da..4115715 100644 --- a/app/src/main/java/com/lsp/view/login/LoginActivity.kt +++ b/app/src/main/java/com/lsp/view/activity/login/LoginActivity.kt @@ -1,21 +1,13 @@ -package com.lsp.view.login +package com.lsp.view.activity.login -import android.app.AlertDialog -import android.app.Dialog import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.os.Environment -import android.util.Log import android.widget.EditText -import android.widget.TextView import com.google.android.material.floatingactionbutton.FloatingActionButton import com.lsp.view.R -import com.lsp.view.main.MainActivity +import com.lsp.view.activity.main.MainActivity import okhttp3.* -import java.io.File -import java.security.MessageDigest -import java.security.NoSuchAlgorithmException import java.util.ArrayList import java.util.concurrent.TimeUnit import kotlin.concurrent.thread diff --git a/app/src/main/java/com/lsp/view/login/StrToHash1.java b/app/src/main/java/com/lsp/view/activity/login/StrToHash1.java similarity index 95% rename from app/src/main/java/com/lsp/view/login/StrToHash1.java rename to app/src/main/java/com/lsp/view/activity/login/StrToHash1.java index 86524a6..da87df7 100644 --- a/app/src/main/java/com/lsp/view/login/StrToHash1.java +++ b/app/src/main/java/com/lsp/view/activity/login/StrToHash1.java @@ -1,4 +1,4 @@ -package com.lsp.view.login; +package com.lsp.view.activity.login; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; diff --git a/app/src/main/java/com/lsp/view/main/MainActivity.kt b/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt similarity index 96% rename from app/src/main/java/com/lsp/view/main/MainActivity.kt rename to app/src/main/java/com/lsp/view/activity/main/MainActivity.kt index 3618b15..5a7e179 100644 --- a/app/src/main/java/com/lsp/view/main/MainActivity.kt +++ b/app/src/main/java/com/lsp/view/activity/main/MainActivity.kt @@ -1,20 +1,15 @@ -package com.lsp.view.main +package com.lsp.view.activity.main import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.content.Context import android.content.Intent import android.content.res.Configuration -import android.graphics.Color -import android.os.Build import android.os.Bundle import android.os.Handler -import android.text.Html import android.util.Log import android.view.MenuItem import android.view.View -import android.view.Window -import android.view.WindowManager import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.* @@ -26,22 +21,23 @@ import androidx.drawerlayout.widget.DrawerLayout import androidx.recyclerview.widget.* import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.lsp.view.bean.Post import com.hentai.yandeview.Retrofit.PostService import com.hentai.yandeview.Retrofit.ServiceCreator import com.lsp.view.R -import com.lsp.view.setting.SettingsActivity -import jp.wasabeef.recyclerview.adapters.AlphaInAnimationAdapter +import com.lsp.view.activity.favtag.FavTagActivity +import com.lsp.view.activity.favtag.FavTagAdapter +import com.lsp.view.bean.Tags +import com.lsp.view.activity.setting.SettingsActivity import jp.wasabeef.recyclerview.adapters.SlideInBottomAnimationAdapter -import jp.wasabeef.recyclerview.animators.SlideInUpAnimator import retrofit2.Call import retrofit2.Callback import retrofit2.Response import java.lang.Exception -import java.security.AccessController.getContext import java.util.* import kotlin.collections.ArrayList -import kotlin.properties.Delegates class MainActivity : AppCompatActivity() { private var searchTag:String? = null @@ -95,6 +91,15 @@ class MainActivity : AppCompatActivity() { recyclerView.layoutManager = layoutManager + //收藏Tag + + + + + + + + val fbtn = findViewById( R.id.fbtn ) @@ -203,6 +208,12 @@ class MainActivity : AppCompatActivity() { false } + R.id.taglist -> { + val intent = Intent(this,FavTagActivity::class.java) + startActivity(intent) + drawerLayout.closeDrawers() + false + } else -> false } } @@ -325,7 +336,6 @@ class MainActivity : AppCompatActivity() { } - val postService: PostService = if(source!=null){ ServiceCreator.create(source) }else { @@ -384,7 +394,7 @@ class MainActivity : AppCompatActivity() { try{ if (position!=null) { if (position > 4) { - recyclerView.scrollToPosition(position - 2) + recyclerView.scrollToPosition(position - 3) } } }catch (e:Exception){ diff --git a/app/src/main/java/com/lsp/view/main/PostAdapter.kt b/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt similarity index 94% rename from app/src/main/java/com/lsp/view/main/PostAdapter.kt rename to app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt index 5647c74..ae23064 100644 --- a/app/src/main/java/com/lsp/view/main/PostAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/main/PostAdapter.kt @@ -1,4 +1,4 @@ -package com.lsp.view.main +package com.lsp.view.activity.main import android.content.Context import android.content.Intent @@ -12,7 +12,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.LazyHeaders import com.lsp.view.bean.Post -import com.lsp.view.pic.PicActivity +import com.lsp.view.activity.pic.PicActivity import com.lsp.view.R class PostAdapter(val context:Context, private var postList: ArrayList) :RecyclerView.Adapter(){ @@ -22,7 +22,7 @@ class PostAdapter(val context:Context, private var postList: ArrayList) :R } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val view = LayoutInflater.from(context).inflate(R.layout.item_layout,parent,false) + val view = LayoutInflater.from(context).inflate(R.layout.img_item_layout,parent,false) val viewHolder = ViewHolder(view) viewHolder.picImage.setOnClickListener { val position = viewHolder.adapterPosition @@ -57,13 +57,13 @@ class PostAdapter(val context:Context, private var postList: ArrayList) :R fun notifyData(newPostList: ArrayList, isRefresh:Boolean){ Log.e("isRefresh",isRefresh.toString()) if (isRefresh){ - notifyItemRangeRemoved(0, postList.size); postList = newPostList notifyItemRangeInserted(0, newPostList.size) }else{ + val position = postList.size postList.addAll(newPostList) - notifyItemInserted(0) + notifyItemRangeInserted(position,postList.size) } Log.e("size",postList.size.toString()) diff --git a/app/src/main/java/com/lsp/view/pic/AuthorAdapter.kt b/app/src/main/java/com/lsp/view/activity/pic/AuthorAdapter.kt similarity index 96% rename from app/src/main/java/com/lsp/view/pic/AuthorAdapter.kt rename to app/src/main/java/com/lsp/view/activity/pic/AuthorAdapter.kt index 3f16a72..aa45964 100644 --- a/app/src/main/java/com/lsp/view/pic/AuthorAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/pic/AuthorAdapter.kt @@ -1,4 +1,4 @@ -package com.lsp.view.pic +package com.lsp.view.activity.pic import android.view.LayoutInflater import android.view.View diff --git a/app/src/main/java/com/lsp/view/pic/IdAdapter.kt b/app/src/main/java/com/lsp/view/activity/pic/IdAdapter.kt similarity index 96% rename from app/src/main/java/com/lsp/view/pic/IdAdapter.kt rename to app/src/main/java/com/lsp/view/activity/pic/IdAdapter.kt index 222a881..9a50f2c 100644 --- a/app/src/main/java/com/lsp/view/pic/IdAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/pic/IdAdapter.kt @@ -1,4 +1,4 @@ -package com.lsp.view.pic +package com.lsp.view.activity.pic import android.view.LayoutInflater import android.view.View diff --git a/app/src/main/java/com/lsp/view/pic/PicActivity.kt b/app/src/main/java/com/lsp/view/activity/pic/PicActivity.kt similarity index 97% rename from app/src/main/java/com/lsp/view/pic/PicActivity.kt rename to app/src/main/java/com/lsp/view/activity/pic/PicActivity.kt index af16fb6..e6578b7 100644 --- a/app/src/main/java/com/lsp/view/pic/PicActivity.kt +++ b/app/src/main/java/com/lsp/view/activity/pic/PicActivity.kt @@ -1,4 +1,4 @@ -package com.lsp.view.pic +package com.lsp.view.activity.pic import android.animation.Animator import android.animation.AnimatorListenerAdapter @@ -7,8 +7,6 @@ import android.content.Context import android.content.Intent import android.content.ServiceConnection import android.content.pm.PackageManager -import android.content.res.Configuration -import android.content.res.Resources import android.graphics.Color import android.graphics.drawable.Drawable import android.os.* @@ -20,9 +18,7 @@ import android.view.WindowManager import android.widget.ImageView import android.widget.ProgressBar import android.widget.Toast -import android.widget.Toolbar import androidx.appcompat.app.AlertDialog -import androidx.appcompat.app.AppCompatDelegate import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.bumptech.glide.Glide @@ -40,15 +36,11 @@ import com.lsp.view.bean.Author import com.lsp.view.bean.ID import com.lsp.view.bean.Size import com.lsp.view.bean.Tags -import com.lsp.view.main.MainActivity +import com.lsp.view.activity.main.MainActivity import com.lsp.view.service.DownloadService -import okhttp3.OkHttpClient -import okhttp3.Request import java.io.* -import java.lang.Exception import kotlin.collections.ArrayList import kotlin.concurrent.thread -import kotlin.math.log import kotlin.properties.Delegates class PicActivity : AppCompatActivity() { @@ -306,7 +298,7 @@ class PicActivity : AppCompatActivity() { for (tag in list) run { tagList.add(Tags(tag)) } - val adapter = TagAdapter(tagList) + val adapter = TagAdapter(tagList,this) adapter.setOnItemClickListener(object : TagAdapter.OnItemClickListener{ override fun onItemClick(view: View, position: Int) { val intent = Intent(this@PicActivity, MainActivity::class.java) diff --git a/app/src/main/java/com/lsp/view/pic/SizeAdapter.kt b/app/src/main/java/com/lsp/view/activity/pic/SizeAdapter.kt similarity index 97% rename from app/src/main/java/com/lsp/view/pic/SizeAdapter.kt rename to app/src/main/java/com/lsp/view/activity/pic/SizeAdapter.kt index 0152848..714f182 100644 --- a/app/src/main/java/com/lsp/view/pic/SizeAdapter.kt +++ b/app/src/main/java/com/lsp/view/activity/pic/SizeAdapter.kt @@ -1,4 +1,4 @@ -package com.lsp.view.pic +package com.lsp.view.activity.pic import android.util.Log import android.view.LayoutInflater diff --git a/app/src/main/java/com/lsp/view/activity/pic/TagAdapter.kt b/app/src/main/java/com/lsp/view/activity/pic/TagAdapter.kt new file mode 100644 index 0000000..ea09137 --- /dev/null +++ b/app/src/main/java/com/lsp/view/activity/pic/TagAdapter.kt @@ -0,0 +1,69 @@ +package com.lsp.view.activity.pic + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import android.widget.Toast +import androidx.recyclerview.widget.RecyclerView +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.lsp.view.R +import com.lsp.view.bean.Tags + +class TagAdapter(val tagList:List,val context: Context):RecyclerView.Adapter() { + inner class ViewHolder(view:View):RecyclerView.ViewHolder(view){ + val tagText = view.findViewById(R.id.tag) + } + + private lateinit var mOnItemClickListener: OnItemClickListener + interface OnItemClickListener{ + fun onItemClick(view: View,position: Int) + } + + fun setOnItemClickListener(mOnItemClickListener: OnItemClickListener){ + this.mOnItemClickListener = mOnItemClickListener + } + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.tag_item_layout,parent,false) + val viewHolder = ViewHolder(view) + viewHolder.tagText.setOnLongClickListener { + val position = viewHolder.adapterPosition + if (position == 0){ + //标题 + return@setOnLongClickListener false + } + var tagsArray :ArrayList = ArrayList() + val tagsArraySp = context.getSharedPreferences("tags_sp",Context.MODE_PRIVATE) + val tagsArrayJson = tagsArraySp.getString("array",null) + if (tagsArrayJson!=null){ + val tagListType = object :TypeToken>(){}.type + tagsArray = Gson().fromJson(tagsArrayJson,tagListType) + } + tagsArray.add(Tags(viewHolder.tagText.text.toString())) + tagsArraySp.edit().putString("array",Gson().toJson(tagsArray)).apply() + Toast.makeText(context,"收藏了新标签",Toast.LENGTH_SHORT).show() + + return@setOnLongClickListener true + } + return viewHolder + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val tag = tagList[position] + holder.tagText.text = tag.tag + holder.tagText.setOnClickListener { + mOnItemClickListener.onItemClick(it,position) + } + if (position == 0){ + holder.tagText.setBackgroundResource(R.drawable.title_bg) + } + } + + override fun getItemCount(): Int { + return tagList.size + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lsp/view/setting/SettingsActivity.kt b/app/src/main/java/com/lsp/view/activity/setting/SettingsActivity.kt similarity index 95% rename from app/src/main/java/com/lsp/view/setting/SettingsActivity.kt rename to app/src/main/java/com/lsp/view/activity/setting/SettingsActivity.kt index 51dcdd0..f006e35 100644 --- a/app/src/main/java/com/lsp/view/setting/SettingsActivity.kt +++ b/app/src/main/java/com/lsp/view/activity/setting/SettingsActivity.kt @@ -1,7 +1,6 @@ -package com.lsp.view.setting +package com.lsp.view.activity.setting import android.os.Bundle -import android.util.Log import android.view.MenuItem import androidx.appcompat.app.AppCompatActivity import androidx.preference.PreferenceFragmentCompat diff --git a/app/src/main/java/com/lsp/view/setting/SettingsActivity_BackUp.kt b/app/src/main/java/com/lsp/view/activity/setting/SettingsActivity_BackUp.kt similarity index 97% rename from app/src/main/java/com/lsp/view/setting/SettingsActivity_BackUp.kt rename to app/src/main/java/com/lsp/view/activity/setting/SettingsActivity_BackUp.kt index f1fa0cc..1ab26c9 100644 --- a/app/src/main/java/com/lsp/view/setting/SettingsActivity_BackUp.kt +++ b/app/src/main/java/com/lsp/view/activity/setting/SettingsActivity_BackUp.kt @@ -1,4 +1,4 @@ -package com.lsp.view.setting +package com.lsp.view.activity.setting import android.content.SharedPreferences import android.os.Bundle @@ -8,7 +8,6 @@ import android.widget.ArrayAdapter import android.widget.Spinner import androidx.appcompat.app.AppCompatActivity import com.lsp.view.R -import java.util.* class SettingsActivity_BackUp : AppCompatActivity(), AdapterView.OnItemSelectedListener { diff --git a/app/src/main/res/layout/activity_fav_tag.xml b/app/src/main/res/layout/activity_fav_tag.xml new file mode 100644 index 0000000..758d975 --- /dev/null +++ b/app/src/main/res/layout/activity_fav_tag.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 3ac9b2e..24a7e92 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" - tools:context=".login.LoginActivity"> + tools:context=".activity.login.LoginActivity"> + tools:context=".activity.main.MainActivity"> + tools:context=".activity.main.MainActivity"> - + + + + + diff --git a/app/src/main/res/layout/activity_pic.xml b/app/src/main/res/layout/activity_pic.xml index d2d9119..285f5e0 100644 --- a/app/src/main/res/layout/activity_pic.xml +++ b/app/src/main/res/layout/activity_pic.xml @@ -8,7 +8,7 @@ android:layout_width="match_parent" android:fitsSystemWindows="true" android:layout_height="match_parent" - tools:context=".pic.PicActivity"> + tools:context=".activity.pic.PicActivity"> + + + diff --git a/app/src/main/res/layout/item_layout.xml b/app/src/main/res/layout/img_item_layout.xml similarity index 100% rename from app/src/main/res/layout/item_layout.xml rename to app/src/main/res/layout/img_item_layout.xml diff --git a/app/src/main/res/menu/nav_menu.xml b/app/src/main/res/menu/nav_menu.xml index 8582c98..75cdd59 100644 --- a/app/src/main/res/menu/nav_menu.xml +++ b/app/src/main/res/menu/nav_menu.xml @@ -9,10 +9,10 @@ android:id="@+id/fav" android:icon="@drawable/ic_baseline_favorite_24" android:title="Favorite"/> - - - - +