show overlapped mini avatars in results overview

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-07-22 12:13:26 +02:00 committed by Andy Scherzinger (Rebase PR Action)
parent 64412a1876
commit b2e47d885c
3 changed files with 40 additions and 13 deletions

View File

@ -23,6 +23,8 @@ package com.nextcloud.talk.polls.adapters
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.text.TextUtils import android.text.TextUtils
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.res.ResourcesCompat
import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.generic.RoundingParams import com.facebook.drawee.generic.RoundingParams
import com.facebook.drawee.interfaces.DraweeController import com.facebook.drawee.interfaces.DraweeController
@ -46,22 +48,47 @@ class PollResultVotersOverviewViewHolder(
binding.root.setOnClickListener { clickListener.onClick() } binding.root.setOnClickListener { clickListener.onClick() }
val lp = LinearLayout.LayoutParams( val layoutParams = LinearLayout.LayoutParams(
AVATAR_WIDTH, AVATAR_SIZE,
AVATAR_HEIGHT AVATAR_SIZE
) )
item.detailsList.forEach { var avatarsToDisplay = MAX_AVATARS
if (item.detailsList.size < avatarsToDisplay) {
avatarsToDisplay = item.detailsList.size
}
val shotsDots = item.detailsList.size > avatarsToDisplay
for (i in 0 until avatarsToDisplay) {
val pollDetails = item.detailsList[i]
val avatar = SimpleDraweeView(binding.root.context) val avatar = SimpleDraweeView(binding.root.context)
avatar.layoutParams = lp
layoutParams.marginStart = i * AVATAR_OFFSET
avatar.layoutParams = layoutParams
avatar.translationZ = i.toFloat() * -1
val roundingParams = RoundingParams.fromCornersRadius(AVATAR_RADIUS) val roundingParams = RoundingParams.fromCornersRadius(AVATAR_RADIUS)
roundingParams.roundAsCircle = true roundingParams.roundAsCircle = true
roundingParams.borderColor = ResourcesCompat.getColor(
itemView.context.resources!!,
R.color.colorPrimary,
null
)
roundingParams.borderWidth = 2.0f
avatar.hierarchy.roundingParams = roundingParams avatar.hierarchy.roundingParams = roundingParams
avatar.controller = getAvatarDraweeController(it) avatar.controller = getAvatarDraweeController(pollDetails)
binding.votersAvatarsOverviewWrapper.addView(avatar) binding.votersAvatarsOverviewWrapper.addView(avatar)
if (i == avatarsToDisplay - 1 && shotsDots) {
val dotsView = TextView(itemView.context)
layoutParams.marginStart = i * AVATAR_OFFSET + DOTS_OFFSET
dotsView.layoutParams = layoutParams
dotsView.text = DOTS_TEXT
binding.votersAvatarsOverviewWrapper.addView(dotsView)
}
} }
} }
@ -104,8 +131,11 @@ class PollResultVotersOverviewViewHolder(
} }
companion object { companion object {
const val AVATAR_WIDTH = 90 const val AVATAR_SIZE = 60
const val AVATAR_HEIGHT = 70
const val AVATAR_RADIUS = 5f const val AVATAR_RADIUS = 5f
const val MAX_AVATARS = 10
const val AVATAR_OFFSET = AVATAR_SIZE - 10
const val DOTS_OFFSET = 70
const val DOTS_TEXT = ""
} }
} }

View File

@ -23,8 +23,6 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="@dimen/standard_half_padding"
android:paddingEnd="@dimen/standard_half_padding"
android:paddingBottom="4dp" android:paddingBottom="4dp"
tools:background="@color/white"> tools:background="@color/white">

View File

@ -18,7 +18,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/voters_avatars_overview_wrapper" android:id="@+id/voters_avatars_overview_wrapper"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -28,5 +28,4 @@
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:orientation="horizontal" android:orientation="horizontal"
tools:background="@color/white"> tools:background="@color/white">
</RelativeLayout>
</LinearLayout>