直播app開發,螢幕效果與圖片的處理

zhibo系統開發發表於2022-02-17

直播app開發,螢幕效果與圖片的處理實現的相關程式碼

下面是佈局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="
    xmlns:app="
    xmlns: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開發,螢幕效果與圖片的處理實現的相關程式碼,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2856129/,如需轉載,請註明出處,否則將追究法律責任。

相關文章