一些修改
This commit is contained in:
@@ -33,6 +33,8 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation('com.google.android.material:material:1.3.0')
|
||||
implementation "androidx.drawerlayout:drawerlayout:1.1.1"
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||
api 'com.google.android:flexbox:1.0.0'
|
||||
implementation ('androidx.swiperefreshlayout:swiperefreshlayout:1.1.0')
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
@@ -14,11 +13,13 @@
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.LspView">
|
||||
<activity android:name=".PicActivity"
|
||||
android:configChanges="uiMode"
|
||||
></activity>
|
||||
<activity android:name=".MainActivity">
|
||||
<activity android:name=".login.LoginActivity">
|
||||
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".pic.PicActivity"
|
||||
android:configChanges="uiMode" />
|
||||
<activity android:name=".main.MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.lsp.view.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 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
|
||||
|
||||
class LoginActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_login)
|
||||
val login = findViewById<FloatingActionButton>(R.id.login)
|
||||
|
||||
AlertDialog.Builder(this).apply {
|
||||
setMessage("目前阶段登录没有任何实质的用处,仅会保存你输入的用户名用于搜索你的收藏夹,而通过登录获取到的Cookie在将来可能会有实质的用处,Cookie将不会保存,如你不需要使用收藏夹,请直接点击登录按钮。")
|
||||
setTitle("关于登录")
|
||||
setPositiveButton("确定"){it,_->
|
||||
it.dismiss()
|
||||
}
|
||||
}.create().show()
|
||||
|
||||
login.setOnClickListener {
|
||||
val username = findViewById<EditText>(R.id.username)
|
||||
val password = findViewById<EditText>(R.id.password)
|
||||
val sPassword = "choujin-steiner--${password.text.toString()}--"
|
||||
val hash1Password = StrToHash1.shaEncrypt(sPassword)
|
||||
thread {
|
||||
conn(username.text.toString(),hash1Password)
|
||||
}
|
||||
val intent = Intent(this,MainActivity::class.java)
|
||||
startActivity(intent)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
fun conn(username:String,hash1: String):String{
|
||||
val cookies = ArrayList<Cookie>()
|
||||
val client = OkHttpClient.Builder()
|
||||
.connectTimeout(60,TimeUnit.SECONDS)
|
||||
.cookieJar(object : CookieJar{
|
||||
override fun saveFromResponse(url: HttpUrl, cookies: MutableList<Cookie>) {
|
||||
}
|
||||
|
||||
override fun loadForRequest(url: HttpUrl): MutableList<Cookie> {
|
||||
return cookies
|
||||
}
|
||||
|
||||
})
|
||||
.build()
|
||||
val request = Request.Builder()
|
||||
.url("https://yande.re/?username=$username&password=$hash1")
|
||||
.build()
|
||||
return client.newCall(request).execute().body()!!.string()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.lsp.view.login;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
public class StrToHash1 {
|
||||
public static String shaEncrypt(String strSrc){
|
||||
MessageDigest md = null;
|
||||
String strDes = null;
|
||||
byte[] bt = strSrc.getBytes();
|
||||
try {
|
||||
md = MessageDigest.getInstance("SHA-1");
|
||||
md.update(bt);
|
||||
strDes = bytes2Hex(md.digest());
|
||||
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
return null;
|
||||
}
|
||||
return strDes;
|
||||
|
||||
|
||||
}
|
||||
private static String bytes2Hex(byte[] bts){
|
||||
StringBuilder des = new StringBuilder();
|
||||
String tmp = null;
|
||||
for (int i =0;i<bts.length;i++){
|
||||
tmp = Integer.toHexString(bts[i] & 0xFF);
|
||||
if (tmp.length()==1){
|
||||
des.append("0");
|
||||
}
|
||||
des.append(tmp);
|
||||
}
|
||||
return des.toString();
|
||||
}
|
||||
}
|
||||
+43
-5
@@ -1,22 +1,31 @@
|
||||
package com.lsp.view
|
||||
package com.lsp.view.main
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorListenerAdapter
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.google.android.material.navigation.NavigationView
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.lsp.view.bean.Post
|
||||
import com.hentai.yandeview.Retrofit.PostService
|
||||
import com.hentai.yandeview.Retrofit.ServiceCreator
|
||||
import com.lsp.view.adapter.PostAdapter
|
||||
import com.lsp.view.R
|
||||
import com.lsp.view.login.LoginActivity
|
||||
import retrofit2.Call
|
||||
import retrofit2.Callback
|
||||
import retrofit2.Response
|
||||
@@ -29,7 +38,7 @@ class MainActivity : AppCompatActivity() {
|
||||
private lateinit var searchBar:LinearLayout
|
||||
private var shortAnnotationDuration:Int = 0
|
||||
private var nowPage = 1
|
||||
private lateinit var adapter:PostAdapter
|
||||
private lateinit var adapter: PostAdapter
|
||||
private var isLoading = false
|
||||
private var nowPosition by Delegates.notNull<Int>()
|
||||
|
||||
@@ -56,6 +65,10 @@ class MainActivity : AppCompatActivity() {
|
||||
val close = findViewById<View>(R.id.close)
|
||||
val editCard = findViewById<com.google.android.material.card.MaterialCardView>(R.id.editCard)
|
||||
|
||||
supportActionBar?.let {
|
||||
it.setDisplayHomeAsUpEnabled(true)
|
||||
it.setHomeAsUpIndicator(R.drawable.ic_baseline_menu_24)
|
||||
}
|
||||
|
||||
searchBar = findViewById<LinearLayout>(R.id.search_bar)
|
||||
shortAnnotationDuration = resources.getInteger(android.R.integer.config_shortAnimTime)
|
||||
@@ -84,6 +97,23 @@ class MainActivity : AppCompatActivity() {
|
||||
nowPage = 1
|
||||
loadPost(this, null, searchTag,nowPage.toString())
|
||||
}
|
||||
//登录
|
||||
/**
|
||||
val headerView = LayoutInflater.from(this).inflate(R.layout.nav_header,null)
|
||||
val name = headerView.findViewById<TextView>(R.id.name)
|
||||
name.setOnClickListener {
|
||||
|
||||
val intent = Intent(this,LoginActivity::class.java)
|
||||
startActivity(intent)
|
||||
}*/
|
||||
//侧边栏
|
||||
|
||||
|
||||
val nav = findViewById<NavigationView>(R.id.nav)
|
||||
nav.setCheckedItem(R.id.photo)
|
||||
nav.setNavigationItemSelectedListener {
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -108,6 +138,14 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
val drawerLayout = findViewById<DrawerLayout>(R.id.drawerLayout)
|
||||
when(item.itemId){
|
||||
android.R.id.home -> drawerLayout.openDrawer(GravityCompat.START)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
private fun hideIm(){
|
||||
val imm: InputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
@@ -138,7 +176,7 @@ class MainActivity : AppCompatActivity() {
|
||||
val fbtn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(
|
||||
R.id.fbtn
|
||||
)
|
||||
Snackbar.make(fbtn,"请检查网络连接",Snackbar.LENGTH_SHORT).show()
|
||||
Snackbar.make(fbtn,"请检查网络连接",Snackbar.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
override fun onResponse(call: Call<List<Post>>, response: Response<List<Post>>) {
|
||||
@@ -174,7 +212,7 @@ class MainActivity : AppCompatActivity() {
|
||||
adapter = PostAdapter(context, postList)
|
||||
recyclerView.adapter = adapter
|
||||
}
|
||||
adapter.setLoadMoreListener(object :PostAdapter.OnLoadMoreListener{
|
||||
adapter.setLoadMoreListener(object : PostAdapter.OnLoadMoreListener{
|
||||
override fun loadMore(position: Int) {
|
||||
nowPage++
|
||||
swipeRefreshLayout.isRefreshing = true
|
||||
+8
-5
@@ -1,4 +1,4 @@
|
||||
package com.lsp.view.adapter
|
||||
package com.lsp.view.main
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@@ -9,8 +9,10 @@ import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
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.PicActivity
|
||||
import com.lsp.view.pic.PicActivity
|
||||
import com.lsp.view.R
|
||||
|
||||
class PostAdapter(val context:Context, private val postList: List<Post>) :RecyclerView.Adapter<PostAdapter.ViewHolder>(){
|
||||
@@ -26,7 +28,7 @@ class PostAdapter(val context:Context, private val postList: List<Post>) :Recycl
|
||||
val position = viewHolder.adapterPosition
|
||||
Log.e("position",position.toString())
|
||||
Log.e("url",postList[position].sample_url)
|
||||
val intent = Intent(context,PicActivity::class.java)
|
||||
val intent = Intent(context, PicActivity::class.java)
|
||||
intent.putExtra("id",postList[position].id)
|
||||
intent.putExtra("sample_url",postList[position].sample_url)
|
||||
intent.putExtra("file_url",postList[position].file_url)
|
||||
@@ -40,7 +42,7 @@ class PostAdapter(val context:Context, private val postList: List<Post>) :Recycl
|
||||
return viewHolder
|
||||
}
|
||||
|
||||
private lateinit var mLoadMoreListener:OnLoadMoreListener
|
||||
private lateinit var mLoadMoreListener: OnLoadMoreListener
|
||||
|
||||
interface OnLoadMoreListener{
|
||||
fun loadMore(position: Int)
|
||||
@@ -53,7 +55,8 @@ class PostAdapter(val context:Context, private val postList: List<Post>) :Recycl
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val post = postList[position]
|
||||
Glide.with(context).load(post.preview_url).into(holder.picImage)
|
||||
val glideUrl = GlideUrl(post.preview_url, LazyHeaders.Builder().addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36").build())
|
||||
Glide.with(context).load(glideUrl).into(holder.picImage)
|
||||
if (position==postList.size-1&&postList.size>6){
|
||||
//到达底部
|
||||
mLoadMoreListener.loadMore(position)
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.lsp.view.adapter
|
||||
package com.lsp.view.pic
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.lsp.view.adapter
|
||||
package com.lsp.view.pic
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
+29
-14
@@ -1,38 +1,37 @@
|
||||
package com.lsp.view
|
||||
package com.lsp.view.pic
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorListenerAdapter
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.drawable.Drawable
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.DataSource
|
||||
import com.bumptech.glide.load.engine.GlideException
|
||||
import com.bumptech.glide.load.model.GlideUrl
|
||||
import com.bumptech.glide.load.model.LazyHeaders
|
||||
import com.bumptech.glide.request.RequestListener
|
||||
import com.bumptech.glide.request.target.Target
|
||||
import com.github.chrisbanes.photoview.PhotoView
|
||||
import com.google.android.flexbox.*
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.lsp.view.adapter.AuthorAdapter
|
||||
import com.lsp.view.adapter.IdAdapter
|
||||
import com.lsp.view.adapter.SizeAdapter
|
||||
import com.lsp.view.adapter.TagAdapter
|
||||
import com.lsp.view.R
|
||||
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 okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import java.io.*
|
||||
@@ -83,8 +82,10 @@ class PicActivity : AppCompatActivity() {
|
||||
sharedPreferences.putBoolean("FirstRun",false)
|
||||
val FileD = File("${Environment.getExternalStorageDirectory()}/${Environment.DIRECTORY_PICTURES}/LspMake")
|
||||
FileD.mkdirs()
|
||||
|
||||
}
|
||||
|
||||
|
||||
val id = intent.getStringExtra("id")
|
||||
if (id!=null){
|
||||
loadTags<ID>(id)
|
||||
@@ -94,10 +95,11 @@ class PicActivity : AppCompatActivity() {
|
||||
loadPic(it)
|
||||
}
|
||||
|
||||
|
||||
val file_url = intent.getStringExtra("file_url")
|
||||
val file_ext = intent.getStringExtra("file_ext")
|
||||
val fbtn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(R.id.fbtn)
|
||||
val fbtn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(
|
||||
R.id.fbtn
|
||||
)
|
||||
|
||||
val path = "${Environment.getExternalStorageDirectory()}/${Environment.DIRECTORY_PICTURES}/LspMake/" +
|
||||
"${time}.$file_ext"
|
||||
@@ -171,7 +173,9 @@ class PicActivity : AppCompatActivity() {
|
||||
) {
|
||||
val file_ext = intent.getStringExtra("file_ext")
|
||||
val file_url = intent.getStringExtra("file_url")
|
||||
val fbtn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(R.id.fbtn)
|
||||
val fbtn = findViewById<com.google.android.material.floatingactionbutton.FloatingActionButton>(
|
||||
R.id.fbtn
|
||||
)
|
||||
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
when(requestCode){
|
||||
@@ -242,8 +246,9 @@ class PicActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
private fun loadPic(url:String){
|
||||
val glideUrl = GlideUrl(url, LazyHeaders.Builder().addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36").build())
|
||||
|
||||
Glide.with(this).load(url).listener(object :RequestListener<Drawable?>{
|
||||
Glide.with(this).load(glideUrl).listener(object :RequestListener<Drawable?>{
|
||||
override fun onLoadFailed(
|
||||
e: GlideException?,
|
||||
model: Any?,
|
||||
@@ -251,7 +256,17 @@ class PicActivity : AppCompatActivity() {
|
||||
isFirstResource: Boolean
|
||||
): Boolean {
|
||||
val pb = findViewById<ProgressBar>(R.id.pb)
|
||||
Snackbar.make(pb,"加载错误",Snackbar.LENGTH_SHORT).show()
|
||||
Log.e("erroe",e.toString())
|
||||
Snackbar.make(pb,"加载错误",Snackbar.LENGTH_LONG).setAction("查看Log"){
|
||||
AlertDialog.Builder(this@PicActivity).apply {
|
||||
setTitle("Log")
|
||||
setMessage(e.toString())
|
||||
setNegativeButton("确定",null)
|
||||
create()
|
||||
show()
|
||||
}
|
||||
}.show()
|
||||
pb.visibility = View.INVISIBLE
|
||||
return false
|
||||
|
||||
}
|
||||
@@ -299,9 +314,9 @@ class PicActivity : AppCompatActivity() {
|
||||
tagList.add(Tags(tag))
|
||||
}
|
||||
val adapter = TagAdapter(tagList)
|
||||
adapter.setOnItemClickListener(object :TagAdapter.OnItemClickListener{
|
||||
adapter.setOnItemClickListener(object : TagAdapter.OnItemClickListener{
|
||||
override fun onItemClick(view: View, position: Int) {
|
||||
val intent = Intent(this@PicActivity,MainActivity::class.java)
|
||||
val intent = Intent(this@PicActivity, MainActivity::class.java)
|
||||
intent.putExtra("searchTag",tagList[position].tag)
|
||||
startActivity(intent)
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.lsp.view.adapter
|
||||
package com.lsp.view.pic
|
||||
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.lsp.view.adapter
|
||||
package com.lsp.view.pic
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M17.63,5.84C17.27,5.33 16.67,5 16,5L5,5.01C3.9,5.01 3,5.9 3,7v10c0,1.1 0.9,1.99 2,1.99L16,19c0.67,0 1.27,-0.33 1.63,-0.84L22,12l-4.37,-6.16z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M11,7L9.6,8.4l2.6,2.6H2v2h10.2l-2.6,2.6L11,17l5,-5L11,7zM20,19h-8v2h8c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2h-8v2h8V19z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="40dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="20" android:viewportWidth="20"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".login.LoginActivity">
|
||||
<TextView
|
||||
android:layout_marginTop="160dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="44sp"
|
||||
android:id="@+id/title"
|
||||
android:text="Login"/>
|
||||
<EditText
|
||||
android:hint="账号..."
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/username"/>
|
||||
<EditText
|
||||
android:hint="密码..."
|
||||
android:inputType="textPassword"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/password"/>
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:id="@+id/login"
|
||||
android:background="@color/primary"
|
||||
android:src="@drawable/ic_baseline_navigate_next_24"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_gravity="center"
|
||||
android:elevation="8dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -1,10 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.drawerlayout.widget.DrawerLayout
|
||||
android:id="@+id/drawerLayout"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
tools:context=".main.MainActivity">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".main.MainActivity">
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
@@ -77,8 +84,6 @@
|
||||
android:paddingStart="10dp"
|
||||
android:textSize="20sp"
|
||||
android:layout_width="match_parent"
|
||||
android:textColor="#000"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:id="@+id/search"/>
|
||||
<View
|
||||
@@ -95,9 +100,17 @@
|
||||
android:layout_weight="1"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/nav"
|
||||
android:layout_gravity="start"
|
||||
app:menu="@menu/nav_menu"
|
||||
app:headerLayout="@layout/nav_header"
|
||||
android:fitsSystemWindows="true"/>
|
||||
<!-- TODO 侧边连:登录 收藏 Tag列表-->
|
||||
|
||||
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".PicActivity">
|
||||
tools:context=".pic.PicActivity">
|
||||
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/nav_header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="180dp">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:text="Null"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:textSize="32sp" />
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="#000"/>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -2,13 +2,16 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<group android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/yande"
|
||||
android:icon="@drawable/ic_launcher_foreground"
|
||||
android:title="Yande.re"/>
|
||||
android:id="@+id/photo"
|
||||
android:icon="@drawable/ic_baseline_insert_photo_24"
|
||||
android:title="Photo"/>
|
||||
<item
|
||||
android:id="@+id/ko"
|
||||
android:icon="@drawable/ic_launcher_foreground"
|
||||
android:title="Yande.re"/>
|
||||
android:id="@+id/fav"
|
||||
android:icon="@drawable/ic_baseline_favorite_24"
|
||||
android:title="Favorite"/>
|
||||
<item
|
||||
android:id="@+id/taglist"
|
||||
android:icon="@drawable/ic_baseline_label_24"
|
||||
android:title="Tags"/>
|
||||
</group>
|
||||
|
||||
</menu>
|
||||
Reference in New Issue
Block a user