Android中的Preference结构的设计与实现
本文主要通过分析源代码来分享Preference的设计和实现方式,让开发者们在今后更加顺手地使用和扩展Preference类,或者在设计其他类似的界面和功能时可以提供参考帮助。
Preference概览
Android的设置界面本质上就是ListView:PreferenceActivity是继承了ListActivity;而3.0以后推荐使用的PreferenceFragment虽然没有继承ListFragment,但也定义了ListView字段。
跟ListView搭配使用的就是实现了ListAdapter接口的对象,其中的关键又是在 getView (int position, View convertView, ViewGroup parent)
。一开始我猜想Preference实现相当于一个自定义的View,所以它可能继承于View或者ViewGroup,这样扩展类就直接往里面加需要的额外的view就好了。结果发现Preference
什
么也没有继承,只是实现了一个Compareble接口用来比较两个对象,以便可以按序显示内容。不过Preference也不是什么都没有包含,它存储
了相应Preference的布局信息以及当前状态。所以Preference相对于整个设置列表来说可以算是子项目(item),而非子视图
(view)。
Preference不是View,但也包含View
对于Preference的状态信息,通过setEnabled (boolean enabled)
、setTitle (CharSequence title)
这些API方法都可以比较直接得了解到,所以这里更关心用来控制布局的两个变量:
-
private int mLayoutResId = com.android.internal.R.layout.preference;
-
private int mWidgetLayoutResId;
对于mLayoutResId
的默认值,翻看源代码就可以看到它所对应的XML结构如下(不包含Copyright注释):
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Layout for a Preference in a PreferenceActivity. The 3 Preference is able to place a specific widget for its particular 4 type in the "widget_frame" layout. --> 5 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 6 android:layout_width="match_parent" 7 android:layout_height="wrap_content" 8 android:minHeight="?android:attr/listPreferredItemHeight" 9 android:gravity="center_vertical" 10 android:paddingEnd="?android:attr/scrollbarSize" 11 android:background="?android:attr/selectableItemBackground" > 12 13 <ImageView 14 android:id="@+android:id/icon" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_gravity="center" 18 /> 19 20 <RelativeLayout 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:layout_marginStart="15dip" 24 android:layout_marginEnd="6dip" 25 android:layout_marginTop="6dip" 26 android:layout_marginBottom="6dip" 27 android:layout_weight="1"> 28 29 <TextView android:id="@+android:id/title" 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:singleLine="true" 33 android:textAppearance="?android:attr/textAppearanceLarge" 34 android:ellipsize="marquee" 35 android:fadingEdge="horizontal" /> 36 37 <TextView android:id="@+android:id/summary" 38 android:layout_width="wrap_content" 39 android:layout_height="wrap_content" 40 android:layout_below="@android:id/title" 41 android:layout_alignStart="@android:id/title" 42 android:textAppearance="?android:attr/textAppearanceSmall" 43 android:textColor="?android:attr/textColorSecondary" 44 android:maxLines="4" /> 45 46 </RelativeLayout> 47 48 <!-- Preference should place its actual preference widget here. --> 49 <LinearLayout android:id="@+android:id/widget_frame" 50 android:layout_width="wrap_content" 51 android:layout_height="match_parent" 52 android:gravity="center_vertical" 53 android:orientation="vertical" /> 54 55 </LinearLayout>
通过源代码和上边的注释也能了解到@+android:id/widget_frame
其实为mWidgetLayoutResId
所对应的布局预留了空间。
1 protected View onCreateView(ViewGroup parent) { 2 final LayoutInflater layoutInflater = 3 (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 4 5 final View layout = layoutInflater.inflate(mLayoutResId, parent, false); 6 7 final ViewGroup widgetFrame = (ViewGroup) layout 8 .findViewById(com.android.internal.R.id.widget_frame); 9 if (widgetFrame != null) { 10 if (mWidgetLayoutResId != 0) { 11 layoutInflater.inflate(mWidgetLayoutResId, widgetFrame); 12 } else { 13 widgetFrame.setVisibility(View.GONE); 14 } 15 } 16 return layout; 17 }
这解释了为什么设置上的所有项目看起来都是一样的:图标、标题、子标题;然后右侧额外的可交互控件,比如checkbox、switchbutton。再查看Android系统配置的style可以看到只有PreferenceCategory用的是不同的布局preference_category
,其XML文件的内容也就只有一个TextView:
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Layout used for PreferenceCategory in a PreferenceActivity. --> 3 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 4 style="?android:attr/listSeparatorTextViewStyle" 5 android:id="@+android:id/title" 6 />
Preference不是View,但能创建View
有ListView,就一定会有ListAdapter的子类出现,在Preference里这个子类就是PreferenceGroupAdapter。可惜它被定义成包可见,所以在API文档中无法找到对它的介绍。就像之前已说到的ListAdapter最关键的还是看getView (int position, View convertView, ViewGroup parent)
是 怎么创建出View来。不过通过源码一看,PreferenceGroupAdapter并不像传统的如ArrayAdapter、 SimpleAdatapter那样在其内部实现View的创建和数据绑定工序,还是将该流程转给了Preference去完成。这也就是之前看到的那段onCreateView(ViewGroup parent)
,以及getView (View convertView, ViewGroup parent)
和onBindView (View view)
。另外onCreateView
和onBindView
是protected
的方法且没有被定义为final
,所以自定义Preference子类的时候可以覆盖这两个方法来返回不同View,这样就大大增强了扩展性,不用去修改ListAdapter的实现了。
ListAdapter为了能够合理地复用View所以要求对每个View的提供指示其类型的整数:getItemViewType(int position)
这 样对于相同类型的View就可以服用在不同的项目上呈现内容了,节省很多内存。既然Android定义了那么多不同的Preference 类,PreferenceGroupAdapter自然也需要针对每个Preference提供可靠的类型。考虑到设置界面的项目数目上一般都是固定的而 且不会特别长,所以即使不做任何复用对性能上也不会有太大影响。不过Android系统还是对其做了这方面的优化,根据Preference的实际类名以 及上边提到两个跟布局相关的字段的值映射到PreferenceLayout上,如果两个Preference对应的PreferenceLayout
相同那么就这两个就被认定为类型相同。因此如果自定义Preference是不想用系统提供的布局结构,也要注意通过setLayoutResource (int layoutResId)
和setWidgetLayoutResource (int widgetLayoutResId)
来覆盖其上的值以防止复用了错误的View。
1 private static class PreferenceLayout implements Comparable<PreferenceLayout> { 2 private int resId; 3 private int widgetResId; 4 private String name; 5 6 public int compareTo(PreferenceLayout other) { 7 int compareNames = name.compareTo(other.name); 8 if (compareNames == 0) { 9 if (resId == other.resId) { 10 if (widgetResId == other.widgetResId) { 11 return 0; 12 } else { 13 return widgetResId - other.widgetResId; 14 } 15 } else { 16 return resId - other.resId; 17 } 18 } else { 19 return compareNames; 20 } 21 } 22 }
PreferenceGroupAdapter将PreferenceLayout存储在ArrayList中,然后通过二分查找,来确认是否需要添加新的成员以及其在数组中的位置用以指示其类型。
1 private ArrayList<PreferenceLayout> mPreferenceLayouts; 2 3 4 private void addPreferenceClassName(Preference preference) { 5 final PreferenceLayout pl = createPreferenceLayout(preference, null); 6 int insertPos = Collections.binarySearch(mPreferenceLayouts, pl); 7 8 // Only insert if it doesn't exist (when it is negative). 9 if (insertPos < 0) { 10 // Convert to insert index 11 insertPos = insertPos * -1 - 1; 12 mPreferenceLayouts.add(insertPos, pl); 13 } 14 } 15 16 public int getItemViewType(int position) { 17 if (!mHasReturnedViewTypeCount) { 18 mHasReturnedViewTypeCount = true; 19 } 20 21 final Preference preference = this.getItem(position); 22 if (!preference.canRecycleLayout()) { 23 return IGNORE_ITEM_VIEW_TYPE; 24 } 25 26 mTempPreferenceLayout = createPreferenceLayout(preference, mTempPreferenceLayout); 27 28 int viewType = Collections.binarySearch(mPreferenceLayouts, mTempPreferenceLayout); 29 if (viewType < 0) { 30 // This is a class that was seen after we returned the count, so 31 // don't recycle it. 32 return IGNORE_ITEM_VIEW_TYPE; 33 } else { 34 return viewType; 35 } 36 }
对于这个的实现方式我比较奇怪为什么要用ArrayList不直接使用HashMap,毕竟将类名和两个整数拼接作为主键应该不算太坏。虽然ListAdapter要求getItemViewType(int position)
返回的值要在0
到getViewTypeCount()-1
,使用ArrayList会有保障。但即使是用HashMap也可以用一个从0
开 始的自增量,每当添加了新的PreferenceLayout就将自增量的值作为值然后自增。毕竟PreferenceLayout的顺序关系应该对 Preference的呈现没有什么影响,只是为了二分查找才要保持其顺序。不过之前也提到设置页面上的东西不会特别多,所以二分查找的效率也接近 HashMap的O(1)。
Preference的组织结构
Preference为整个设置界面的结构提供了基本内容和操作,PreferenceGroupAdapter也打通了与ListView的连接。另一方面Android系统也提供了很多预定义的Preference类型,下边就是目前可供选择的全部类型和继承关系。
- Preference
- DialogPreference
- EditTextPreference
- ListPreference
- MultiCheckPreference
- MultiSelectListPreference
- SeekBarDialogPreference
- VolumePreference
- YesNoPreference*
- PreferenceGroup
- PreferenceCategory
- PreferenceScreen
- RingtonePreference
- SeekBarPreference
- TwoStatePreference
- CheckBoxPreference
- SwitchPreference
- DialogPreference
(*YesNoPreference是唯一定义在com.android.internal.preference
包下的类,因为无法被外部使用所以不清楚其具体作用。)
这些Preference的子类(不算抽象类)我可以将他们分成两类:Group其下的Category、Screen算为组织型,因为他们主要是定义Preference的层次结构;其他的则是应用型,因为它们是真正与用户交互来获得偏好信息。
这里只来讨论PreferenceScreen
, 因为在定义XML的时候PreferenceScreen是根元素,PreferenceGroupAdapter的对象实例也是存放在 PreferenceScreen之中,所以在整个Preference结构设计中它起着相当关键的作用。我觉得其中一个重要的方法就是bind(ListView listView)
,它让整个Preference结构能在屏幕上显示出来。
1 public void bind(ListView listView) { 2 listView.setOnItemClickListener(this); 3 listView.setAdapter(getRootAdapter()); 4 5 onAttachedToActivity(); 6 }
这个方法会被PreferenceActivity和PreferenceFragment调用,并用它们存储的ListView对象作为参数,进 而获得了所需的PreferenceGroupAdapter。因此PreferenceActivity父类ListActivity上的 ListAdapter对象其实从来没被用到过一直是null
。这也多少能解释为什么后来设计的PreferenceFragment没有继承ListActivity,只是自己实现的必要的部分。
如果PreferenceScreen是以子项目出现在列表上的话,点击它会呈现出另一个列表,不过这个列表是呈现在Dialog上而非新的Activity或Fragment。同样的新列表也会通过上边的bind(ListView listView)方法来和PreferenceGroupAdapter绑定上。
衔接前后的PreferenceManager
介绍过了在背后存储设置内容的SharedPreferences,了解了在前台展示的界面的Preference,最后再来讲讲衔接两者的 PreferenceManager。PreferenceManager在PreferenceActivity或 PreferenceFragment中被创建被作为其属性,然后共享给包含的Preference树结构。所以同一个设置类别使用着同一个 PreferenceManager对象,而PreferenceManager里则有一个SharedPreferences对象帮助写入偏好到相应的 XML文件中。
已经知道SharedPreferences的构造方法需要指定对应XML的文件名,对于Preference中所使用的SharedPreferences的文件名,取的时Android提供的一个预定义的名字:
1 private void init(Context context) { 2 mContext = context; 3 4 setSharedPreferencesName(getDefaultSharedPreferencesName(context)); 5 }
而这个预定的是程序的包名加上后缀”_preferences
“,所以在使用自定义名字的时候尽量避开这种形式以免存储冲突。当然如果是想读取设置信息来做执行的判定条件那是应该使用PreferenceManager上的getDefaultSharedPreferences (Context context)
。
1 private static String getDefaultSharedPreferencesName(Context context) { 2 return context.getPackageName() + "_preferences"; 3 }
不过的PreferenceManager初始化时只是设定了名字参数,真正的SharedPreferences是在Preference首次读 或写键值对时才被创建,因此如果希望设置的参数存储在不同的文件名下,可以在PreferenceActivity或 PreferenceFragment的onCreat()
方法里调用PreferenceManager的setSharedPreferencesName (String sharedPreferencesName)
来完成自定义化。
1 public static final String pref_file_name = "ider_hacked_preferences"; 2 @Override 3 public void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 getPreferenceManager().setSharedPreferencesName(pref_file_name); 6 addPreferencesFromResource(R.xml.preferences); 7 }
从Preference到其它
了解Preference的设计和实现可以为今后的开发和架构提供一定的参考。比如在布局的设计上,为了保持相对得统一可以固定整体然后留出局部的占位区间做差异化;实现ListAdapter的时候不一定要使用switch...case
的 结构来决定需要用返回哪种View,将它留给项目类则可以大大增加扩展性。SharedPreferences中也体会到读取和写入被分成两个类的好处, 而它又与Preference行程了界面与存储的分离,再通过PreferenceManager衔接,对于这样的设计,完全可以再实现出这几个继承类, 让内容比其它格式存储,比如XML、SQLite。
总之,Android的开源性让开发者能够方便地学习到其中的设计理念,虽然它的整体设计上经过了那么多的版本可能依然有许多不足(比如让我困惑的在PreferenceGroupAdapter里使用二分查找),但还是可以学习到不少的开发思想。
转载于:https://www.cnblogs.com/neo-java/p/6830840.html
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- JS截取字符串函数详解
一、函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”;arr=theString.split(”|”);//arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组二、函数:John() 功能:使用您选择的分隔符将一个数组合…...
2024/4/20 18:30:14 - 打造免费的游戏开发环境
打造免费的游戏开发环境目前,Windows用户占了全大多数,因此开发的游戏运行环境,就肯定是Windows了。而在windows开发中,开发工具的选择,肯定是微软的比较好。而游戏开发平台,最好的又是C++了,因为Windows和DirectX组件的开发,就是基于C和C++的。好了,现在就教你打…...
2024/4/20 18:30:13 - U转串口驱动安装
在装有Win7 32位系统的台式机上先卸载旧驱动,再重新安装。对设备管理器里的U转串口设备从本地更新驱动,选择下图文件系统弹出红色提示框(是否安装XXXX驱动),选择安装,随后该设备由无法启动变为工作正常。在Win8 64位系统上安装驱动后,出现下图情况,设备无法启动(错误代…...
2024/4/21 8:28:36 - PreferenceActivity 安卓官方文档(译文)
PreferenceActivity 安卓开发者译文类概述这是一个向用户展示 preferences 的Activity的扩展类. 在 HONEYCOMB (android4.0)之前的版本,这个类仅仅只向用户展示单一preference集;这个功能在之后的版本被放在 PreferenceFragment 类中.如果你想你的 PreferenceActivity 仅仅保…...
2024/4/21 8:28:34 - vb.net程序打包发布
本篇文章主要介绍的是我所做的机房收费系统VB.NET版的打包发布过程,全文基本由图片组成,文字其实也不少。首先介绍下,写这篇文章之前,我参看过的文章。vb.net 打包发布 ,Winform打包发布图解,VB.NetWinform程序的简单打包和部署--<机房收费系统> . OK,编下号博客…...
2024/4/21 8:28:34 - 在微信公众平台做HTML 5游戏的一些经验
在微信公众平台做HTML 5游戏的一些经验时间:2013-08-22 英特尔intel.com 程大伟<iframe id="cproIframe_u1234" width="300" height="250" src="http://pos.baidu.com/acom?adn=3&at=231&aurl=&cad=0&ccd=24&cec=G…...
2024/4/21 8:28:33 - javascript两种截取字符串的方法
JS提供两个截取字符串的方法,分别是:slice()和substring()slice和substring都可以接受一个或两个参数,第1个参数是获取要截取的字符串的直始位置,第2个参数如果不为空则是获取要截取的字符串的结束位置的前一位(也就是说获取的终点位置不在返回值内),为空表示截取到整个字符串…...
2024/4/21 8:28:31 - Linux 程序设计学习笔记----终端及串口编程及实例应用
转载请注明出处,http://blog.csdn.net/suool/article/details/38385355。 部分内容类源于网络。 终端属性详解及设置 属性 为了控制终端正常工作,终端的属性包括输入属性、输出属性、控制属性、本地属性、线路规程属性以及控制字符。 其在系统源代码的termios.h中定义(具体的…...
2024/4/21 8:28:30 - Visual Studio 2017中如何打包exe安装文件
注意:阅读本篇文章前,请先按照 https://blog.csdn.net/DonetRen/article/details/88185150 的步骤添加相应扩展,并创建安装项目创建完Windows安装项目之后,接下来讲解如何制作Windows安装程序。一个完整的Windows安装程序通常包括项目输出文件、内容文件、桌面快捷方式和注…...
2024/4/21 8:28:29 - 课程 4: 偏好
这节课是 Android 开发(入门)课程 的第三部分《访问网络》的最后一节课。这节课为 Quake Report App 添加一个偏好 (Preference) 页面,入口放在应用栏,使应用能够根据用户的偏好修改查询地震信息的最小震级,以及按震级大小或时间顺序排列显示地震信息列表。 关键词:Share…...
2024/4/21 8:28:28 - 游戏引擎之寒霜引擎
Frostbite引擎(Frostbite Engine),是EA DICE开发的一款3D游戏引擎,主要应用于2000年代晚期的战地系列游戏。该引擎从2006年起开始研发,第一款使用寒霜引擎的游戏《战地:叛逆连队》在2008年上市。多平台 Frostbite引擎支持多种平台的后端。在Xbox 360、Microsoft Windows上…...
2024/4/21 8:28:27 - 如何让打包的C++安装程序以管理员身份在Win7下运行
问题描述:使用VS2010开发的C++项目,使用inno打包后的安装程序,安装在系统盘后,在桌面创建的快捷方式必须右键以管理员身份才能正常运行,否则双击运行程序出现异常。解决方法:在VS2010解决方案资源管理器中右键启动项目->属性,弹出 个工程属性页,定位到链接器->清…...
2024/4/21 8:28:26 - JS中字符串截取与php中字符串截取函数总结
1. JS中关于字符串截取的函数var stringObj = "123abcstring";(1) substr()函数stringObj.substr(start, length): 表示从start位置开始,截取length长度(指定长度)的子字符串。例如: stringObj.substr(1, 3); // 返回值为:“23a”(2) substring()函数string…...
2024/4/21 8:28:25 - linux串口转TCP程序
include”test.h”include”modbus.h”define BUFFER_SIZE 29int ret; modbus_t *mb; int16_t tab_reg[32]={0}; //初始化串口端口号啊 void ComInit() { mb = modbus_new_rtu(“/dev/ttySAC3”,19200,’N’,8,1);//open port modbus_set_slave(mb,1);//set slave addre…...
2024/4/21 8:28:24 - Android 关于Preference相关类的分析
系统里设置Settings app 里面是用Preference来做的,这些在其他app里也有涉及,比如dialer的设置部分,关于Preference这里涉及到一些类,以后会常用碰到的,做一个笔记记录和分析一下。Activity :PreferenceActivity Fragment :PreferenceFragment Preference :Preference 多…...
2024/4/21 8:28:23 - linux查看串口信息
每个UART控制器包含一个波特率发生器,发送器,接收器和控制单元,发送和接收器包括FIFO和数据移位器,首先数据被写到FIFO中,然后复制到发送移位器中准备发送,最后数据被发送数据管脚移位发出。数据接收过程是:首先从接收管脚上面的到数据,然后将数据从移位器中复制到FIFO…...
2024/4/25 13:14:37 - JS截取字符串数组的方法总结
1.slice 字符串和数组 string.slice(start, end) 截取一个字符串 start到end不包括end end支持负数 返回新的字符串不会改变原字符串 2.substring string.substring(start, end)截取一个字符串 start到end不包括end 跟slice不同的是end不支持负数 返回新的字符串不会改变原字符…...
2024/4/21 8:28:21 - MFC应用程序打包发布教程
MFC应用程序打包发布 转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/49766051 本篇文章介绍如何把做好的MFC软件打包,变成一个安装文件,方便在其他电脑上运行。使用上篇文章制作好的"视频播放器"工程作为例子。 1.在同一个解决方案下,新建…...
2024/4/21 8:28:20 - Manjaro Gaming:当 Manjaro 的才华遇上 Linux 游戏 | Linux 中国
Manjaro Gaming 是一个专门为游戏人群设计的,带有 Manjaro 所有才能的发行版。之前用过 Manjaro Linux 的人一定知道为什么这对于游戏人群来说是一个如此好的一个消息。-- Munif Tanjim本文导航◈ 优化35%◈ 软件41%◈ 模拟器57%◈ 其它76%◈ 下载85%编译自 | https://itsfo…...
2024/4/20 18:30:24 - AM335X 串口驱动学习(1)-基于linux3.8内核
学习串口驱动,先从数据结构入手吧。串口驱动有3个核心数据结构:(/drivers/tty/serial/omap-serial.c) - UART特定的驱动程序结构定义:struct uart_driver serial_omap_reg; - UART端口结构定义: struct uart_omap_port *ui[OMAP_MAX_HSUART_PORTS]; - UART相关操作函…...
2024/4/20 18:30:23
最新文章
- 查找总价格为目标值的两个商品 ---- 双指针
题目链接 题目: 分析: 解法一: 暴力解法, 将每两个的和都算出来, 判断是否为目标值解法二: 数组中的数是按升序排序的, 我们可以定义左右指针 如果和小于目标值, 则应该让和变大, 所以左指针右移如果和大于目标值, 则应该让和变小, 所以右指针左移 思路: 定义left 0, righ…...
2024/4/25 16:22:00 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Unity核心学习
目录 认识模型的制作流程模型的制作过程 2D相关图片导入设置图片导入概述纹理类型设置纹理形状设置纹理高级设置纹理平铺拉伸设置纹理平台打包相关设置 SpriteSprite Editor——Single图片编辑Sprite Editor——Multiple图片编辑Sprite Editor——Polygon图片编辑SpriteRendere…...
2024/4/24 7:49:17 - 解决npm install安装node-sass包容易失败的问题
具体问题如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…...
2024/4/21 22:12:33 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/25 11:51:20 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/23 13:30:22 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/23 13:28:06 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/24 18:16:28 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/23 13:27:44 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/19 11:57:53 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/23 13:29:53 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/23 13:27:22 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/25 13:39:44 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/23 22:01:21 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/23 13:29:23 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/25 0:00:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/25 4:19:21 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/19 11:59:23 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/19 11:59:44 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/24 16:38:05 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/25 13:19:01 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/23 13:27:51 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/23 13:27:19 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57