第 8 章 视图组(ViewGroup)和布局(Layout)的使用 在 Android 中视图组是集合若干个控件在一起的元素,ViewGroup 有两种用法,一种是像普通的控件一样使用(如网页视图、旋转按钮...8.1 Android的屏幕元素体系 在屏幕中控件的组织上,可以将各个视图(控件)组成一个视图组(ViewGroup),视图组是一个包含了其他视图的视图。...android.view.ViewGroup 扩展了 android.view.View,它本身也具有 View 的特性,区别仅在于它可以包含其他的控件。...Android GUI 程序的屏幕体系结构的组织遵循以下原则: 一个屏幕可以包含一个视图; 视图组本身也是一个视图; 视图组可以包含若干个视图。...在 Android 中,有一些预置的 ViewGroup 可以直接像 View 一样使用(如 WebView),还有一些ViewGroup 本身没有功能,只是提供屏幕上的各种布局(如 AbsoluteLayout
文章目录 一、Android 与 iOS 屏幕宽高比种类 二、屏幕像素密度 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一、Android 与 iOS 屏幕宽高比种类...---- Android 屏幕尺寸类型如下 , 安卓设备的屏幕尺寸复杂性远远高于 iOS 设备 , Android 设备有两万种屏幕类型 , iOS 只需要适配五种分辨率即可 ; iOS 屏幕尺寸如下..., 只需要适配有限的几种屏幕类型即可 ; 二、屏幕像素密度 ---- 屏幕像素密度 的单位是 DPI , 是 Dots Per Inch 的缩写 , 也就是每 英寸 的 像素点 个数 ; 屏幕尺寸...指的是 屏幕 斜对角的 英寸 长度 ; 假设屏幕尺寸为 6.5 寸 , 屏幕的宽高分辨率为 1080 \times 1920 , 计算该屏幕的 屏幕像素密度 ( DPI , Dots Per Inch...) ; ① 首先 使用勾股定理 计算屏幕 对角线 上的像素个数 : 对角线上的像素个数 = \sqrt{分辨率宽度 ^2 + 分辨率高度^2} = \sqrt{1080 ^2 + 1920^2} \approx
做为一个不那么像初学者的初学者,我注意到Android已经提供了检测屏幕方向的API,而我在《Android 4编程入门经典——开发智能手机与平板电脑应用》书中经常看到的做法却是比较屏幕的宽度和高度以此来判断是横向还是纵向模式...书中做法 import android.view.Display; import android.view.WindowManager; @Override public void onCreate(...); } else { //---portrait mode--- Log.d("Orientation", "Portrait mode"); } } 而一般利用Android...提供的方法可以这么做 if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
目前市面上说的几英寸是对角线的英寸数 为简便起见,Android 将所有实际屏幕尺寸分组为四种通用尺寸:小、 正常、大和超大。...支持每种密度的 位图可绘制对象的相对大小 适配方案 密度独立性 应用显示在密度不同的屏幕上时,如果它保持用户界面元素的物理尺寸(从 用户的视角),便可实现“密度独立性” 。...smallestWidth 是设备的固定屏幕尺寸特性;设备的 smallestWidth 不会随屏幕方向的变化而改变。 设备的 smallestWidth 将屏幕装饰元素和系统 UI 考虑在内。...例如,如果设备的屏幕上有一些永久性 UI 元素占据沿 smallestWidth 轴的空间,则系统会声明 smallestWidth 小于实际屏幕尺寸,因为这些屏幕像素不适用于您的 UI。...虽然 Android 也支持低像素密度 (LDPI) 的屏幕,但无需为此费神,系统会自动将 HDPI 尺寸的图标缩小到 1/2 进行匹配。
一.window相关 网页正文部分上:window.screenTop 网页正文部分左:window.screenLeft 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:...window.screen.width 屏幕可用工作区高度:window.screen.availHeight 屏幕可用工作区宽度:window.screen.availWidth 二.body相关...网页被卷去的高:document.body.scrollTop 网页被卷去的左:document.body.scrollLeft 三.滚动相关 scrollHeight: 获取对象的滚动高度。...scrollWidth: 获取对象的滚动宽度 document.documentElement.scrollTop 垂直方向滚动的值 四.位置精确定位 scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离...相对容器的水平坐标 event.offsetY 相对容器的垂直坐标 六.width/clientWidth/offsetWidth以及height之间区别 width是指可见内容的宽 height是指可见内容的高
本文实例讲述了Android编程设置屏幕亮度的方法。分享给大家供大家参考,具体如下: 使用场景 最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度。...其实,调节屏幕亮度的场景应用很广,例如很多视频应用都响应touch事件来进行亮度调节。...设置屏幕亮度的方法: private int getScreenBrightness() { ContentResolver contentResolver = getActivity().getContentResolver...在设置系统屏幕亮度前,需要保证AndroidManifest.xml中声明如下权限: 复制代码 代码如下: <uses-permission android:name=”android.permission.WRITE_SETTINGS...,并不是修改的系统亮度值,而是修改当前应用所在窗口的亮度。
在Android开发过程中,有时需要获取触摸位置的坐标,以便作进一步处理,比如做炫酷的动画效果,或者响应其他操作。 本文简单介绍Android中触屏操作时,触屏的开始位置、当前位置、结束位置。...布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://...schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent...tvTouchShow.setText("实时位置:(" + event.getX() + "," + event.getY()); break; /** * 离开屏幕的位置...以上就是本文的全部内容,希望对大家的学习有所帮助。
我想大部分人应该都知道Android 里面控制Activity的方向,只要在AndroidManifest.xml里面对应的Activity节点加一句 android:screenOrientation...看见屏幕切换为竖屏了,我就郁闷了,我明明设置了android:screenOrientation=“landscape”,为什么还切换呢。 后来百度没有找出原因来。...而顶部窗口(对话框)是设置为android:screenOrientation="portrait"的,屏幕只有一个,肯定是根据顶部窗口的设置为准。...Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载),怎么使屏幕横竖屏切换时,当前的Activity不销毁呢?...需要了解横竖屏切换关键知识 1.在Android设备的横竖屏幕,每一次切换横竖屏其实是在重新创建Activity,Activity会重新走一遍生命周期.从onCreate 到 onDestroy 2.在
Android屏幕手写签名的原理就是把手机屏幕当作画板,把用户手指当作画笔,手指在屏幕上在屏幕上划来划去,屏幕就会显示手指的移动轨迹,就像画笔在画板上写字一样。...实现手写签名需要结合绘图的路径工具Path,在有按下动作时调用Path对象的moveTo方法,将路径起始点移动到触摸点;在有移动操作时调用Path对象的quadTo方法,将记录本次触摸点与上次触摸点之间的路径...;在有移动操作与提起动作时调用Canvas对象的drawPath方法,将本次触摸绘制在画布上。...android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android...以上就是本文的全部内容,希望对大家的学习有所帮助。
判断当前屏幕方向 方法1....设置屏幕方向 1....配置AndroidManifest.xml 在activity 中加入 android:screenOrientation="landscape" 属性。...处理Activity的配置变更 有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生这种变化时,Android 会重启正在运行的 Activity。...(目标API>13时必需) 参考:https://developer.android.com/guide/topics/resources/runtime-changes.htmlAndroid设备屏幕方向的一二事
image.png 因为一直需要将Android手机上的效果录制下来,转成gif,然后上传到博客上。 原来都需要手动操作好几次,所以索性的写了一个脚本来配合使用。...因为笔者下载了Android Studio,帮忙下好SDK。所以就不过多描述了。...因为原来截屏的尺寸上传太大了。所以缩小。 注意:这个尺寸需要根据手机的分辨率来确定。我的手机分辨率是1080x1920。...所以这些缩小成360x640 缩小gif的大小 -r 指令是修改gif的帧率。...保存成.sh文件,就可以运行,最后输出的就是文件所在的路径。
由于上一篇框架需要控件重新渲染一次,对于大型项目性能方面运行不够快,针对该问题进行优化 核心思想:自定义组件,在组件的onMeasure中就改变控件的长宽等属性 实现方法:自定义百分比组件,使用该组件自动适配该组件下所有子...float heightPercent = ((IGetPercent) layoutParams).getHeightPercent(); //适配不同屏幕...ViewsParseUtil.catchChildView(view); //设置子view的长宽,优先使用自定义的百分比,会将上一行代码中对长宽的设置覆盖.../android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com...="100px" android:layout_marginLeft="30px" android:background="@android:color/darker_gray
大家好,又见面了,我是你们的朋友全栈君。 一、简介 Autosize今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案。...android:name=”design_height_in_dp” android:value=”高” /> 在AndroidManifest.xml...public void onAdaptBefore(Object target, Activity activity) { //使用以下代码, 可以解决横竖屏切换时的屏幕适配问题...//首先设置最新的屏幕尺寸,ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application !!!...若有想了解更多的可以去看一下源码:https://github.com/JessYanCoding/AndroidAutoSize 官方文档:一种极低成本的Android屏幕适配方式 三、总结
本文实例为大家分享了Android实现屏幕录制功能的具体代码,供大家参考,具体内容如下 1.效果图: ?..." / <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" / 4.主界面, test.aac是录屏的时候配的音乐...= null) { // 如果选择带参数的 stop 方法,则录制音频无效 stopRecord(mediaPlayer!!....getMediaProjection(resultCode, data) // 部分手机录制视频的时候 会出现弹框 Handler().postDelayed({ if (initRecorder())...以上就是本文的全部内容,希望对大家的学习有所帮助。
Android点亮屏幕并解锁 需求:现在在做一个app要求有唤醒屏幕并解锁的需求,参考了网上的许多的博客,感觉前篇一律,有的手机上好使,在有的手机上不好使,参考了微信的视频呼叫唤醒屏幕,可以点亮手机屏幕...,对于有上滑手势解锁的手机只能点亮屏幕不能解锁屏幕,后来经过尝试,当前应用中有一个锁屏弹起界面 的权限,默认是关闭的,打开这个权限之后就可以点亮屏幕并弹出界面了(有上滑手势解锁的手机),后台经过尝试现在可以点亮屏幕并解锁了...在有的手机上不好使,后来我这样写wl.acquire(10000); // 点亮屏幕然后就好使了,我的理解是这样的:是不是时间太短了,刚唤醒屏幕就释放掉了会有问题,由于水平有限不对的地方请指出。...不要忘了添加如下权限 Thanks.
大家好,又见面了,我是你们的朋友全栈君。...主要是固定一个UI尺寸,比如宽度360,然后为了各个density显示的宽度都是360dp,则通过 :px=dp * density, density =screenWidthPx / 360; 记录下文章...density,我们要适配的话需要确保 dp 不变去修改 density,而安卓默认 density = dpi / 160,其意思就是 1dp 有多少 px,也就是像素密度,我们开发是按照一份设计稿来做的,...() 是不同的引用,所以在 API 26 及以上适配是没有影响的,但在 API 26 以下 Activity#getResources()#getDisplayMetrics() 和 Application...#getResources()#getDisplayMetrics() 是相同的引用,导致适配有问题,这里要感谢 @MirkoWu 提出的问题,后面会有解决之法。
; private static final int BASE_HEIGHT = 1920; // ui给的图不包含状态栏,后面要减去状态栏的高度 定义一些变量 //设备的真实宽高 private static...; //屏幕信息 private DisplayMetrics displayMetrics; 首先使用WindowManager获取本机屏幕长宽,存放在displayMetrics.widthPixels...displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(displayMetrics); 而实际屏幕大小要减去状态栏高度...= context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (statusBarHeight...final ViewGroup context = (ViewGroup) activity.findViewById(android.R.id.content); context.post
大家好,又见面了,我是全栈君 在播放器,我们经常看到这样的设计,即,在用户的特定部分将能够滑动屏幕向上或向下调整屏幕的亮度,上下滑动的某一部分将能够调整播放音量。并以滑动的进程可以进行调整,以玩。...复制代码 1 package android.lekko.tools; 2 3 import android.app.Activity; 4 import android.content.ContentResolver...,主要用于调节屏幕亮度。...android程序的主要类,一个界面必有此类提供后台支持,须要继承此类。 Settings类。android程序系统相关的设置类,各种设置都可在此找。 ...LayoutParams类,android接口 - 相关参数。如高度、宽度、亮度等。 Toast类。自己主动的消息框消失,光控。 大,调整屏幕亮度到这里,非常easy的。
1、首先定义ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android.content.Context...; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager;....app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class MainActivity...public void onScreenOn() { Toast.makeText( MainActivity.this , "屏幕打开了...public void onScreenOff() { Toast.makeText( MainActivity.this , "屏幕关闭了
你也要也要意识到屏幕方向(横向或者纵向)也要被考虑成一种屏幕尺寸,所以许多的应用会修改布局来优化用户在不同的屏幕方向上的体验 ....注意 : Android 会自动缩放你的布局,来适当的适应屏幕 ....如此,你针对不同屏幕尺寸的布局就不需要担心UI元素的绝对尺寸,而是将重点放在影响到用户体验的布局结构上来 (比如重要视图相对于相邻视图的尺寸和位置 )....更多有关Android如何选择对应的资源的信息可以在 提供资源 指南中找到 ....portrait) main.xml layout-large-land/ # large landscape main.xml 注意: Android
领取专属 10元无门槛券
手把手带您无忧上云