首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再学一遍android:fitsSystemWindows属性

熟悉是因为大概知道它可以用来实现沉浸式状态栏效果,陌生是因为对它好像又不够了解,这个属性经常不灵。...其实对于android:fitsSystemWindows属性也是一知半解,包括在写《第一行代码时候对这部分知识讲解也算不上精准。...相信按照绝大多数人美好设想,android:fitsSystemWindows属性就应该像是一个开关一样,设置成true就可以打开沉浸式状态栏效果,设置成false就可以关闭沉浸式状态栏效果。...(this, null); } } 可以看到,这里当发现CoordinatorLayout设置了android:fitsSystemWindows属性,会对当前布局insets做一些处理,并且调用了下面一行代码...但是可能有的朋友会说,由于项目限制原因,他们无法使用CoordinatorLayout或CollapsingToolbarLayout,而是只能使用FrameLayout或LinearLayout这样传统布局

1.1K50

当Cocos2dx遇见Android,你猜猜

cocos2dx开发游戏由GLSurfaceView加c、c++代码生成.so组成。前者可以当做android里普通view使用,比如放在一个布局里,弹一个popwindow,指定大小等。...下面将通过演示如何在android端设置cocos2dx游戏界面的大小来说明cocos2dx引擎所运行GLSurfaceView可以当成一个普通view来使用。...传给nativeInit即可,当为Cocos2dxGLSurfaceView设置Render使用Cocos2dxRendererEx实例。...一种容易想到方法是在popwindow中选完城市后dismis通过jni调用c代码,在c代码里调用notify方法,在回调里做相关界面操作。...其实cocos2dx内存管理方面最好是对着代码讲,引用计数概念不是那么好理解兴趣的话,下次再详细讲一下吧。

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android开发之自定义组件和接口回调

最下边布局我们采用FrameLayout方式,并设置其背景颜色。返回图标(ImageView)和 返回文字(TextView)放在了一个水平布局LinearLayout上。...这两者上面放了一个透明Button, 用来实现返回操作。中间Title(TextView) 在FrameLayout设置成居中显示即可。...下方代码就是获取UI中返回按钮,并处理返回事件方法。下方方法需要在构造函数中调用才会起作用,函数不调用怎么执行呢,对吧~。...也就是说在调用该自定义组件,我们要能设置该组件标题。...其实下方代码还是比较简单,就是通过ID来获取标题TextView,并设置相应title即可,代码如下: 1 public String navigationTitle = "标题栏";

1.5K100

DSL In Action

最近在写项目,再次拿出anko这个框架,思考它在UI小组件上可用性。 PS: Anko !...Kotlin DSL本身就是语法糖而已,所以DSL背后就是使用Kotlin代码来自己初始化View,初始化LayoutParams,进行addView之类… 而其实LayoutInflater它本身也只是在做相似的事情而已...添加DSL支持的话 (ColorCircleView是一个自定义View) //这里代码比ViewManager.textView更容易理解 inline fun ViewManager.colorCircleView...比如说已经用XML写好了页面的布局,然后我们需要根据代码在其中一个FrameLayout中动态添加一些东西。我们就可以拿到这个FrameLayout引用,然后就可以用anko大展拳脚了。...再举一个例子,在BottomSheetDialogFragment中,我们拿到Dialog后,需要通过setContView方式来给它设置个View进去,而我们一般会在XML写好然后Inflater

1K20

Android 必知必会 - 动态切换着色模式和全屏模式

背景 公司 APP 设计图仅有 iOS 版,对于 Android 平台,它整体算是着色模式,但是在个人页面是全屏模式(沉浸模式),实现设计图使用是一个 Activity + 四个 Fragment...Flag,然后直接设置状态栏颜色即可。...,毕竟可以直接设置状态栏颜色。...对于 Android 4.4 + ( >= 4.4 且 < 5.0 ) 情况,这里并没有使用网上一些教程:向 DecorView 中添加一个高度为状态栏高度 View,也就没有黑线问题,而是通过修改根布局背景色和根布局...操作过程中页面并没有配合使用 ActionBar ,使用主题是 Theme.AppCompat.Light.NoActionBar ,不确定是否会有意想不到效果,请在配合 ActionBar 先进行测试或者参考文末相关资料

1K20

Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

3、UI层级逻辑播放器 GSYVideoPlayer 所有的UI逻辑基本都可以写到这里,目前继承了 FrameLayout,View.OnClickListener, View.OnTouchListener...逻辑播放器实现内容太多了,这里主要说几个地方,好吧,承认懒╮(╯_╰)╭ ,但是写太多了也没人看啊,所以这里主要是说一些关键点,需要留言再开个坑聊一聊,反正DEMO。...如果你需要无论怎么滑动,视频都在原来位置播放的话,那么ListVideoUtil适合你,,内部它已经带了全屏,防错位,旋转各种逻辑,直接上代码兴趣看DEMO。...因为谷歌到时候刚好看到,缘分啊懂吗。 这里需要个关注是手动点击和自动旋转之间冲突,主要看代码吧,老婆开始催了 (ノಠ益ಠ)ノ彡┻━┻。...IJKPLAY一个问题,也提过ISSUSE了 #2104,不过目前还未解决,就是某些短小视频会无法seekTo,说是FFMEPG问题,然后就太监了。

