管理系统UI之一:淡化System Bar(Dimming the System Bars)

这篇文章讨论如何在4.0以及以上版本中淡化android的system bar(status bar和navigation bar)。在4.0之前的版本没有这样的功能。

用此文的方法并不会重新分配Ui的大小,只是status bar和navigation bar的相关图标会被弱化,比如navigation bar的几个虚拟键会弱化成很细微的小点。一旦你再次点击 status bar和navigation bar 的所在区域,他们就会再次完全显现。这种方式的好处是status bar和navigation bar并没有消失,仍然在界面上,但是它们的细节变暗了、模糊了。

在4.0以上的版本,你可以使用SYSTEM_UI_FLAG_LOW_PROFILE 标志来使 status bar和navigation bar变暗。虽然下面是调用decorViewsetSystemUiVisibility方法,但是你完全可以调用任何一个可见view的setSystemUiVisibility方法,效果是一样的。

1
2
3
4
// This example uses decor view, but you can use any visible view.
View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE;
decorView.setSystemUiVisibility(uiOptions);


一旦用户这这个时候触摸了status bar和navigation bar 的所在区域, 系统便清除掉了SYSTEM_UI_FLAG_LOW_PROFILE,status bar和navigation bar淡化效果将消失,如果你想再次淡化status bar和navigation bar,需要再次如上设置。


下面这张图演示了gallery中的一张图片在显示时, navigation bar被淡化的情景(注意status bar没有显示并不是淡化了,而是gallery应用直接隐藏了它),你可以看到右侧的 navigation bar 已经变成了三个透明度很低的灰白色的小圆点。

而这张图则是system bars 完全显示时候的样子。


上面提到了如果你在system bar变暗的时候触摸了相关区域,系统会自动清除setSystemUiVisibility()设置的flag,

其实你还可以自己手动清除:

1
2
3
4
View decorView = getActivity().getWindow().getDecorView();
// Calling setSystemUiVisibility() with a value of 0 clears
// all flags.
decorView.setSystemUiVisibility(0);
### 回答1: Verilog语言写localdimming算法代码的示例如下:module LocalDimming (input clk, input [7:0] a, output [7:0] b); reg [7:0] curr, prev;always @ (posedge clk) begin prev <= curr; curr <= a; b <= curr - prev; endendmodule ### 回答2: localdimming算法是一种用于调整LED背光的算法,以改善液晶显示器的对比度和亮度表现。在Verilog语言中,可以通过以下代码实现localdimming算法: module localdimming ( input wire [7:0] pixel_value, // 输入的像素值 output wire [7:0] backlight_value // 背光值 ); reg [7:0] pixel_average; // 像素平均值 reg [7:0] backlight_level; // 背光级别 always @(pixel_value) begin pixel_average = (pixel_value[7:0] + pixel_value[6:0]) >> 1; // 计算像素平均值,取高8位和次高8位的平均值 if (pixel_average > 128) begin backlight_level = pixel_average >> 1; // 若像素平均值大于128,则背光级别设为像素平均值的一半 end else begin backlight_level = 0; // 若像素平均值小于等于128,则背光级别设为0 end end assign backlight_value = backlight_level; // 将背光级别赋给背光输出信号 endmodule 以上代码为一个Verilog模块,接收8位的像素值,并通过计算得出像素平均值。根据像素平均值的大小,判断背光级别的设定,即将像素平均值的一半赋给背光级别。最终将背光级别作为输出信号,完成localdimming的算法实现。 需要注意的是,以上代码仅为示例,实际应用时可能会有更复杂的计算和控制逻辑,可以根据实际需求进行修改和优化。此外,若要完整运行和验证该代码,还需要在顶层模块中实例化该localdimming模块,并提供合适的输入信号和触发时机。 ### 回答3: 本段localdimming算法代码使用Verilog语言编写,可以实现在液晶显示器中进行局部调光处理。 module localdimming ( input [7:0] brightness [0:511], // 输入亮度数据 input [9:0] pixel_x, // 输入像素横坐标 input [9:0] pixel_y, // 输入像素纵坐标 output [3:0] brightness_out // 输出亮度数据 ); wire [7:0] brightness_up, brightness_down; // 计算横向局部平均亮度 assign brightness_up = (pixel_x > 0) ? brightness[pixel_y * 512 + pixel_x - 1] : 0; assign brightness_down = (pixel_x < 511) ? brightness[pixel_y * 512 + pixel_x + 1] : 0; // 计算当前像素附近像素的平均亮度 assign brightness_out = (brightness[pixel_y * 512 + pixel_x] + brightness_up + brightness_down) / 3; endmodule 在这段代码中,我们定义了一个名为localdimming的模块,它包含了输入和输出端口以及相关的信号线。输入信号包括一个大小为512x8的亮度数组,一个像素的横坐标和一个像素的纵坐标。输出信号为一个4位亮度数据。 计算过程中,我们首先通过判断像素横坐标来获取当前像素左边和右边像素的亮度信息,保存在亮度变量brightness_up和brightness_down中。然后,我们将当前像素以及其左右像素的亮度值求平均,并将结果赋值给输出亮度变量brightness_out。 这段代码实现了局部调光算法,通过计算当前像素附近像素的亮度平均值来调整当前像素的亮度,从而实现局部亮度调节的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值