直播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开发,屏幕效果与图片的处理实现的相关代码,更多内容欢迎关注之后的文章