添加注释
This commit is contained in:
@@ -8,7 +8,6 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
@@ -25,6 +24,9 @@ import com.sw.dualscreen.viewmodel.UserViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
* 底部搜索结果弹窗
|
||||
*/
|
||||
class CustomBottomSheetDialog(
|
||||
val viewModel: UserViewModel,
|
||||
val itemClickCallback: (FoodInfo) -> Unit
|
||||
|
||||
@@ -10,6 +10,9 @@ import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
/**
|
||||
* 加载进度条弹窗
|
||||
*/
|
||||
public class CustomDialog extends Dialog {
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ import com.sw.plate.utils.AppUtil;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
/**
|
||||
* 自定义柱状图
|
||||
*/
|
||||
public class CustomImageView extends androidx.appcompat.widget.AppCompatImageView {
|
||||
private AlphaAnimation alphaAnimation;
|
||||
private String textToDraw;
|
||||
|
||||
@@ -15,6 +15,9 @@ import androidx.appcompat.widget.AppCompatSpinner
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.sw.dualscreen.R
|
||||
|
||||
/**
|
||||
* spinner控件
|
||||
*/
|
||||
class CustomSpinner @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.sw.dualscreen.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
|
||||
class CylinderDrawView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : View(context, attrs, defStyleAttr) {
|
||||
|
||||
// 圆柱属性(默认红色)
|
||||
var cylinderColor: Int = Color.RED
|
||||
set(value) {
|
||||
field = value
|
||||
invalidate()
|
||||
}
|
||||
var cylinderWidth: Int = 120 // 默认宽度(px)
|
||||
set(value) {
|
||||
field = value
|
||||
requestLayout()
|
||||
}
|
||||
var cylinderHeight: Int = 360 // 默认高度(px)
|
||||
set(value) {
|
||||
field = value
|
||||
requestLayout()
|
||||
}
|
||||
|
||||
private val paint = Paint().apply {
|
||||
isAntiAlias = true // 抗锯齿
|
||||
style = Paint.Style.FILL // 填充模式
|
||||
}
|
||||
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
val measuredWidth = resolveSize(cylinderWidth, widthMeasureSpec)
|
||||
val measuredHeight = resolveSize(cylinderHeight, heightMeasureSpec)
|
||||
setMeasuredDimension(measuredWidth, measuredHeight)
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
paint.color = cylinderColor
|
||||
// 绘制圆角矩形(半径=宽度的一半,形成圆柱效果)
|
||||
val radius = cylinderWidth / 2f
|
||||
canvas.drawRoundRect(
|
||||
0f, 0f,
|
||||
cylinderWidth.toFloat(), cylinderHeight.toFloat(),
|
||||
radius, radius,
|
||||
paint
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
package com.sw.dualscreen.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.sw.dualscreen.R
|
||||
|
||||
class CylinderView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : FrameLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private val valueText: TextView
|
||||
private val unitText: TextView
|
||||
private val cylinderDrawView: CylinderDrawView
|
||||
private val topImage: ImageView
|
||||
private val bottomImage: ImageView
|
||||
private val bottomText: TextView
|
||||
|
||||
init {
|
||||
// 加载内部布局
|
||||
LayoutInflater.from(context).inflate(R.layout.view_cylinder, this, true)
|
||||
|
||||
// 绑定控件
|
||||
valueText = findViewById(R.id.valueText)
|
||||
unitText = findViewById(R.id.unitText)
|
||||
cylinderDrawView = findViewById(R.id.cylinderDrawView)
|
||||
topImage = findViewById(R.id.topImage)
|
||||
bottomImage = findViewById(R.id.bottomImage)
|
||||
bottomText = findViewById(R.id.bottomText)
|
||||
|
||||
// 解析自定义属性
|
||||
context.obtainStyledAttributes(attrs, R.styleable.CylinderView).apply {
|
||||
// 顶部文字:数值+单位合并
|
||||
val value = getString(R.styleable.CylinderView_valueText) ?: ""
|
||||
val unit = getString(R.styleable.CylinderView_unitText) ?: ""
|
||||
valueText.text = value
|
||||
valueText.textSize = getDimension(R.styleable.CylinderView_valueTextSize, 20f)
|
||||
valueText.setTextColor(
|
||||
getColor(
|
||||
R.styleable.CylinderView_valueTextColor,
|
||||
0xFFFFFFFF.toInt()
|
||||
)
|
||||
)
|
||||
|
||||
unitText.text = unit
|
||||
unitText.textSize = getDimension(R.styleable.CylinderView_valueTextSize, 10f)
|
||||
unitText.setTextColor(
|
||||
getColor(
|
||||
R.styleable.CylinderView_valueTextColor,
|
||||
0xFFFFFFFF.toInt()
|
||||
)
|
||||
)
|
||||
|
||||
// 圆柱属性
|
||||
cylinderDrawView.cylinderColor =
|
||||
getColor(R.styleable.CylinderView_cylinderColor, Color.RED)
|
||||
cylinderDrawView.cylinderWidth =
|
||||
getDimensionPixelSize(R.styleable.CylinderView_cylinderWidth, 60)
|
||||
cylinderDrawView.cylinderHeight =
|
||||
getDimensionPixelSize(R.styleable.CylinderView_cylinderHeight, 180)
|
||||
|
||||
getResourceId(R.styleable.CylinderView_topImageSrc, -1).takeIf { it != -1 }?.let {
|
||||
topImage.setImageResource(it)
|
||||
// val layoutParams = cylinderDrawView.layoutParams
|
||||
// layoutParams.height = (layoutParams.width / 2.45).toInt()
|
||||
// topImage.layoutParams = layoutParams
|
||||
}
|
||||
|
||||
// 底部图片
|
||||
getResourceId(R.styleable.CylinderView_bottomImageSrc, -1).takeIf { it != -1 }?.let {
|
||||
bottomImage.setImageResource(it)
|
||||
// val layoutParams = cylinderDrawView.layoutParams
|
||||
// layoutParams.height = 44
|
||||
// bottomImage.layoutParams = layoutParams
|
||||
}
|
||||
|
||||
// 底部文字
|
||||
bottomText.text = getString(R.styleable.CylinderView_bottomText) ?: "热量"
|
||||
bottomText.textSize = getDimension(R.styleable.CylinderView_bottomTextSize, 16f)
|
||||
bottomText.setTextColor(
|
||||
getColor(
|
||||
R.styleable.CylinderView_bottomTextColor,
|
||||
0xFFFFFFFF.toInt()
|
||||
)
|
||||
)
|
||||
|
||||
recycle() // 回收属性
|
||||
}
|
||||
}
|
||||
|
||||
fun setToImageSize() {
|
||||
// topImage.layoutParams = LayoutParams.
|
||||
}
|
||||
|
||||
fun setBottomSize() {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user