From 4a6892d0c6cac49c0dc1621f8bd2787d8993f1b7 Mon Sep 17 00:00:00 2001 From: wzq Date: Fri, 13 Oct 2023 19:37:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E7=9B=B8=E5=86=8CUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 2 + .../avroom/activity/RoomAlbumActivity.kt | 145 ++++++++++++++++++ .../avroom/anotherroompk/RoomPKBoardView.kt | 2 +- .../avroom/fragment/RoomAlbumFragment.kt | 51 ++++++ .../avroom/fragment/RoomAlbumViewModel.kt | 6 + .../erban/avroom/model/RoomAlbumViewModel.kt | 9 ++ .../yizhuan/erban/view/ShadowFrameLayout.java | 92 +++++++++++ .../bg_activity_room_album_upload.png | Bin 0 -> 38293 bytes .../drawable-xhdpi/ic_lock_room_album.webp | Bin 0 -> 370 bytes .../main/res/drawable/bg_mask_room_album.xml | 11 ++ .../res/drawable/bg_room_album_action.xml | 47 ++++++ .../main/res/layout/activity_room_album.xml | 44 ++++++ .../main/res/layout/fragment_room_album.xml | 8 + app/src/main/res/layout/item_room_album.xml | 84 ++++++++++ app/src/main/res/values/attrs.xml | 8 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 2 + 18 files changed, 514 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/activity/RoomAlbumActivity.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumFragment.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumViewModel.kt create mode 100644 app/src/main/java/com/yizhuan/erban/avroom/model/RoomAlbumViewModel.kt create mode 100644 app/src/main/java/com/yizhuan/erban/view/ShadowFrameLayout.java create mode 100644 app/src/main/res/drawable-xhdpi/bg_activity_room_album_upload.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_lock_room_album.webp create mode 100644 app/src/main/res/drawable/bg_mask_room_album.xml create mode 100644 app/src/main/res/drawable/bg_room_album_action.xml create mode 100644 app/src/main/res/layout/activity_room_album.xml create mode 100644 app/src/main/res/layout/fragment_room_album.xml create mode 100644 app/src/main/res/layout/item_room_album.xml diff --git a/app/build.gradle b/app/build.gradle index 11f64dfae..1071e69ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -212,6 +212,9 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.4.2' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 911655554..08f6d0fee 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1086,6 +1086,8 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomAlbumActivity.kt b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomAlbumActivity.kt new file mode 100644 index 000000000..dd6dfd865 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomAlbumActivity.kt @@ -0,0 +1,145 @@ +package com.yizhuan.erban.avroom.activity + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.graphics.Canvas +import android.graphics.LinearGradient +import android.graphics.Shader +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter +import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.fragment.RoomAlbumFragment +import com.yizhuan.erban.avroom.model.RoomAlbumViewModel +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityRoomAlbumBinding +import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.GradientLinePagerIndicator +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator +import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView + +class RoomAlbumActivity : BaseViewBindingActivity() { + + val viewModel: RoomAlbumViewModel by viewModels() + + override fun init() { + initTitleBar(getString(R.string.room_album)) + mTitleBar.setBackgroundResource(R.color.color_F5F6FA) + + val titles = listOf("我的照片", "普通照片", "解鎖照片") + + //binding.tvUpload.setImageResource(R.drawable.bg_activity_room_album_upload) + + binding.indicator.navigator = CommonNavigator(this).apply { + isAdjustMode = true + + adapter = object : CommonNavigatorAdapter() { + var startColor = ContextCompat.getColor(context, R.color.color_5CF1FF) + var endColor = ContextCompat.getColor(context, R.color.color_CF70FF) + override fun getCount(): Int { + return 3 + } + + override fun getTitleView(context: Context, index: Int): IPagerTitleView { + return ColorTransitionPagerTitleView(context).apply { + normalColor = ContextCompat.getColor(context, R.color.color_767585) + selectedColor = ContextCompat.getColor(context, R.color.color_1F1B4F) + text = titles[index] + } + } + + override fun getIndicator(context: Context?): IPagerIndicator { + return object : GradientLinePagerIndicator(context) { + @SuppressLint("DrawAllocation") + override fun onDraw(canvas: Canvas) { + val g = LinearGradient( + lineRect.left, + lineRect.top, + lineRect.right, + lineRect.bottom, + intArrayOf(startColor, endColor), + null, + Shader.TileMode.CLAMP + ) + paint.shader = g + canvas.drawRoundRect(lineRect, roundRadius, roundRadius, paint) + } + + }.apply { + lineHeight = resources.getDimensionPixelOffset(R.dimen.dp_4).toFloat() + lineWidth = resources.getDimensionPixelOffset(R.dimen.dp_15).toFloat() + roundRadius = resources.getDimensionPixelOffset(R.dimen.dp_2).toFloat() + //yOffset = resources.getDimensionPixelOffset(R.dimen.dp_4).toFloat() + mode = LinePagerIndicator.MODE_EXACTLY + } + } + } + } + ViewPagerHelper.bind(binding.indicator, binding.vp) + + val fragments = listOf( + RoomAlbumFragment.newInstance(), + RoomAlbumFragment.newInstance(), + RoomAlbumFragment.newInstance() + ) + + binding.vp.adapter = object : FragmentStateAdapter(this) { + override fun getItemCount(): Int { + return fragments.size + } + + override fun createFragment(position: Int): Fragment { + return fragments[position] + } + } + + //binding.vp.adapter = object : + // BaseQuickAdapter(R.layout.common_recyclerview, titles) { + // override fun convert(helper: BaseViewHolder, item: String) { + // val recyclerView = helper.getView(R.id.recycler_view) + // recyclerView.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT + // recyclerView.layoutManager = GridLayoutManager(this@RoomAlbumActivity, 2) + // val offset = resources.getDimensionPixelOffset(R.dimen.dp_15) + // recyclerView.addItemDecoration( + // GridSpacingItemNewDecoration( + // offset, + // offset, + // true + // ) + // ) + // recyclerView.adapter = + // object : BaseQuickAdapter(R.layout.item_room_album) { + // override fun convert(helper: BaseViewHolder, item: Int?) { + // ImageLoadUtils.loadImageWithBlur( + // context, + // "https://image.hfighting.com/FsElQzIALqAixbAT56riNMotkAZR?imageslim", + // helper.getView(R.id.iv_pic), + // 25, 4 + // ) + // + // } + // }.apply { + // val list = mutableListOf() + // for (i in 0 until 20) { + // list.add(0) + // } + // setNewData(list) + // } + // } + //} + } + + companion object { + @JvmStatic + fun start(context: Context) { + val starter = Intent(context, RoomAlbumActivity::class.java) + context.startActivity(starter) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/anotherroompk/RoomPKBoardView.kt b/app/src/main/java/com/yizhuan/erban/avroom/anotherroompk/RoomPKBoardView.kt index a6fdf9ea1..1af4a43fd 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/anotherroompk/RoomPKBoardView.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/anotherroompk/RoomPKBoardView.kt @@ -39,7 +39,7 @@ class RoomPKBoardView @JvmOverloads constructor( ) : DragLayout(context, attrs, defStyleAttr) { private val binding = LayoutRoomPkBoardViewBinding.inflate(LayoutInflater.from(context)) - private val observer = Observer { updateView(it) } + private val observer = Observer { updateView(it) } private var disposable: Disposable? = null private lateinit var helpPopupWindow: PopupWindow private var roomPkBean: RoomPkBean? = null diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumFragment.kt new file mode 100644 index 000000000..cf9b7b45f --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumFragment.kt @@ -0,0 +1,51 @@ +package com.yizhuan.erban.avroom.fragment + +import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.GridLayoutManager +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingFragment +import com.yizhuan.erban.databinding.FragmentRoomAlbumBinding +import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration + +class RoomAlbumFragment : BaseViewBindingFragment() { + + private val viewModel: RoomAlbumViewModel by viewModels() + + override fun init() { + binding.recyclerView.layoutManager = GridLayoutManager(context, 2) + val offset = resources.getDimensionPixelOffset(R.dimen.dp_15) + binding.recyclerView.addItemDecoration( + GridSpacingItemNewDecoration( + offset, + offset, + true + ) + ) + binding.recyclerView.adapter = + object : BaseQuickAdapter(R.layout.item_room_album) { + override fun convert(helper: BaseViewHolder, item: Int?) { + //ImageLoadUtils.loadImageWithBlur( + // context, + // "https://image.hfighting.com/FsElQzIALqAixbAT56riNMotkAZR?imageslim", + // helper.getView(R.id.iv_pic), + // 25, 4 + //) + + } + }.apply { + val list = mutableListOf() + for (i in 0 until 20) { + list.add(0) + } + setNewData(list) + } + + } + + companion object { + fun newInstance() = RoomAlbumFragment() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumViewModel.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumViewModel.kt new file mode 100644 index 000000000..6993d1952 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/RoomAlbumViewModel.kt @@ -0,0 +1,6 @@ +package com.yizhuan.erban.avroom.fragment + +import com.yizhuan.erban.base.BaseViewModel + +class RoomAlbumViewModel : BaseViewModel() { +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/model/RoomAlbumViewModel.kt b/app/src/main/java/com/yizhuan/erban/avroom/model/RoomAlbumViewModel.kt new file mode 100644 index 000000000..0f4bc6809 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/model/RoomAlbumViewModel.kt @@ -0,0 +1,9 @@ +package com.yizhuan.erban.avroom.model + +import com.yizhuan.erban.base.BaseViewModel + +class RoomAlbumViewModel :BaseViewModel(){ + init { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/view/ShadowFrameLayout.java b/app/src/main/java/com/yizhuan/erban/view/ShadowFrameLayout.java new file mode 100644 index 000000000..5ba281241 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/view/ShadowFrameLayout.java @@ -0,0 +1,92 @@ +package com.yizhuan.erban.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +import androidx.annotation.ColorInt; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; + +import com.yizhuan.erban.R; + +/** + * @author wzq + */ +public class ShadowFrameLayout extends FrameLayout { + + private Paint mShadowPaint; + private float mCornerRadius; + /** + * 只有上面有阴影 + */ + private boolean mShadowTop; + + private float mShadowRadius; + + private RectF mRectF; + + public ShadowFrameLayout(@NonNull Context context) { + this(context, null); + } + + public ShadowFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public ShadowFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ShadowFrameLayout); + int shadowColor = typedArray.getColor(R.styleable.ShadowFrameLayout_shadowColor, + ContextCompat.getColor(context, R.color.color_1E686868)); + int backgroundColor = typedArray.getColor(R.styleable.ShadowFrameLayout_backgroundColor, Color.WHITE); + mShadowRadius = typedArray.getDimension(R.styleable.ShadowFrameLayout_shadowRadius, 0); + mCornerRadius = typedArray.getDimension(R.styleable.ShadowFrameLayout_cornerRadius, 0); + mShadowTop = typedArray.getBoolean(R.styleable.ShadowFrameLayout_shadowTop, false); + typedArray.recycle(); + + mShadowPaint = new Paint(); + mShadowPaint.setShadowLayer(mShadowRadius, 0, 0, shadowColor); + mShadowPaint.setAntiAlias(true); + mShadowPaint.setColor(backgroundColor); + setLayerType(LAYER_TYPE_SOFTWARE, null); + + mRectF = new RectF(); + } + + @Override + public void setBackgroundColor(@ColorInt int color) { + mShadowPaint.setColor(color); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int measuredWidth = getMeasuredWidth(); + int measuredHeight = getMeasuredHeight(); + if (mShadowTop) { + // 矩形只有上方有阴影 + mRectF.set(0, mShadowRadius, measuredWidth, measuredHeight + mCornerRadius); + } else { + // 环绕阴影 + mRectF.set(mShadowRadius, mShadowRadius, measuredWidth - mShadowRadius, measuredHeight - mShadowRadius); + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + canvas.drawRoundRect(mRectF, mCornerRadius, mCornerRadius, mShadowPaint); + super.dispatchDraw(canvas); + } +} diff --git a/app/src/main/res/drawable-xhdpi/bg_activity_room_album_upload.png b/app/src/main/res/drawable-xhdpi/bg_activity_room_album_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..5273fda2b6fce3656e60d6babf10fb98430da785 GIT binary patch literal 38293 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 Q+-m6F + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_room_album_action.xml b/app/src/main/res/drawable/bg_room_album_action.xml new file mode 100644 index 000000000..0a7d143ad --- /dev/null +++ b/app/src/main/res/drawable/bg_room_album_action.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_room_album.xml b/app/src/main/res/layout/activity_room_album.xml new file mode 100644 index 000000000..ac5cba857 --- /dev/null +++ b/app/src/main/res/layout/activity_room_album.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_room_album.xml b/app/src/main/res/layout/fragment_room_album.xml new file mode 100644 index 000000000..82945830a --- /dev/null +++ b/app/src/main/res/layout/fragment_room_album.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_room_album.xml b/app/src/main/res/layout/item_room_album.xml new file mode 100644 index 000000000..3bcc552e3 --- /dev/null +++ b/app/src/main/res/layout/item_room_album.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index f54a48c3d..c44ecf971 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -420,4 +420,12 @@ + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index a0292320f..ed4ce16bd 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -700,5 +700,6 @@ #A974FF #C2A66FFF #306065 + #1E686868 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ee0ec4d83..4f10bd02a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5134,5 +5134,7 @@ 輸入數量 分解普通精靈將隨機獲得80-100個碎片 分解傳說精靈將隨機獲得400-500個碎片 + 上傳照片 + 房間相冊 \ No newline at end of file