Parcourir la source

1.修改主页获取游戏列表接口

王鹏鹏 il y a 3 ans
Parent
commit
e2b81fb5fd

+ 54 - 0
baselib/src/main/java/com/yingyangfly/baselib/adapter/DatabindingAdapter.kt

@@ -0,0 +1,54 @@
+package com.yingyangfly.baselib.adapter
+
+import android.text.SpannableString
+import android.text.style.AbsoluteSizeSpan
+import android.view.View
+import android.widget.ImageView
+import androidx.databinding.BindingAdapter
+import com.yingyangfly.baselib.ext.click
+import com.yingyangfly.baselib.utils.ImageUtil.loadUrl
+import com.yingyangfly.baselib.utils.ScreenUtil
+
+/**
+ * IM医生图片
+ */
+@BindingAdapter(value = ["loadHeadImg", "isCircle"], requireAll = false)
+fun ImageView.loadHeadImg(url: String?, isCircle: Boolean? = true) {
+    url?.let {
+        loadUrl(url, isCircle = isCircle)
+    }
+}
+
+/**
+ * View的可见
+ */
+@BindingAdapter(value = ["isVisible"], requireAll = false)
+fun View.isVisible(isVisible: Boolean) {
+    visibility = if (isVisible) View.VISIBLE
+    else View.INVISIBLE
+}
+
+/**
+ * View的可见
+ */
+@BindingAdapter(value = ["isGone"], requireAll = false)
+fun View.isGone(isGone: Boolean) {
+    visibility = if (isGone) View.GONE
+    else View.VISIBLE
+}
+
+fun String.StringSizeSpan(startIndex: Int, endIndex: Int, size: Int): SpannableString {
+    val ss = SpannableString(this)
+    val absSize = AbsoluteSizeSpan(ScreenUtil.dp2px(size.toFloat()))
+    ss.setSpan(absSize, startIndex, endIndex, SpannableString.SPAN_INCLUSIVE_INCLUSIVE)
+    return ss
+}
+
+
+@BindingAdapter(value = ["singleClick"], requireAll = false)
+fun View.singleClick(func: () -> Unit) {
+    click {
+        func.invoke()
+    }
+}
+

+ 160 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/ImageUtil.kt

