Commit ae458d70 authored by wanglei's avatar wanglei

...

parent 8fd197b3
...@@ -109,7 +109,8 @@ dependencies { ...@@ -109,7 +109,8 @@ dependencies {
//第三方UI控件 //第三方UI控件
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4") implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4")
implementation("io.github.youth5201314:banner:2.2.3") implementation("com.github.zhpanvip:bannerviewpager:3.5.12")
implementation("com.github.angcyo.DslTablayout:TabLayout:3.6.4") implementation("com.github.angcyo.DslTablayout:TabLayout:3.6.4")
implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4") implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4")
implementation("io.github.litao0621:nifty-slider:2.0.2") implementation("io.github.litao0621:nifty-slider:2.0.2")
......
...@@ -55,16 +55,19 @@ class ShortPlayHistoryAdapter( ...@@ -55,16 +55,19 @@ class ShortPlayHistoryAdapter(
private fun saveShortFavorite(item: ShortPlayHistory, favorite: Boolean) { private fun saveShortFavorite(item: ShortPlayHistory, favorite: Boolean) {
MainScope().launch(Dispatchers.IO) { MainScope().launch(Dispatchers.IO) {
val favoriteList = SpJsonUtils.getSpJsonList<ShortPlay>(KEY_SHORTPLAY_FAVORITE).toMutableList() val favoriteList = SpJsonUtils.getSpJsonList<ShortPlay>(KEY_SHORTPLAY_FAVORITE).toMutableList()
if (favorite) { if (favorite) {
val findBean = favoriteList.find { it.id == item.shortPlay.id } val findBean = favoriteList.find { it.id == item.shortPlay.id }
if (findBean == null) { if (findBean == null) {
favoriteList.add(item.shortPlay) favoriteList.add(item.shortPlay)
SpJsonUtils.saveJsonBeanList(KEY_SHORTPLAY_FAVORITE, favoriteList) SpJsonUtils.saveJsonBeanList(KEY_SHORTPLAY_FAVORITE, favoriteList)
} }
} else { } else {
favoriteList.removeIf { it.id == item.shortPlay.id } favoriteList.removeIf { it.id == item.shortPlay.id }
SpJsonUtils.saveJsonBeanList(KEY_SHORTPLAY_FAVORITE, favoriteList) SpJsonUtils.saveJsonBeanList(KEY_SHORTPLAY_FAVORITE, favoriteList)
} }
} }
} }
......
...@@ -4,10 +4,13 @@ import android.content.Context ...@@ -4,10 +4,13 @@ import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.palette.graphics.Palette import androidx.palette.graphics.Palette
import androidx.viewpager2.widget.ViewPager2
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.databinding.ItemBannerBinding import com.base.appzxhy.databinding.ItemBannerBinding
import com.base.appzxhy.databinding.ItemGalleryBannerBinding import com.base.appzxhy.databinding.ItemGalleryBannerBinding
...@@ -20,8 +23,12 @@ import com.bumptech.glide.request.target.CustomTarget ...@@ -20,8 +23,12 @@ import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import com.bytedance.sdk.shortplay.api.ShortPlay import com.bytedance.sdk.shortplay.api.ShortPlay
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import com.youth.banner.adapter.BannerAdapter import com.zhpan.bannerview.BannerViewPager
import com.youth.banner.listener.OnPageChangeListener import com.zhpan.bannerview.BaseBannerAdapter
import com.zhpan.bannerview.BaseViewHolder
import com.zhpan.bannerview.constants.PageStyle
import com.zhpan.indicator.enums.IndicatorSlideMode
import com.zhpan.indicator.enums.IndicatorStyle
class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
...@@ -30,7 +37,7 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { ...@@ -30,7 +37,7 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
var playAction: ((shortPlay: ShortPlay) -> Unit)? = null var playAction: ((shortPlay: ShortPlay) -> Unit)? = null
var binding: ItemBannerBinding? = null var binding: ItemBannerBinding? = null
private var paletteMap = HashMap<String, Int>() private var paletteMap = HashMap<String, Int>()
var paletteCallBack: ((color: Int) -> Unit)? = null // var paletteCallBack: ((color: Int) -> Unit)? = null
override fun getItemCount(items: List<List<ShortPlay>>): Int { override fun getItemCount(items: List<List<ShortPlay>>): Int {
return items.size return items.size
...@@ -46,36 +53,52 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { ...@@ -46,36 +53,52 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
val top = BarUtils.getStatusBarHeight() + context.resources.getDimensionPixelSize(R.dimen.dp_66) val top = BarUtils.getStatusBarHeight() + context.resources.getDimensionPixelSize(R.dimen.dp_66)
binding?.root?.updatePadding(top = top) binding?.root?.updatePadding(top = top)
val innerAdapter = binding?.banner?.adapter as GalleryAdapter? if (binding?.banner?.adapter == null && item.isNotEmpty()) {
if (innerAdapter == null && item.isNotEmpty()) {
LogEx.logDebug(TAG, "onBindViewHolder banner") LogEx.logDebug(TAG, "onBindViewHolder banner")
binding?.banner?.setAdapter(GalleryAdapter(item)) val innerAdapter = GalleryAdapter()
binding?.banner?.setLoopTime(2500) val banner: BannerViewPager<ShortPlay>? = binding?.root?.findViewById(R.id.banner)
//添加画廊效果 banner?.adapter = innerAdapter
binding?.banner?.setBannerGalleryEffect( banner?.currentItem = item.size / 2
context.resources.getDimensionPixelSize(R.dimen.dp_30), banner?.setPageMargin(context.resources.getDimensionPixelOffset(R.dimen.dp_10))
context.resources.getDimensionPixelSize(R.dimen.dp_10) banner?.setScrollDuration(800)
banner?.setRevealWidth(
context.resources.getDimensionPixelOffset(R.dimen.dp_30),
context.resources.getDimensionPixelOffset(R.dimen.dp_30)
) )
binding?.banner?.setIndicator(binding?.indicator, false) banner?.setPageStyle(PageStyle.MULTI_PAGE_SCALE, 0.85f)
binding?.banner?.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { banner?.setIndicatorVisibility(View.GONE)
} banner?.setIndicatorSlideMode(IndicatorSlideMode.SCALE)
banner?.setIndicatorStyle(IndicatorStyle.ROUND_RECT)
banner?.setIndicatorSliderGap(
context.resources.getDimensionPixelSize(R.dimen.dp_6)
)
banner?.setIndicatorSliderWidth(
context.resources.getDimensionPixelSize(R.dimen.dp_13),
context.resources.getDimensionPixelSize(R.dimen.dp_20)
)
banner?.setIndicatorSliderColor(
ContextCompat.getColor(context, R.color.color_4dffffff),
ContextCompat.getColor(context, R.color.color_ffffff),
)
banner?.setIndicatorView(binding?.indicator)
banner?.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
LogEx.logDebug(TAG, "onPageSelected position=$position")
val bean = item[position] val bean = item[position]
val coverImage = bean.coverImage val coverImage = bean.coverImage
val color = paletteMap[coverImage] ?: Color.BLACK val color = paletteMap[coverImage] ?: Color.BLACK
LogEx.logDebug(TAG, "position=$position coverImage=$coverImage color=$color") // paletteCallBack?.invoke(color)
paletteCallBack?.invoke(color)
binding?.root?.setBackgroundColor(color) binding?.root?.setBackgroundColor(color)
}
override fun onPageScrollStateChanged(state: Int) {
} }
}) })
banner?.create(item)
} else { } else {
innerAdapter?.setDatas(item) if (binding?.banner?.adapter?.itemCount == 0) {
binding?.banner?.currentItem = item.size / 2
binding?.banner?.addData(item)
}
} }
} }
...@@ -83,23 +106,11 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { ...@@ -83,23 +106,11 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
return CommonViewHolder(R.layout.item_banner.inflate(parent)) return CommonViewHolder(R.layout.item_banner.inflate(parent))
} }
inner class GalleryAdapter(list: List<ShortPlay>) : BannerAdapter<ShortPlay, CommonViewHolder>(list) { fun setBannerAutoLoop(isAutoLoop: Boolean) {
binding?.banner?.setCanLoop(isAutoLoop)
override fun onCreateHolder(parent: ViewGroup, viewType: Int): CommonViewHolder {
return CommonViewHolder(R.layout.item_gallery_banner.inflate(parent))
}
override fun onBindView(holder: CommonViewHolder, data: ShortPlay?, position: Int, size: Int) {
data ?: return
val context = holder.itemView.context
val binding = ItemGalleryBannerBinding.bind(holder.itemView)
binding.llPlay.setOnClickListener {
playAction?.invoke(data)
}
paletteImage(binding.iv, data.coverImage)
} }
} inner class GalleryAdapter : BaseBannerAdapter<ShortPlay>() {
private fun paletteImage(imageView: ImageView, coverImage: String) { private fun paletteImage(imageView: ImageView, coverImage: String) {
Glide.with(context) Glide.with(context)
...@@ -111,13 +122,15 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { ...@@ -111,13 +122,15 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
Palette.from(bitmap).generate { palette -> Palette.from(bitmap).generate { palette ->
palette ?: return@generate palette ?: return@generate
// 获取主题色 // 获取主题色
val vibrantColor: Int = palette.getVibrantColor(Color.TRANSPARENT) // val vibrantColor: Int = palette.getVibrantColor(Color.TRANSPARENT)
val mutedColor: Int = palette.getMutedColor(Color.TRANSPARENT) //柔和是
// val mutedColor: Int = palette.getMutedColor(Color.TRANSPARENT)
val alpha = 230 // 透明度值,范围为0-255,0为完全透明,255为完全不透明 //主色调
val newColor = mutedColor and 0x00ffffff or (alpha shl 24) val dominantColor = palette.getDominantColor(Color.TRANSPARENT)
// val alpha = 230 // 透明度值,范围为0-255,0为完全透明,255为完全不透明
// val newColor = vibrantColor and 0x00ffffff or (alpha shl 24)
// 使用这些颜色进行后续操作,例如设置背景色等 // 使用这些颜色进行后续操作,例如设置背景色等
paletteMap[coverImage] = newColor paletteMap[coverImage] = dominantColor
} }
} }
...@@ -125,9 +138,24 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() { ...@@ -125,9 +138,24 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
// 图片加载失败或清除时的处理 // 图片加载失败或清除时的处理
} }
}) })
imageView.tag = coverImage
} }
fun setBannerAutoLoop(isAutoLoop: Boolean) { override fun bindData(holder: BaseViewHolder<ShortPlay>, data: ShortPlay?, position: Int, pageSize: Int) {
binding?.banner?.isAutoLoop(isAutoLoop) data ?: return
val binding = ItemGalleryBannerBinding.bind(holder.itemView)
binding.llPlay.setOnClickListener {
playAction?.invoke(data)
}
val tag = binding.iv.tag
LogEx.logDebug(TAG, "position=$position tag=$tag coverImage=${data.coverImage}")
if (tag != data.coverImage) {
paletteImage(binding.iv, data.coverImage)
}
}
override fun getLayoutId(viewType: Int): Int {
return R.layout.item_gallery_banner
}
} }
} }
\ No newline at end of file
...@@ -97,9 +97,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl ...@@ -97,9 +97,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
putExtra("data", Gson().toJson(shortPlay)) putExtra("data", Gson().toJson(shortPlay))
}) })
} }
it.paletteCallBack = { color -> // it.paletteCallBack = { color ->
// binding.blurView.setOverlayColor(color) // binding.blurView.setOverlayColor(color)
} // }
contactAdapter?.addAdapter(0, it) contactAdapter?.addAdapter(0, it)
} }
......
...@@ -22,12 +22,11 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis ...@@ -22,12 +22,11 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.rv.adapter = shortPlayAdapter binding.rv.adapter = shortPlayAdapter
refreshRv()
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
refreshRv()
} }
private fun refreshRv() { private fun refreshRv() {
...@@ -36,6 +35,7 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis ...@@ -36,6 +35,7 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis
val favoriteList = SpJsonUtils.getSpJsonList<ShortPlay>(KEY_SHORTPLAY_FAVORITE).map { it.id } val favoriteList = SpJsonUtils.getSpJsonList<ShortPlay>(KEY_SHORTPLAY_FAVORITE).map { it.id }
val list = SpJsonUtils.getSpJsonList<ShortPlayHistory>(KEY_SHORTPLAY_HISTORY) val list = SpJsonUtils.getSpJsonList<ShortPlayHistory>(KEY_SHORTPLAY_HISTORY)
list.forEach { list.forEach {
if (favoriteList.contains(it.shortPlay.id)) { if (favoriteList.contains(it.shortPlay.id)) {
it.isFavorite = true it.isFavorite = true
...@@ -45,6 +45,8 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis ...@@ -45,6 +45,8 @@ class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHis
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
binding.llEmpty.isVisible = list.isEmpty() binding.llEmpty.isVisible = list.isEmpty()
shortPlayAdapter.submitList(list) shortPlayAdapter.submitList(list)
val pfg = parentFragment as MyListFragment
pfg.changeEditEnable(list.isNotEmpty())
} }
} }
} }
......
...@@ -84,4 +84,8 @@ class MyListFragment : BaseFragment<FragmentMyListBinding>(FragmentMyListBinding ...@@ -84,4 +84,8 @@ class MyListFragment : BaseFragment<FragmentMyListBinding>(FragmentMyListBinding
super.initListener() super.initListener()
} }
fun changeEditEnable(enable: Boolean) {
binding.ivEdit.isEnabled = enable
}
} }
\ No newline at end of file
package com.base.appzxhy.ui.main.mylist package com.base.appzxhy.ui.main.mylist
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentMyListPageBinding import com.base.appzxhy.databinding.FragmentMyListPageBinding
import com.base.appzxhy.ui.adapter.ShortPlayAdapter import com.base.appzxhy.ui.adapter.ShortPlayAdapter
import com.base.appzxhy.utils.SpJsonUtils
import com.base.appzxhy.utils.SpJsonUtils.KEY_SHORTPLAY_FAVORITE
import com.bytedance.sdk.shortplay.api.ShortPlay
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MyListPageFragment : BaseFragment<FragmentMyListPageBinding>(FragmentMyListPageBinding::inflate) { class MyListPageFragment : BaseFragment<FragmentMyListPageBinding>(FragmentMyListPageBinding::inflate) {
...@@ -12,6 +19,22 @@ class MyListPageFragment : BaseFragment<FragmentMyListPageBinding>(FragmentMyLis ...@@ -12,6 +19,22 @@ class MyListPageFragment : BaseFragment<FragmentMyListPageBinding>(FragmentMyLis
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.rv.adapter = shortPlayAdapter binding.rv.adapter = shortPlayAdapter
}
override fun onResume() {
super.onResume()
refreshData()
}
private fun refreshData() = lifecycleScope.launch(Dispatchers.IO) {
val list = SpJsonUtils.getSpJsonList<ShortPlay>(KEY_SHORTPLAY_FAVORITE)
launch(Dispatchers.Main) {
binding.llEmpty.isVisible = list.isEmpty()
shortPlayAdapter.submitList(list)
val pfg = parentFragment as MyListFragment
pfg.changeEditEnable(list.isNotEmpty())
}
} }
override fun initListener() { override fun initListener() {
......
package com.base.appzxhy.ui.views
import android.content.Context
import com.zhpan.indicator.base.BaseIndicatorView
class MyIndicatorView(context: Context) : BaseIndicatorView(context, null, 0) {
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<gradient <gradient
android:angle="90" android:angle="90"
android:centerY="0.5" android:centerY="0.5"
android:endColor="#1A000000" android:endColor="#00000000"
android:startColor="@color/black" /> android:startColor="@color/black" />
</shape> </shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/my_bianji_n" android:state_enabled="false" />
<item android:drawable="@mipmap/my_bianji_s" android:state_enabled="true" />
</selector>
\ No newline at end of file
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
android:id="@+id/rv" android:id="@+id/rv"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_shortplay_style_5" /> tools:listitem="@layout/item_shortplay_style_5" />
......
...@@ -44,19 +44,19 @@ ...@@ -44,19 +44,19 @@
app:layout_constraintTop_toBottomOf="@id/dslTabLayout" /> app:layout_constraintTop_toBottomOf="@id/dslTabLayout" />
<FrameLayout <FrameLayout
android:id="@+id/flEdit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="16dp" android:padding="16dp"
android:src="@mipmap/my_bianji_n"
app:layout_constraintBottom_toBottomOf="@id/dslTabLayout" app:layout_constraintBottom_toBottomOf="@id/dslTabLayout"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/dslTabLayout"> app:layout_constraintTop_toTopOf="@id/dslTabLayout">
<ImageView <ImageView
android:id="@+id/ivIcon" android:id="@+id/ivEdit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@mipmap/my_bianji_n" android:src="@drawable/my_bianji_enable"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
</FrameLayout> </FrameLayout>
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3" app:spanCount="3"
tools:listitem="@layout/item_shortplay_style_3" /> tools:listitem="@layout/item_shortplay_style_3" />
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:banner="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root" android:id="@+id/root"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -18,20 +18,16 @@ ...@@ -18,20 +18,16 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<com.youth.banner.Banner <com.zhpan.bannerview.BannerViewPager
android:id="@+id/banner" android:id="@+id/banner"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="450dp" android:layout_height="450dp"
banner:banner_indicator_height="3dp" app:bvp_page_style="multi_page"
banner:banner_indicator_normal_color="#4DFFFFFF" app:layout_constraintEnd_toEndOf="parent"
banner:banner_indicator_normal_width="13dp" app:layout_constraintStart_toStartOf="parent"
banner:banner_indicator_selected_color="#FFFFFF" app:layout_constraintTop_toTopOf="parent" />
banner:banner_indicator_selected_width="20dp"
banner:layout_constraintEnd_toEndOf="parent"
banner:layout_constraintStart_toStartOf="parent"
banner:layout_constraintTop_toTopOf="parent" />
<com.youth.banner.indicator.RectangleIndicator <com.zhpan.indicator.IndicatorView
android:id="@+id/indicator" android:id="@+id/indicator"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="6dp" android:layout_height="6dp"
......
...@@ -2,4 +2,6 @@ ...@@ -2,4 +2,6 @@
<resources> <resources>
<color name="black">#FF000000</color> <color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="color_4dffffff">#4dffffff</color>
<color name="color_ffffff">#ffffff</color>
</resources> </resources>
\ No newline at end of file
...@@ -31,4 +31,6 @@ ...@@ -31,4 +31,6 @@
<dimen name="dp_28">28dp</dimen> <dimen name="dp_28">28dp</dimen>
<dimen name="dp_60">60dp</dimen> <dimen name="dp_60">60dp</dimen>
<dimen name="dp_66">66dp</dimen> <dimen name="dp_66">66dp</dimen>
<dimen name="dp_20">20dp</dimen>
<dimen name="dp_13">13dp</dimen>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment