直播app开发,屏幕效果与图片的处理

直播app开发,屏幕效果与图片的处理实现的相关代码

下面是布局

 


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:mipmap/sym_def_app_icon"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
</androidx.constraintlayout.widget.ConstraintLayout>

下面是实现以及注释介绍

 


class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        iv.scaleType = ImageView.ScaleType.FIT_XY
        //fitXY  ImageView.ScaleType.FIT_XY  拉伸图片使其正好填满视图(图片可能拉伸变形)
        //fitStart  ImageView.ScaleType.FIT_START 保持宽高比例,拉伸图片使其位于视图上方或左侧
        //fitCenter ImageView.ScaleType.FIT_CENTER   保持宽高比例,拉伸图片使其位于视图中间
        //fitEnd ImageView.ScaleType.FIT_END   保持宽高比例,拉伸图片使其位于视图视图下方或右侧
        //center ImageView.ScaleType.CENTER   保持图片原尺寸,并使其位于视图中间
        //centerCrop ImageView.SCaleType.CENTER_CROP 拉伸图片使其充满视图,并位于视图中间
        //centerInside ImageView.SCaleType.CENTER_INSIDE 保持宽高比例,缩小图片使之位于视图中间(只缩小不放大)
        //当图片尺寸大于视图时,centerInside等于fitCenter;当图片尺寸小于视图时,centerInside等同于center
        //-------------------Android 系统的截图-----------------
        //Android能用ImageView展示图片,也自带截图功能。尽管它比较简单但是大多数场合也够用了。
        //因为截图功能是面向所有的视图的,所以可以从其它控件那里截图下来 然后显示到ImageView中
        // setDrawingCacheEnable:设置绘图缓存的可用状态。true表示打开,false表示关闭
        // isDrawingCacheEnable: 判断该控件的绘图缓存是否可用
        // setDrawingCacheQuailty:设置绘图缓存的质量
        // getDrawingCache:获取该控件绘图缓存的结果。返回值为Bitmap类型
        // setDrawingCacheBackgroundColor: 设置绘图缓存的背景颜色。绘图缓存默认背景为黑色,如果不设置截图结果就是黑乎乎一片,通常都提前设置为白色。
 
    }
}

 

ScreenUtil

实现如下

 


        //根据手机分辨率 从dp转为px
        fun dip2px(context: Context,dpValue:Float):Int{
            //获取当前手机的像素密度
            val scale = context.resources.displayMetrics.density
            return (dpValue*scale+0.5f).toInt() //四舍五入取整
        }
        //根据手机分辨率 从px(像素)转为dp
        fun px2dip(context: Context,pxValue:Float):Int{
            //获取当前手机的像素密度
            val scale = context.resources.displayMetrics.density
            return (pxValue/scale+0.5f).toInt() //四舍五入取整
        }
        //获得屏幕宽度
        fun getScreenWidth(ctx:Context):Int{
            //从系统服务获得窗口管理器
            val wm:WindowManager = ctx.getSystemService(Context.WINDOW_SERVICE) as WindowManager
            val dm = DisplayMetrics()
            //从默认显示器中获取显示参数保存到dm对象中
            wm.defaultDisplay.getMetrics(dm)
            return dm.widthPixels
        }
        //获取屏幕高度
        fun getScreenHeight(ctx:Context):Int{
            //从系统服务获得窗口管理器
            val wm:WindowManager = ctx.getSystemService(Context.WINDOW_SERVICE) as WindowManager
            val dm = DisplayMetrics()
            //从默认显示器中获取显示参数保存到dm对象中
            wm.defaultDisplay.getMetrics(dm)
            return dm.heightPixels
        }
        //获取屏幕像素密度
        fun getScreenDensity(ctx:Context):Float{
            //从系统服务获得窗口管理器
            val wm:WindowManager = ctx.getSystemService(Context.WINDOW_SERVICE) as WindowManager
            val dm = DisplayMetrics()
            //从默认显示器中获取显示参数保存到dm对象中
            wm.defaultDisplay.getMetrics(dm)
            return dm.density
        }

 

以上就是 直播app开发,屏幕效果与图片的处理实现的相关代码,更多内容欢迎关注之后的文章

 

posted @ 2022-02-17 14:14  云豹科技-苏凌霄  阅读(43)  评论(0编辑  收藏  举报