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

再学一遍android:fitsSystemWindows属性

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

1.3K50

当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.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    1.7K100

    Android经典面试题之Kotlin中如何隐藏DialogFragment和Dialog的导航栏

    DialogFragment隐藏导航栏 在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。...-- Your layout content goes here --> FrameLayout> 使用 DialogFragment 要显示这个 DialogFragment,可以在活动或其他片段中调用以下代码...onViewCreated 方法中设置系统 UI 的可见性标志,可以实现隐藏系统导航栏的效果。...在创建 Dialog 时,可以使用 Window 类提供的一些标志来隐藏导航栏。...通过这些设置,当显示 Dialog 时,它将隐藏系统导航栏和状态栏,实现全屏显示。如果需要在更多场景下多次使用该样式,可以进一步将其封装或抽取为一个通用组件。

    19410

    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

    1.1K20

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

    背景 公司的 APP 设计图仅有 iOS 版的,对于 Android 平台,它整体算是着色模式,但是在个人页面是全屏模式(沉浸模式),实现设计图时,我使用的是一个 Activity + 四个 Fragment...Flag,然后直接设置状态栏的颜色即可。...,毕竟可以直接设置状态栏的颜色。...对于 Android 4.4 + ( >= 4.4 且 的情况,我这里并没有使用网上一些教程:向 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的问题,然后就太监了。

    3K90

    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.3K20

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

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

    2.7K30

    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.7K20

    Android 实现圆角布局

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

    2.2K21

    实用Android 屏幕适配方案分享

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

    1.4K70

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

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

    2.2K50

    实用Android 屏幕适配方案分享

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

    1.2K100

    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.7K00

    安卓软件开发:Java和Kotlin实现首页壁纸的手势切换功能

    使用 Bitmap 创建一个指定颜色的纯色图像,通过 Canvas 绘制设置为设备的壁纸。 异常处理部分确保在设置壁纸失败时抛出明确的错误信息,用于调试和问题定位。...2.6 完整代码 项目完整代码整合了手势检测、壁纸切换以及UI展示的功能。 GestureListener.java:负责手势检测壁纸切换。...UI 同步:保证手势切换和UI更新是同步,防止出现手势滑动后壁纸没有即时切换的情况。 边界处理:在壁纸数组到达边界时的回环处理逻辑需要确保不会出现数组越界错误。...我详细对比 ViewPager 和 GestureDetector,分析两者的使用场景和各自的优势,GestureDetector 更适合壁纸切换功能。...六、总结 本项目成功实现了通过手势滑动切换壁纸的功能,为了目的增强了车机应用的个性化体验。未来,计划增加更多的壁纸样式、优化加载速度,提升用户操作时的反馈效果。 有任何问题欢迎提问,感谢大家阅读 )

    463151

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

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

    74890
    领券