@@ -0,0 +1,160 @@
+package com.yingyangfly.baselib.utils
+
+import android.graphics.drawable.Drawable
+import android.util.Log
+import android.widget.ImageView
+import androidx.annotation.DrawableRes
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.DataSource
+import com.bumptech.glide.load.DecodeFormat
+import com.bumptech.glide.load.engine.DiskCacheStrategy
+import com.bumptech.glide.load.engine.GlideException
+import com.bumptech.glide.load.resource.bitmap.CenterCrop
+import com.bumptech.glide.load.resource.bitmap.CircleCrop
+import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners
+import com.bumptech.glide.request.RequestListener
+import com.bumptech.glide.request.target.Target
+
+/**
+ * @author wangsai
+ * @date 2022/9/15 11:58
+ * @copyright (C) 2019-2022, XiaoLiu All Rights Reserved
+ * @description 图片处理工具类
+ */
+object ImageUtil {
+
+    /**
+     * 加载网络图片
+     * @param url 图片地址
+     * @param isCircle 是否为圆形
+     * @param roundRadius 圆角
+     */
+    fun ImageView.loadUrl(
+        url: String?,
+        @DrawableRes resId: Int = 0,
+        isCircle: Boolean? = false,
+        roundRadius: Float = 0F
+    ) {
+        val load = Glide.with(AppUtil.getContext())
+            .load(url)
+            .placeholder(resId)
+            .format(DecodeFormat.PREFER_RGB_565)
+            .diskCacheStrategy(DiskCacheStrategy.ALL)
+
+        if (isCircle == true) {
+            Log.e("wpp", "----------------666")
+            load.transform(CircleCrop()).into(this)
+        } else if (roundRadius > 0) {
+            load.transform(
+                CenterCrop(),
+                RoundedCorners(ScreenUtil.dp2px(roundRadius))
+            ).into(this)
+        } else {
+            load.into(this)
+        }
+    }
+
+    /**
+     * 加载网络图片
+     * @param url 图片地址
+     * @param isCircle 是否为圆形
+     * @param roundRadius 圆角
+     */
+    fun ImageView.loadUrlExtra(
+        url: String?, @DrawableRes resId: Int = 0, topLeft: Float = 0F,
+        topRight: Float = 0F, bottomLeft: Float = 0F, bottomRight: Float = 0F,
+    ) {
+        val load = Glide.with(AppUtil.getContext())
+            .load(url)
+            .placeholder(resId)
+            .format(DecodeFormat.PREFER_RGB_565)
+            .diskCacheStrategy(DiskCacheStrategy.ALL)
+
+        load.transform(
+            CenterCrop(),
+            GranularRoundedCorners(
+                ScreenUtil.dp2px(topLeft).toFloat(),
+                ScreenUtil.dp2px(topRight).toFloat(),
+                ScreenUtil.dp2px(bottomRight).toFloat(),
+                ScreenUtil.dp2px(bottomLeft).toFloat(),
+            )
+        ).into(this)
+    }
+
+
+    /**
+     * @author dd
+     * 加载网络图片  附带 加载 成功失败 监听
+     * @param url 图片地址
+     * @param isCircle 是否为圆形
+     * @param roundRadius 圆角
+     */
+    fun ImageView.loadUrlWithListener(
+        url: String?,
+        @DrawableRes resId: Int = 0,
+        isCircle: Boolean? = false,
+        roundRadius: Float = 0F,
+        fail: (() -> Unit)
+    ) {
+        val load = Glide.with(AppUtil.getContext())
+            .load(url)
+            .placeholder(resId)
+            .format(DecodeFormat.PREFER_RGB_565)
+            .diskCacheStrategy(DiskCacheStrategy.ALL)
+            .addListener(object : RequestListener<Drawable> {
+                override fun onLoadFailed(
+                    e: GlideException?,
+                    model: Any?,
+                    target: Target<Drawable>?,
+                    isFirstResource: Boolean
+                ): Boolean {
+                    fail
+                    return false
+                }
+
+                override fun onResourceReady(
+                    resource: Drawable?,
+                    model: Any?,
+                    target: Target<Drawable>?,
+                    dataSource: DataSource?,
+                    isFirstResource: Boolean
+                ): Boolean {
+                    return false
+                }
+            })
+
+        if (isCircle == true) {
+            load.transform(CircleCrop()).into(this)
+        } else if (roundRadius > 0) {
+            load.transform(RoundedCorners(ScreenUtil.dp2px(roundRadius)))
+                .into(this)
+        } else {
+            load.into(this)
+        }
+    }
+
+    /**
+     * 加载res资源图片
+     * @param resId 图片id
+     * @param isCircle 是否为圆形
+     * @param roundRadius 圆角
+     */
+    fun ImageView.loadResId(
+        @DrawableRes resId: Int?,
+        isCircle: Boolean? = false,
+        roundRadius: Float = 0F
+    ) {
+        if (resId == null) return
+        val load = Glide.with(AppUtil.getContext())
+            .load(resId)
+        if (isCircle == true) {
+            load.transform(CircleCrop()).into(this)
+        } else if (roundRadius > 0) {
+            load.transform(RoundedCorners(ScreenUtil.dp2px(roundRadius)))
+                .into(this)
+        } else {
+            load.into(this)
+        }
+    }
+}

+ 2 - 2
config.gradle