2.8K90

Android CameraX结合LibYUV和GPUImage自定义相机滤镜

(Android自定义相机滤镜 ),但是运行起来有点卡顿,这次用Camerax来实现一样效果发现很流畅,在此记录一下,也希望能帮到需要同学。...实现效果 image.png 实现步骤 1.引入依赖库 这里引入依赖库CameraX、GPUImage(滤镜库)、Utilcodex(一款好用工具类) // CameraX core library...> Activity中开启相机预览代码如下,基本都是Google官方提供案例代码 class MainActivity : AppCompatActivity() {     private lateinit...= null //创建GPUImage对象并设置滤镜类型,这里使用是素描滤镜 private fun initFilter() {         gpuImage = GPUImage(this)...> 然后我们在Activity中添加拍照逻辑,其实就是将Bitmap转为图片保存到SD卡,这里我们使用了之前引入Utilcodex工具,当我们点击按钮时候isTakePhoto 会变为true,然后在相机回调中就会进行保存图片处理

1.1K20

Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

逻辑播放器实现内容太多了,这里主要说几个地方,好吧,承认懒╮(╯_╰)╭ ,但是写太多了也没人看啊,所以这里主要是说一些关键点,需要留言再开个坑聊一聊,反正DEMO。...1)、Window层级 传闻每一个Activity都有一个com.android.internal.R.id.content,它默默包含了各种你塞进去物体,而且是一个FrameLayout,谷歌太多它传说了...如果你需要无论怎么滑动,视频都在原来位置播放的话,那么ListVideoUtil适合你,,内部它已经带了全屏,防错位,旋转各种逻辑,直接上代码兴趣看DEMO。...因为谷歌到时候刚好看到,缘分啊懂吗。 这里需要个关注是手动点击和自动旋转之间冲突,主要看代码吧,老婆开始催了 (ノಠ益ಠ)ノ彡┻━┻。...接入简单,使用简单,你可以趾高气扬和产品说,这个so easy了。

2.6K30

WebView中视频全屏相关操作

