常用代码模板

1、BaseAbstractActivity

private fun configView() {
    
    
    val inflater = LayoutInflater.from(this)
    val baseView = inflater.inflate(getLayoutId(), null)
    setContentView(baseView)
}

2、动态设置布局

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout>
    <RelativeLayout>
    </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

java

ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) relativeLayout.getLayoutParams();
params.width = (int) width; //px
params.height = (int) height;  //px
relativeLayout.setLayoutParams(params);
//dp即dip
/**
 * dp转换为px
 */
fun dp2x(context: Context, dipValue: Int): Int {
    
    
    val density: Float = context.resources.displayMetrics.density
    return (dipValue * density + 0.5f).toInt()
}

/**
 * px转换为dp
 */
fun px2dp(context: Context, pxValue: Int): Int {
    
    
    val density: Float = context.resources.displayMetrics.density
    return (pxValue / density + 0.5f).toInt()
}

3、自定义View

3个构造方法

class MyView : View {
    
    

    private var mContext: Context? = null


    constructor(context: Context?) : super(context) {
    
    
        mContext = context
        initView()
    }

    constructor(
        context: Context?,
        attributeSet: AttributeSet?
    ) : super(context, attributeSet) {
    
    
        mContext = context
        initView()
    }

    constructor(context: Context?, attributeSet: AttributeSet?, def: Int) : super(
        context,
        attributeSet,
        def
    ) {
    
    
        mContext = context
        initView()
    }


    private fun initView() {
    
    
        //加载布局
        LayoutInflater.from(mContext).inflate(R.layout.layout_my_view, this)
        //绑定控件
        val tvTitle = findViewById<TextView>(R.id.id_tv_title)
    }
}

1个构造方法

class MyView(
    var mContext: Context,
    var attrs: AttributeSet? = null,
    var defStyleAttr: Int = 0
) : LinearLayout(mContext, attrs, defStyleAttr) {
    
    

    init {
    
    
        initView()
    }

	private fun initView() {
    
    
        //加载布局
        LayoutInflater.from(mContext).inflate(R.layout.my_view, this)
        //绑定控件
        val tvTitle = findViewById<TextView>(R.id.id_tv_title)
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41733225/article/details/129403043