Android自绘控件要点梳理
本文所有内容来自网络,通过本人梳理编撰成文。文章仅对知识要点做罗列整理,属于知识大纲,预期读者为具备相关开发经验的研发,不建议初学者阅读。如果需要进一步探究,可以查看参考资料查看原文。
UI基础概念
坐标系
屏幕坐标系
移动设备的坐标系一般定义屏幕的左上角为坐标原点,向右为X轴增大方向,向下为Y轴增大方向。全局偏移量是指控件相对屏幕坐标系原点的偏移量。控件的屏幕全局偏移量可以通过以下方式获取:
view.getLocationOnScreen(int[] location)
获取相对屏幕的全局坐标view.getLocationInWindow(int[] location)
获取相对窗口的全局坐标,当窗口与屏幕重合时就等于全局偏移量view.getGlobalVisibleRect(Rect rect)
获取相对屏幕的全局坐标
view.getWindowVisibleDisplayFrame(rect)
可获取可见view所在window的全局坐标,比如可以通过rect.top
来获取状态栏高度。由于是从WMS获取,涉及IPC,注意性能。
View坐标系
控件的坐标系是相对于父控件而言的,对应局部偏移量。可以通过下述方式获取view的局部偏移量:
- 通过
view.getLeft()/view.getRight()/view.getTop()/view.getBottom()
获取四条边偏移量(float类型),此数值是在布局完成后赋值的 - 通过
view.getX()
/view.getY()
获取局部x/y轴偏移量(float类型),这是实际局部偏移量 - 通过
view.getLocalVisibleRect(Rect rect)
获取局部偏移量,与left/top相对应
其中:
x = left + translationX
y = top + translationY
当我们执行view的位置偏移动画时便是通过修改translationX/translationY
实现的。
事件坐标系
触摸事件的坐标提供了上述两个坐标系,即一个相对于整个手机屏幕的坐标,另一个相对于当前控件的坐标。
角度deg与弧度rad
-
大小关系:
360(deg) = 2π(rad) -
增大方向:
颜色
- 类型
类型 | 枚举 | 存储格式 |
---|---|---|
四通道颜色(32位) | ARGB8888 | 0x00000000->0xffffffff |
三通道颜色(16位) | RGB888 | 0x000000->0xffffff |
- 相关API
- int color =Color.GRAY;
- int color =Color.argb(127,255,0,0);
- int color = 0xaaff0000; //0x大小写敏感,其他大小写不敏感
- int color= Color.parseColor("#ff00ff00");
- int color = context.getResources().getColor(R.color.mycolor);
- xml中颜色硬编码:
#00ff0000
绘制操作
视图构成
- Activity:内部有个Window成员,它的实例为PhoneWindow;
- PhoneWindow:有个内部类是DecorView;
- DecorView:继承FrameLayout用于存放布局文件,里面有TitleActionBar和setContentView传进去的layout布局文件,其中id=content的就是我们传入的布局视图;
绘制流程
DecorView被加载到Window流程:
- 从Activity的startActivity开始,最终调用到ActivityThread的handleLaunchActivity方法来创建Activity,首先,会调用performLaunchActivity方法,内部会执行Activity的onCreate方法,从而完成DecorView和Activity的创建。然后,会调用handleResumeActivity,里面首先会调用performResumeActivity去执行Activity的onResume()方法,执行完后会得到一个ActivityClientRecord对象,然后通过r.window.getDecorView()的方式得到DecorView,然后会通过a.getWindowManager()得到WindowManager,最终调用其addView()方法将DecorView加进去。
- WindowManager的实现类是WindowManagerImpl,它内部会将addView的逻辑委托给WindowManagerGlobal,可见这里使用了接口隔离和委托模式将实现和抽象充分解耦。在WindowManagerGlobal的addView()方法中不仅会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView通过root.setView()把DecorView加载到Window中。这里的ViewRootImpl是ViewRoot的实现类,是连接WindowManager和DecorView的纽带。View的三大流程均是通过ViewRoot来完成的。
扩展阅读:
- View与ViewGroup绘制原理解析(一): 绘制流程
measure
MeasureSpec
MeasureSpec
表示的是一个32位的整形值,它的高2位表示测量模式SpecMode,低30位表示某种测量模式下的规格大小SpecSize,它有三种测量模式:
EXACTLY
:精确测量模式,视图宽高指定为match_parent或具体数值时生效,表示父视图已经决定了子视图的精确大小,这种模式下View的测量值就是SpecSize的值。AT_MOST
:最大值测量模式,当视图的宽高指定为wrap_content时生效,此时子视图的尺寸可以是不超过父视图允许的最大尺寸的任何尺寸。UNSPECIFIED
:不指定测量模式, 父视图没有限制子视图的大小,子视图可以是想要的任何尺寸,通常用于系统内部,应用开发中很少用到。
打包方法为makeMeasureSpec,解包方法为getMode和getSize。
layout
未完待续…
LayoutParams
未完待续…
draw
未完待续…
Canvas
未完待续…
Paint
未完待续…
Path
未完待续…
触摸事件
事件分发机制
流程伪代码:
public boolean dispatchTouchEvent(MotionEvent ev) {boolean consume = false;if (onInterceptTouchEvent(ev)) {consume = onTouchEvent(ev);} else {coonsume = child.dispatchTouchEvent(ev);}return consume;
}
View#dispatchTouchEvent
:分发事件的入口方法true
表示事件被当前视图消费掉;false
表示交给父类的onTouchEvent处理;super.dispatchTouchEvent
表示继续分发该事件;
ViewGroup#onInterceptTouchEvent
:容器决绝是否自己消费还是向下传递true
表示拦截这个事件并交由自身的onTouchEvent方法进行消费,比如ScrollView、ListView等支持交互的容器;false
表示不拦截需要继续传递给子视图,如LinearLayout、 RelativeLayout等纯布局容器。super.onInterceptTouchEvent(ev)
根据子View情况决定:- 存在子View且点击到了该子View, 则不拦截继续分发给子View处理, 相当于返回false;
- 没有子View或有子View但是没有点击中子View(此时ViewGroup 相当于普通View), 则交由该View的onTouchEvent响应,相当于返回true;
View#onTouchEvent
:消费事件的方法true
表示当前视图可以处理对应的事件;false
表示当前视图不处理这个事件,交给父View的onTouchEvent方法进行处理;super.onTouchEvent(ev)
控件默认策略:- 如果该View是
clickable
或者longclickable
的,则返回true表示消费了该事件,如Button等系统默认的可触摸交互的控件; - 如果该View非
clickable
或者longclickable
的,则返回false表示不消费该事件,如TextView等默认不支持触摸交互的控件;
- 如果该View是
特别注意:
- Activity也拥有分发和消费两个方法;
- 事件的传递是从外向内(activity最先),而消费是从内向外(activity最后);
- 控件消费端三个回调的优先级:
onTouchListener.onTouch
>onTouchEvent
>onClickListener.onClick
;- 事件的消费是按序列来的,一旦消费了ACTION_DOWN,那么后续的ACTION_MOVE、ACTION_DOWN等事件直接交给同一个View处理;
- View的enable属性不影响onTouchEvent的默认返回值;
- requestDisallowInterceptTouchEvent方法可以在子元素中干预父元素的事件分发过程,但是ACTION_DOWN事件除外;
扩展阅读:
- 事件分发机制
滑动冲突解决方案
- 外部拦截法:
指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,否则就不拦截。具体方法:需要重写父容器的onInterceptTouchEvent方法,在内部做出相应的拦截。@Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {boolean intercepted = false;switch(event.getAction()) {case MotionEvent.ACTION_DOWN:{// 不可以拦截 ACTION_DOWN 否则后续事件都会交由父容器来处理intercepted = falsebreak;}case MotionEvent.ACTION_MOVE:{if(父容器需要拦截当前事件) {intercept = true;} else {intercept = false;}break;}case MotionEvent.ACTION_UP:{intercept = false;break;}default:break;}return intercept;}
- 内部拦截法:
指父容器不拦截任何事件,而将所有的事件都传递给子容器,如果子容器需要此事件就直接消耗,否则就交由父容器进行处理。具体方法:需要配合requestDisallowInterceptTouchEvent方法。@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {// 一定要在ACTION_DOWN时就要求父容器不能拦截if(ev.getAction() == MotionEvent.ACTION_DOWN){getParent().requestDisallowInterceptTouchEvent(true);}return super.dispatchTouchEvent(ev);}
推荐:当子元素占满父元素空间时使用外部拦截法,当没有占满时使用内部拦截
核心API
MotionEvent
封装了触摸事件的详细数据,包括位置、基础事件类型等信息。
GestureDetector
手势识别封装工具类,对于所有触控点击事件,我们无非就是要分析它的触控操作类型然后执行相应的逻辑,这些逻辑都是可以复用的,因此封装了GestureDetector这个工具类。
总结一下触控操作类型包括:
- 单击SingleTap
时间很短:onDown ----> onSingleTapUp ----> onSingleTapConfirmed
时间稍长:onDown ----> onShowPress ----> onSingleTapUp ----> onSingleTapConfirmed
当GestureDetector
支持双击时,我们应当以onSingleTapConfirmed
作为单击的回调,因为onSingleTapUp
只要手指离开屏幕就会触发,意味着双击时第一次点击抬起时也会触发。 - 双击DoubleTap
onDown ----> onSingleTapUp ----> onDoubleTap ----> onDoubleTapEvent ----> onDown ----> onDoubleTapEvent
这里需要注意onDoubleTap是在第二次点击的down回调前触发,而不是第二次点击up的时候。 - 长按LongPress
手指始终在屏幕上不移动:onDown ----> onShowPress ----> onLongPress - 滚动Scroll
手指始终在屏幕上发生移动:onDown ----> [onShowPress手指停留115毫秒不移动触发] ----> onScroll… - 抛Filing
手指在触摸移动过程中离开屏幕:onDown ----> onScroll… ----> onFling,理论上只要手指离开时还具有滚动速度,那么onFling就会触发,现实中屏幕操作基本是符合这个现象的,所以Scroll最后往往伴随Filing。
GestureDetector
的用法分两步:
- 构造GestureDetector实例,需传入
GestureDetector.OnGestureListener
,这是处理手势事件的地方; - 代理
boolean onTouchEvent(MotionEvent event)
或boolean onTouch(View v, MotionEvent event)
方法进行事件分析。
一个简单的示例如下:
public class GestureActivity extends BaseActivity {private static final String TAG = "GestureActivity";private TextView mTextView;private GestureDetector mDetector;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);mDetector = new GestureDetector(this, getCallback());View content = findViewById(android.R.id.content);content.setFocusable(true);content.setClickable(true);content.setLongClickable(true);content.setOnTouchListener((v, event) -> mDetector.onTouchEvent(event));}private GestureDetector.OnGestureListener getCallback() {return new GestureDetector.SimpleOnGestureListener(){@Overridepublic boolean onSingleTapUp(MotionEvent e) {log( "onSingleTapUp() called with: e = [" + e + "]");return false;}@Overridepublic void onLongPress(MotionEvent e) {super.onLongPress(e);log( "onLongPress() called with: e = [" + e + "]");}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {log( "onScroll() called with: e1 = [" + e1 + "], e2 = [" + e2 + "], distanceX = [" + distanceX + "], distanceY = [" + distanceY + "]");return false;}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {log( "onFling() called with: e1 = [" + e1 + "], e2 = [" + e2 + "], velocityX = [" + velocityX + "], velocityY = [" + velocityY + "]");return false;}@Overridepublic void onShowPress(MotionEvent e) {super.onShowPress(e);log( "onShowPress() called with: e = [" + e + "]");}@Overridepublic boolean onDown(MotionEvent e) {log( "onDown() called with: e = [" + e + "]");return false;}@Overridepublic boolean onDoubleTap(MotionEvent e) {log( "onDoubleTap() called with: e = [" + e + "]");return false;}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {log( "onDoubleTapEvent() called with: e = [" + e + "]");return false;}@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {log( "onSingleTapConfirmed() called with: e = [" + e + "]");return false;}@Overridepublic boolean onContextClick(MotionEvent e) {log( "onContextClick() called with: e = [" + e + "]");return false;}};}
}
ViewDragHelper
封装了控件拖拽逻辑的工具类,用在自定义ViewGroup内部快速实现子View的拖拽效果。使用方面也非常简单:
- 初始化ViewDragHelper,需要传入一个ViewDragHelper.Callback,这是整个拖拽逻辑的核心部分;
- 代理ViewGroup的onInterceptTouchEvent方法;
- 代理ViewGroup的onTouchEvent方法;
一个简单的示例如下:
public class DragContainer extends ConstraintLayout {private final ViewDragHelper helper;public DragContainer(Context context) {this(context, null);}public DragContainer(Context context, AttributeSet attrs) {this(context, attrs, 0);}public DragContainer(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);helper = ViewDragHelper.create(this, new ViewDragHelper.Callback() {Integer rightBound;@Overridepublic boolean tryCaptureView(View child, int pointerId) {// child是被触摸的子view// pointerId来自MotionEvent#getPointerId(int index),区间[0, MotionEvent#getPointerCount()-1]return true;}@Overridepublic int clampViewPositionHorizontal(View child, int left, int dx) {// 1. 不对横向拖拽做限制// return left;// 2. 禁用横向拖拽// return 0;// 3. 限制横向拖拽范围不超出父控件边界if (rightBound == null) {int[] location = new int[2];getLocationOnScreen(location);rightBound = location[0] + getWidth() - child.getWidth();}return Math.min(Math.max(left, 0), rightBound); }@Overridepublic int clampViewPositionVertical(View child, int top, int dy) {return top;}});}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return helper.shouldInterceptTouchEvent(ev);}@Overridepublic boolean onTouchEvent(MotionEvent event) {helper.processTouchEvent(event);return true;}
}
然后在布局中使用就可以了,比如在下面的布局中view_crop这个控件就可以直接拖拽了:
<?xml version="1.0" encoding="utf-8"?>
<com.hao.android_api_test.view.DragContainer xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/root_container"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@mipmap/robot"><Viewandroid:id="@+id/view_crop"android:layout_width="200dp"android:layout_height="50dp"android:background="@drawable/shape_border"/></com.hao.android_api_test.view.DragContainer>
动画体系
未完待续…
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 学习笔记:springboot
主要概念: Eureka:注册中心 Zuul(gateway):服务网关 Ribbon:负载均衡 Feign:服务调用 Hystrix:熔断器 版本对应关系:Eureka注册中心 Eureka:就是服务注册中心…...
2024/4/20 5:53:20 - 自写“容器” 分文件编写
cpp 文件 和hpp文件 hpp和h文件的区别是不仅仅存放声明,成员函数 全局函数也写入 .cpp: #include "myArray.hpp" #include <string> //测试内置数据类型 void test01() { MyArray<int> array1(10); for (int i 0; i < 10; …...
2024/5/5 7:59:05 - 蓝桥杯-最大公共子串
题目描述 本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将…...
2024/4/19 9:22:53 - 【JDBC流程总结】
JDBC 流程梳理总结: JDBC(Java DataBase Connectivity)Java数据库连接(技术),也就是能够通过java代码,连接到数据库,并可以使用SQL语句,对数据库进行各种操作 1 加载驱动…...
2024/4/14 16:48:56 - 得力电力监测仪产品体验
一直有个想法,想搞清楚家里面哪台家用电器最费电,但也只限于想法,没有投入实践。最近无意中在某东看到一款产品,可以测量单台家电的功率等信息,果断买下,上午下单,下午就收到货了,表…...
2024/4/21 14:59:21 - 【人物】机器学习
Danqi Chen (陈丹琦) Neural Reading Comprehension and Beyond Mikolov 在 INTERSPEECH 2010 上发表的《Recurrent neural network based language model》RNNLM 2013Efficient Estimation of Word Representation in Vector Space, 2013Distributed Representations of Sente…...
2024/5/5 7:00:20 - python骚操作值第四话队列(集合)
文章目录前言一、列表1、列表的赋值2、循环和随机数a、生成随机数b、列表的排序操作c、冒泡排序d、嵌套列表的遍历3、列表常用循环列表常用循环4、 选择排序5、插入排序二、元组1、基本使用函数三、字典1、基本操作a、set用法b、案例c、删除d、in/not ine、遍历五、items()用法…...
2024/5/5 6:59:15 - 入坑Java的程序媛(四)--- 面向对象
全程跟b站博主遇见狂神说 Java基础视频 面向对象编程(OOP) Java的核心思想就是OOP 一、初识面向对象 1.面向对象思想: 1)物以类聚,分类的思维模式,思考问题,首先得会解决问题需要哪些分类&…...
2024/4/14 16:49:42 - Matplotlib基础绘图函数示例
目录 pyplot的基础图标函数 pyplot饼图的绘制 plt.pie( ) pyplot直方图的绘制 plt.hist( ) pyplot极坐标的绘制(面向对象绘制) pyplot散点图的绘制(面向对象方法) pyplot的基础图标函数 目标:选择合适的图标 py…...
2024/4/14 16:49:52 - Java数据结构之单链表(配图详解,简单易懂)
Java数据结构之单链表(配图详解,简单易懂) (本笔记主要介绍单向不带头节点非循环链表) 总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~Y…...
2024/4/20 6:47:12 - 学习NET CLR via C#(第4版)(1) - CLR的执行模型【2,3略】
CLR的执行模型 *1.1将源代码编译成托管模块 什么是CLR 公共语言运行时(Common Language Runtime)和Java虚拟机一样也是一个运行时环境它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离 CLR的核心功能 CLR的核…...
2024/4/14 16:49:52 - idea使用
idea使用创建项目创建类修改字体字符编码快捷键更改快捷键idea模板创建项目 创建类 右键src 回车即可 修改字体 字符编码 快捷键 自己习惯用的快捷键 快捷键作用ctrl d<需修改>删除当前行ctrl alt ↓ <需修改>复制当前行补全代码alt /添加注释/取消注释c…...
2024/4/14 16:49:37 - grid布局
grid布局 grid布局是最强大的布局方式, 这点毋庸置疑,但是要看场景使用,很多情况下还有不兼容的状况,但是写一些自己的项目却是不二之选! 当然,学起来的内容也是比较多的! 首先,要…...
2024/4/14 16:49:37 - cookie保存后端传来的token值,请求每一个接口header都带上token值
一、后端拦截器,实现每个请求都需要token,没有就要进行拦截 /*** 自定义拦截器*/ Component public class AuthenticationInterceptor implements HandlerInterceptor {SneakyThrowsOverridepublic boolean preHandle(HttpServletRequest request, Http…...
2024/4/14 16:49:47 - 347. 前 K 个高频元素(中等 数组 哈希表 堆(优先队列) 排序)
347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2: 输入: nums [1], k 1 输出: [1] 提示: 1 < nu…...
2024/4/14 16:49:37 - .net Core 安装到服务器
.net Core 安装到服务器 首先在服务器中安全组加一个5000端口 在服务器中添加net Core需要的环境 注册产品存储库,安装必需的依赖项 每台计算机只需要执行一次此操作。, 1.打开终端并运行以下命令。 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/package…...
2024/4/14 16:49:22 - 安装Harbor
环境: ubuntu 18.04 IP: 192.168.31.16 修改/etc/hosts sudo vi /etc/hosts --- 192.168.31.16 reg.mydomain.com ---创建证明书和重启docker openssl rand -writerand .rnd openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/…...
2024/4/14 16:49:27 - BurpSuite抓本地包
burpsuite抓本地请求127.0.0.1 设置本地代理 设置权限 访问 about:config,点击接受风险 修改network.proxy.allow_hijacking_localhost为true 再抓包,成功...
2024/5/5 5:12:57 - 尚硅谷李立超老师讲解web前端网课的笔记
初学 web 前端笔记一 刚刚看完网课,趁着脑子里还有点东西,小彭赶紧来做个笔记~接下来看吧: 一、软件的分类 1.系统软件:(我们买电脑或手机第一件事就是先激活或者安装一个“灵魂”——操作系统) - Window…...
2024/4/7 4:24:45 - JAVA基础阶段知识总结
一、认识JAVA以及JDK、JRE、JVM等; 二、基础语法,两大数据类型,8中基本数据类型,5种引用数据类型,算术运算符,比较运算符,逻辑运算符,位运算符,三元运算符,三…...
2024/4/7 4:24:44
最新文章
- 深入理解 Java 并发:AbstractQueuedSynchronizer 源码分析
序言 在多线程编程中,同步机制是保障线程安全和协调线程之间操作顺序的重要手段。AQS 作为 Java 中同步机制的基础框架,为开发者提供了一个灵活且高效的同步工具。本文将通过对 AQS 源码的分析,解读 AQS 的核心实现原理,并深入探…...
2024/5/5 11:25:40 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - composer常见错误解决
在Java中,常见的问题和解决方法包括: 内存不足错误:Java应用程序在运行时可能会遇到内存不足的错误。可以通过增加JVM的堆内存大小来解决,可以通过设置-Xms和-Xmx参数来指定初始堆大小和最大堆大小。 java -Xms2G -Xmx4G YourAppl…...
2024/5/5 8:38:08 - jdk8/9新特性
package chapter08_oop3_teacher.src.com.atguigu08._interface.jdk8;/*** ClassName: CompareA* Description:** Author 尚硅谷-宋红康* Create 9:33* Version 1.0*/ public interface CompareA {//属性:声明为public static final//方法:jdk8之前&…...
2024/5/4 15:33:30 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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