@@ -106,8 +106,8 @@ ext {
             "live_event_bus_x": 'io.github.jeremyliao:live-event-bus-x:1.8.0',
 
             //glide
-            "glide": 'com.github.bumptech.glide:glide:4.9.0',
-            "glide_compiler": 'com.github.bumptech.glide:compiler:4.9.0',
+            "glide": 'com.github.bumptech.glide:glide:4.12.0',
+            "glide_compiler": 'com.github.bumptech.glide:compiler:4.12.0',
 
             "utilcode": 'com.blankj:utilcode:1.30.7',
             //极光推送

+ 18 - 14
workbenches/src/main/res/layout/activity_workbenches.xml

@@ -6,6 +6,8 @@
 
     <data>
 
+        <import type="com.yingyangfly.baselib.utils.User" />
+
         <variable
             name="data"
             type="com.yingyang.workbenches.entity.CountTrainBean" />
@@ -30,14 +32,16 @@
                 app:layout_constraintRight_toLeftOf="@id/functionLayout"
                 app:layout_constraintTop_toTopOf="parent">
 
-                <ImageView
+                <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/imageSetting"
                     android:layout_width="@dimen/divider_80px"
                     android:layout_height="@dimen/divider_80px"
                     android:layout_marginStart="@dimen/divider_54px"
                     android:layout_marginTop="@dimen/divider_34px"
+                    app:isCircle="@{true}"
                     app:layout_constraintLeft_toLeftOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:loadHeadImg="@{User.INSTANCE.avatar}" />
 
             </LinearLayout>
 
@@ -60,7 +64,7 @@
                     app:layout_constraintRight_toLeftOf="@+id/layoutHelp"
                     tools:ignore="MissingConstraints">
 
-                    <ImageView
+                    <androidx.appcompat.widget.AppCompatImageView
                         android:layout_width="@dimen/divider_44px"
                         android:layout_height="@dimen/divider_35px"
                         android:layout_marginTop="@dimen/divider_37px"
@@ -68,7 +72,7 @@
                         android:scaleType="centerInside"
                         tools:ignore="ContentDescription" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         style="@style/workbenches_home_text"
                         android:layout_marginTop="@dimen/divider_13px"
                         android:text="@string/live_broadcast" />
@@ -83,14 +87,14 @@
                     app:layout_constraintRight_toLeftOf="@+id/layoutNotify"
                     tools:ignore="MissingConstraints">
 
-                    <ImageView
+                    <androidx.appcompat.widget.AppCompatImageView
                         android:layout_width="@dimen/divider_38px"
                         android:layout_height="@dimen/divider_38px"
                         android:layout_marginTop="@dimen/divider_37px"
                         android:background="@mipmap/icon_help"
                         android:scaleType="centerInside" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         style="@style/workbenches_home_text"
                         android:layout_marginTop="@dimen/divider_10px"
                         android:text="@string/help" />
@@ -104,14 +108,14 @@
                     app:layout_constraintRight_toLeftOf="@+id/layoutServicePackage"
                     tools:ignore="MissingConstraints">
 
-                    <ImageView
+                    <androidx.appcompat.widget.AppCompatImageView
                         android:layout_width="@dimen/divider_34px"
                         android:layout_height="@dimen/divider_40px"
                         android:layout_marginTop="@dimen/divider_37px"
                         android:background="@mipmap/icon_notify"
                         android:scaleType="centerInside" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         style="@style/workbenches_home_text"
                         android:layout_marginTop="@dimen/divider_8px"
                         android:text="@string/notify" />
@@ -125,14 +129,14 @@
                     app:layout_constraintRight_toRightOf="parent"
                     tools:ignore="MissingConstraints">
 
-                    <ImageView
+                    <androidx.appcompat.widget.AppCompatImageView
                         android:layout_width="@dimen/divider_44px"
                         android:layout_height="@dimen/divider_36px"
                         android:layout_marginTop="@dimen/divider_37px"
                         android:background="@mipmap/icon_service_package"
                         android:scaleType="centerInside" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         style="@style/workbenches_home_text"
                         android:layout_marginTop="@dimen/divider_12px"
                         android:text="@string/service_package" />
@@ -188,7 +192,7 @@
                     android:gravity="center_horizontal"
                     android:orientation="vertical">
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/divider_30px"
@@ -196,7 +200,7 @@
                         android:textColor="@android:color/white"
                         android:textSize="@dimen/divider_24px" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/divider_9px"
@@ -205,7 +209,7 @@
                         android:textSize="@dimen/divider_34px"
                         android:textStyle="bold" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/divider_35px"
@@ -213,7 +217,7 @@
                         android:textColor="@android:color/white"
                         android:textSize="@dimen/divider_24px" />
 
-                    <TextView
+                    <androidx.appcompat.widget.AppCompatTextView
                         android:layout_width="wrap_content"
                         android:layout_height="0dp"
                         android:layout_marginTop="@dimen/divider_9px"