首先你肯定要定义,初始化一个webview,事实上网上样例非常多,这里就简单把一些WebView 中可能会用到非常重要属性以及支持全屏播放视频该怎么实现代码粘出来,直接放到项目中去即可了...setCacheMode 设置缓冲模式 * setDefaultFontSize 设置默认字体大小 setDefaultTextEncodingName 设置在解码使用默认编码 *...onHideCustomView 表示退出全屏时候 界面的话,就是一个webview ,一个FrameLayout ,当全屏时候就设置webview 隐藏,让FrameLayout全屏显示出来,那么视频就自己主动跑到...可见例如以下代码 /** * 设置全屏 */ private void setFullScreen() { // 设置全屏相关属性,获取当前屏幕状态,然后设置全屏 getWindow...quitFullScreen(); } else { } return true; } return super.onKeyDown(keyCode, event); } 什么问题

1.5K20

Android 实现圆角布局

这个布局实现方式很简单,大神只提供了默认四个圆角,这里添加了一些方法可以动态设置圆角位置与弧度,并说明一下和尚遇到小问题。...---- Tips: 在设置完角度之后,要添加 invalidate() 刷新 UI,才可以进行动态设置; 自定义布局样式继承 FrameLayout,所以设置在需要进行圆角控件外即可,并不影响其内部控件样式...; 既然 MyRoundLayout 继承FrameLayout,则应遵循 FrameLayout 特点,内部不能直接设置控件权重,可在内部添加一层 Layout 布局,在进行权重 weight...处理; 在使用 MyRoundLayout ,因为设置是外层圆角,所以不建议使用 padding 属性,若要设置边距,建议使用外边距 margin,若使用 padding 不当,会发生效果图中第一行第二个样式...,没有直接效果; xml 中与 Java/Kotlin 代码中均设置圆角弧度和位置,以 Java/Kotlin 为准,这也是和尚设置 setXX 原因。

2.1K21

实用Android 屏幕适配方案分享

第二、自己将自己单位解析为具体px,不用dp,这一步如果自己写的话,工作量很大,写了个小工具,可以一键生成,只需要把程序生成资源文件,拷贝到res文件夹下 就可以使用了。...电脑显示器分辨率、包括手机分辨率,敢说分辨率种类远超过Android设备分辨率,那么一个很奇怪现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦?...同样,拿到UI设计图以后,是不是抱怨过尼玛你标识都是px,项目里面用dp,这什么玩意,和UI人员解释,UI妹妹也不理解。... ,在实际使用中1dp 大约 等于1/160inch。...那么dp究竟解决了适配上什么问题

1.2K100

Android布局优化:include 、merge、ViewStub详细总结

一、include用法以及注意点 在开发Android布局,我们常将一些通用视图提取到一个单独layout文件中,然后使用标签在需要使用其他layout布局文件中加载进来,比如我们自己...布局文件多个include标签需要设置ID,才能找到相应子View控件,否则只能找到第一个includelayout布局,以及该布局控件。...3,如果我们给include所加载layout布局根容器设置了id属性,也在include标签中设置了id属性,同时需要在代码中获取根容器控件对象,最好将这两个id设置相同名称!...merge标签使用注意点: 1,根布局是FrameLayout且不需要设置background或padding等属性,可以用merge代替,因为ActivityContentView父元素就是FrameLayout...ViewStub是一个不可见View类,用于在运行时按需懒加载资源,只有在代码中调用了viewStub.inflate()或者viewStub.setVisible(View.visible)方法才内容才变得可见

2K50

Android:一个高效UI才是一个拉风UI

我们评判一个UI界面不是认为多复杂才给力,或者说多炫才靠谱,一个简约而又不平凡高效UI界面才是一个灰常牛逼界面设计。 引入 在android应用中,采用硬编码方式编写界面并不是一个提倡方法。...所以如果非常必要非常肯定要采用代码编写硬编码界面之外,其他情况还是采用易于维护XML来编写比较好。 所以文中对于UI优化设计归结到底也就是对XML布局文件优化设计。...小结一个:在我们设计UI布局,应该从使用尽量少组件前提下入手,由于系统组件封装比较完善,把多个简单组件交由一个复杂一点组件来实现,是可以得到比较好效率。...小结一个:标签能百分百代替这个布局组件,对于不复杂其他布局组件如线性布局等组合组件中,可以在继承子类中对其属性进行设置后也可以使用标签,只能作为根元素,对于需要用inflate生成布局文件,必须指定一个ViewGroup作为其父元素,并且要设置inflateattachToRoot参数为true。

69090

NA嵌入Flutter页面

官方文档说明目前不提供在View级别引入Flutter便捷API,因此如果可能的话,我们应该避免使用FlutterView,但是通过FlutterView引入Flutter页面也是可行。...flutterEngine类型为FlutterEngine,字面意思就是Flutter引擎,它负责在Android端执行Dart代码,将Flutter编写UI显示到FlutterView容器中。...缓存起来,之后使用这个FlutterEngine来显示出Flutter UI。.../** * 和介绍创建FlutterFragment三种方式是对应 * * FlutterActivity显示Flutter路由是在创建Intent对象指定, * 优点就是使用起来更简单...如果需要在页面跳转传递参数呢,如何在Flutter代码中获取到原生代码参数呢?其实很简单,只需要在route后面拼接上参数就可以了。 以创建FlutterView方式为例。

3.5K00

实用Android 屏幕适配方案分享

第二、自己将自己单位解析为具体px,不用dp,这一步如果自己写的话,工作量很大,写了个小工具,可以一键生成,只需要把程序生成资源文件,拷贝到res文件夹下 就可以使用了。...电脑显示器分辨率、包括手机分辨率,敢说分辨率种类远超过Android设备分辨率,那么一个很奇怪现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦?...同样,拿到UI设计图以后,是不是抱怨过尼玛你标识都是px,项目里面用dp,这什么玩意,和UI人员解释,UI妹妹也不理解。...,在实际使用中1dp 大约 等于1/160inch。...那么dp究竟解决了适配上什么问题

1.4K70

Android 列表视频全屏、自动小窗口优化实践

列表中播放视频全屏展示 看过小喵上一篇视频相关文章应该知道小喵手贱用了两种实现方式,一种是基于懒人系统层模式;一种是基于单例UI逻辑播放器模式ListVideoUtil。...此处手贱加入了动画效果支持,一直觉得5.0过渡动画挺高大上,作为一个material design应用必须有这样逼格(什么?你说兼容?这里美女太多听不到····)。...作为一只内向程序猿,语言组织能力有限,我们还是从代码上来,从代码上去吧,注释满满,顺序看下去不难理解(前提是你看下,确实长♂了点)。 ?...(ノಠ益ಠ)ノ彡┻━┻,就说程序猿还是看代码好沟通是吧,虽然很长就是。...所以我们只需要反着来就行了,下面直接长代码注释。

4.5K50

Android 9.0系统新特性,对刘海屏设备进行适配

这里使用LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES属性,并且配合着沉浸式模式代码,来编写一个全屏UI界面,以此模拟视频和游戏类App效果。...> 这里给最外层FrameLayout指定了一个背景图,随便使用什么图片都可以,我们只是为了便于进行演示。...其他部分代码都是用于设置沉浸式模式,关于这部分内容就不展开进行介绍了,更多沉浸式模式讲解,可以参考之前这篇文章 Android状态栏微技巧,带你真正理解沉浸式模式 。...Android在9.0系统中提供了一套专门用于获取安全显示区域API,我们只需要确认出哪些位置是可能被遮挡到,然后对可交互控件进行相应位置偏移就可以了,示例代码如下所示: if (Build.VERSION.SDK_INT...好在适配方法并不复杂,使用前面介绍那段示例代码即可轻松完成适配工作。

77810
领券