博客地址:http://blog.csdn.net/l540675759/article/details/74528641

注明

本文已授权CSDN官方微信公众号《mobilehub》原创首发,转载请务必注明出处。

修正

1.修正了flagNoFullscreen和flagNoExtractUi的说明,以及区别。

背景

1.Android软键盘这块从我入职到现在,是一个一直纠缠我的问题。

2.从布局挤压,到EditText显示不全,在到弹出时卡顿,在android软键盘面前我无数次跌倒。

3.因为网上大多数的知识点比较分散而且很杂,所以本篇做一个整合篇。

4.Android软键盘这块知识点比较密集,了解过一次之后,差不多什么情况都可以找到原因了。

5.感谢Android软键盘的问题,从我入职陪伴我到现在,让我一个一个不停的解决。


前言

本文将从以下几个方面进行介绍:

(1)InputMethodService的源码解析,从源码解读中告诉你为什么软键盘弹出的是一个Dialog(2)Android软键盘显示时,设置windowSoftInputMode的作用(3)EditText设置imeOptions属性对软键盘的影响(4)软键盘上面的按键监听(5)横屏状态下,不希望软键盘显示全屏怎么处理(6)控制软键盘的弹出和关闭的方法(7)EditText在软键盘弹出的时候显示不全,怎么获取软键盘弹出和关闭的监听(8)软键盘弹出的时候,造成页面卡顿,这时候如何发现问题并解决问题(9)Android键盘面板冲突,布局闪动的解决方法
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

Android软键盘的显示原理

软键盘其实是一个Dialog

InputMethodService为我们的输入法创建了一个Dialog,并且对某些参数进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统会对当前的主窗口进行调整,以便留出相应的空间来显示该Dialog在底部,或者全屏。

其实这段话我们经常在各种软键盘博客所看到,但是大家并不知道Android是怎么为我们创建的这个Dialog,所以我先带大家来看下软键盘生成这块的源码,了解软键盘的生成流程。


InputMethodService的源码解析

我们先来看一下InputMethodService的继承关系:

InputMethodService的继承关系

因为InputMethodService属于服务,接下来我们先看一下服务的入口onCreate()方法:

    @Override public void onCreate() {//设置主题与xml里面设置theme是一样的道理mTheme = Resources.selectSystemTheme(mTheme,getApplicationInfo().targetSdkVersion,android.R.style.Theme_InputMethod,android.R.style.Theme_Holo_InputMethod,android.R.style.Theme_DeviceDefault_InputMethod,android.R.style.Theme_DeviceDefault_InputMethod);super.setTheme(mTheme);//创建InputMethodManangermImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);mSettingsObserver = SettingsObserver.createAndRegister(this);mShouldClearInsetOfPreviousIme = (mImm.getInputMethodWindowVisibleHeight() > 0);mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);/*** 这里注意一下,首先这里的命名属于Window,然后我们发现了Gravity.BOTTOM,就更加确定了这个就是* 软键盘所创建的Dialog对象*/mWindow = new SoftInputWindow(this"InputMethod", mTheme, nullnull, mDispatcherState,WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false);if (mHardwareAccelerated) {mWindow.getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);}initViews();mWindow.getWindow().setLayout(MATCH_PARENT, WRAP_CONTENT);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

通过上面的分析,我们怀疑这里的SoftInputWindow是软键盘弹出创建的Dialog对象,下面我们看下SoftInputWindow的源码。

public class SoftInputWindow extends Dialog{....
}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

看到这里大家就能明白了,为什么说软键盘就是一个Dialog。而且这里通过设置Gravity.BOTTOM来控制当前Dialog在Window中的位置。


软键盘的显示调整(windowSoftInputMode)

在Android中,可以通过给Activity设置windowSoftInputMode这个属性来控制软键盘与Activity的主窗口的交互方式。

Activity 的主窗口与包含屏幕软键盘的窗口的交互方式,该属性的设置影响两个方面:

  1. 当Activity成为用户注意的焦点时软键盘的状态 - 隐藏还是可见。
  2. 对Activity主窗口所做的调整 - 意思是是否将其尺寸调小为软键盘腾出空间,或者当窗口部分被软键盘遮挡时是否平移其内容以使当前焦点可见。

该设置必须是下面所列的值之一,或者是一个“state…”值加上一个“adjust…”值的组合,在任一组中设置多个值(例如,多个“state…”值)都会产生未定义结果。各值之间使用垂直条 (|) 分隔

(1)控制软键盘显示还是隐藏

stateUnspecified-不指定软键盘的状态(隐藏还是可见) 将由系统选择合适的状态,或依赖主题中的设置,这是对软键盘行为的默认设置

stateUnchanged-保留状态 当 Activity 转至前台时保留软键盘最后所处的任何状态,无论是可见还是隐藏

stateHidden-隐藏软键盘 当用户确实是向前导航到 Activity,而不是因离开另一Activity 而返回时隐藏软键盘

stateAlwaysHidden-始终隐藏软键盘 当 Activity 的主窗口有输入焦点时始终隐藏软键盘

stateVisible-显示软键盘 在正常的适宜情况下(当用户向前导航到 Activity 的主窗口时)显示软键盘

stateAlwaysVisible-显示软键盘 当用户确实是向前导航到 Activity,而不是因离开另一Activity 而返回时.

(2)在软键盘弹出时,是否需要Activity对此进行调整

adjustUnspecified 主窗口的默认行为,不指定 Activity 的主窗口是否调整尺寸以为软键盘腾出空间,或者窗口内容是否进行平移以在屏幕上显露当前焦点。 系统会根据窗口的内容是否存在任何可滚动其内容的布局视图来自动选择其中一种模式。 如果存在这样的视图,窗口将进行尺寸调整,前提是可通过滚动在较小区域内看到窗口的所有内容。

adjustResize 始终调整 Activity 主窗口的尺寸来为屏幕上的软键盘腾出空间。

adjustPan 不调整 Activity 主窗口的尺寸来为软键盘腾出空间, 而是自动平移窗口的内容,使当前焦点永远不被键盘遮盖,让用户始终都能看到其输入的内容。 这通常不如尺寸调整可取,因为用户可能需要关闭软键盘以到达被遮盖的窗口部分或与这些部分进行交互。

adjustNoting 软键盘弹出时,主窗口Activity不会做出任何响应。

windowSoftInputMode 应用场景

下面将通过例子来介绍adjustNoting、adjustUnspecified、adjustResize、adjustPan在软键盘弹出的区别:

adjustUnspecified : 当软键盘弹出时,系统自动指定窗口的调整模式,根据不同的情况会选择adjustResize或者adjustPan的一种。

adjustPan : 当软键盘弹出时,会将主窗口的平移(translateY),来适应软键盘的显示。

adjustResize : 当软键盘弹出时,会让布局重新绘制,这种一般适应于带有滑动性质的控制,让其向下滚动,然后适应软键盘的显示。

adjustNoting: 软键盘弹出时,主窗口不会做出任何反应。

非滚动布局xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容1" /><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容2" />..........<中间包含无数的EditText><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容12" /><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容13" /></LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

点击最下面的EditText12

(1)设置windowSoftInputMode为adjustNoting

adjustNoting

从上图发现,当点击EditText12时,弹出软键盘将主窗口下半部分给遮盖,并且主窗口没有做出任何反应。

(2)设置windowSoftInputMode为adjustPan

当设置其属性为adjustPan时,当软键盘弹出时,主窗口布局会上移至直到显示EditText12。

adjustPan

(3)设置windowSoftInputMode为adjustUnspecified

adjustUnspecified

当设置其属性为默认属性adjustUnspecified时,发现当点击EditText12时,主窗口上移来保持EditText12在软键盘之上,这时adjustUnspecified的表现形式与adjustPan相同,所以在无滑动的控件上,默认的指定形式为adjustPan。

(4)设置windowSoftInputMode为adjustResize

adjustResize

设置其属性为adjustResize时,发现软键盘弹出的状态与adjustNoting表现一致,当设置adjustResize时,布局会为了软键盘弹出而重新绘制给软键盘留出空间,而由于控件无法滑动,所以表现的形式与adjustNoting一致。

滚动布局xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ScrollView
        android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayout
            android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容1" /><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容2" />..........<中间有很多了EditText><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容12" /><EditText
                android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入您要输入的内容13" /></LinearLayout></ScrollView></LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

还是同样的操作,点击最下面的EditText13

(1)设置windowSoftInputMode为adjustNoting

这里写图片描述

我们可以看出,当点击EditText12时,弹出软键盘将主窗口下半部分给遮盖,并且主窗口没有做出任何反应,和不加ScrollView是一样的情况。

(2)设置windowSoftInputMode为adjustResize

adjustResize

我们可以发现,当设置其属性为adjustResize时,当软键盘弹出时,ScrollView会重新绘制,然后滚动EditText13位置,使其显示在软键盘之上。

(3)设置windowSoftInputMode为adjustUnspecified

adjustResize

当设置其属性为默认属性adjustUnspecified时,可以发现在添加了ScrollView控件时,布局的窗口并不会上移(这个观察Toolbar就可以发现),而通过重绘ScrollView,让其滚动到最低端,并且给软键盘流出控件,而这个表现即和adjustResize完全一致。

(4)设置windowSoftInputMode为adjustPan

adjustPan

可以发现,在滑动空间下,设置属性adjustPan时,依旧会将主窗口上移,来使EditText13显示在软键盘之上,可以通过观察Toolbar得知。

windowSoftInputMode总结

通过上面的例子,我们可以完全理解adjust系列的各个参数的作用。而软键盘的显示和隐藏这里面需要并不多,而且内容并不算复杂,大家回去自己尝试下就可以。

adjust系列的参数总结图


EditText设置imeOptions属性对软键盘的影响

在日常开发中,如果需要将软键盘的Enter键更改为其他键,可以设置其android:imeOptions 属性,这个属性可以控制软键盘的Enter键,以及横屏情况下的软键盘显示状态。

该设置必须是下面所列的值之一,或者是一个“action…”值加上一个“flag…”值的组合,在action…组中设置多个值(例如,多个“action…”值)都会产生未定义结果,而flag….可以设置多个。各值之间使用垂直条 (|) 分隔

(1)控制软键盘上的Enter键

android:imeOptions=”normal”

当android:singleLine=”true” 
输入框后面还有输入控件的时候会显示next,没有时会显示done(完成) 
当android:singleLine=”false” 
输入框会进行换行操作

Next

android:imeOptions=”actionUnspecified”

该属性为默认属性,一般情况下为“normal”的使用情形。

Next

android:imeOptions=”actionNone”

显示回车键,当singleLine为true的时候,会跳到下个可输出的控件,否则软键盘消失,输入完毕。

回车键

android:imeOptions=”actionGo”

显示为Go(前往)按钮,需要配合android:singleLine使用,否则为回车键起换行作用,并且需要自己写事件。

前往

android:imeOptions=”actionSearch”

显示搜索(Search)按钮,需要配合android:singleLine使用,否则为回车键起换行作用,并且需要自己写事件。

搜索

android:imeOptions=”actionSend”

显示send(发送)按钮,需要配合android:singleLine使用,否则为回车键起换行作用,并且需要自己写事件。

发送

android:imeOptions=”actionNext”

显示next(下一步)按钮,作用是跳到下一个可输入的控件,需要配合android:singleLine使用,否则为回车键起换行作用。

Next

android:imeOptions=”actionDone”

显示done(完成)按钮,作用编辑完成,让软键盘消失.需要配合android:singleLine使用,否则为回车键起换行作用。

回车键

android:imeOptions=”actionPrevious”

显示上一步按钮,如果前面有输入控件,点击后会回到前一个控件获取焦点,.需要配合android:singleLine使用,否则为回车键起换行作用。

回车键

可能各个输入法的显示图标不一样,但是效果是一样的,这里用的是搜狗输入法。

(2)横屏下控制软键盘

android:imeOptions=”flagNoFullscreen”

在横屏下,当设置这个标志时,软键盘在弹出的时候,永远不会变成全屏状态,但是这个属性在API中说并不一定所有输入法都支持这个属性。

这里写图片描述

android:imeOptions=”flagNoExtractUi”

这个属性也有意思,它的表现形式和flagNoFullscreen比较像。

因为在横屏下,这两个属性单独设置都让软键盘半屏显示,但是这两个属性还是有所不同的。

这里可以参阅下API,flagNoExtractUI显示的半屏软键盘本身软键盘显示还是全屏的,但是将之前的全屏输入框给隐藏掉,所以给你显示半屏的效果。而且在单独使用的时候,可能你会发现软键盘是先从全屏然后过渡到半屏的。

所以要去掉全屏到半屏过渡效果,在横屏状态下,需要和flagNoFullscreen一块使用,来达到更好的体验。

这里写图片描述

android:imeOptions=”flagNavigatePrevious”

横屏下设置输入法全屏,设置输入框上的按钮为(previous)上一个的作用。

下一步

android:imeOptions=”flagNavigateNext”

横屏下设置输入法全屏,设置输入框上的按钮为(Next)下一个作用。

下一步

android:imeOptions=”flagNoAccessoryAction”

横屏下设置输入法全屏,并且使其输入框上的按钮隐藏。

这里写图片描述

android:imeOptions=”flagNoEnterAction”

横屏下设置输入法全屏,输入框内的按钮为完成(Done)状态.编辑完毕,点完成,软键盘消失。

flagNoEnterAction

总结一下:

这里大部分的属性,已经介绍完毕,如果英语好的同学,可以去看下官方文档,可以更好的理解,并且本文以搜狗输入法为实践,可能其他的输入法与其显示的不同,但是功能应该都是一样的。

而如果要在横屏状态不希望软键盘全屏显示最好是将flagNoFullscreen和flagNoExtractUi结合使用,这样体验上会更好

android:imeOptions=”flagNoFullscreen|flagNoExtractUi”

Android官网的Api


Android软键盘上的按键监听

如果需要监听软键盘的右下角的按键,需要为EditText设置setOnEditorActionListener()监听:

        mMainEt = (EditText) findViewById(R.id.main_et);mMainEt.setOnEditorActionListener(new TextView.OnEditorActionListener() {@Overridepublic boolean onEditorAction(TextView v, int actionId, KeyEvent event) {switch (actionId) {//点击GO键case EditorInfo.IME_ACTION_GO:return true;//点击Donecase EditorInfo.IME_ACTION_DONE:return true;//点击Nextcase EditorInfo.IME_ACTION_NEXT:return true;//点击Previouscase EditorInfo.IME_ACTION_PREVIOUS:return true;//点击Nonecase EditorInfo.IME_ACTION_NONE:return true;//点击Sendcase EditorInfo.IME_ACTION_SEND:return true;}return false;}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

上面的方式,只是展示了如何监听各个按键的方法,如果需要消费事件,则需要return true。


实际案例1:横屏下软键盘不全屏显示

其实已经在第二方面介绍了,只要设置EditText 的android:imeOptions属性为 flagNoFullScreen 和 flagNoExtraUI即可。

实际案例2:控制软键盘弹出和关闭

一般来说,在实际项目中,都会使用工具类来控制软键盘的显示或者关闭。

(1)显示软键盘

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {view.requestFocus();imm.showSoftInput(view, 0);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

(2)关闭软键盘

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

而如果对于这一块有什么不明白的,可以参考这篇博客。

Android手动显示和隐藏软键盘方法总结

实际案例3:EditText显示不全,并且需要监听软键盘弹出和关闭

实际情况

现在有一个常见的需求,EditText被布局包裹,然后需要将原生的EditText背景给替换掉或者直接设置为null(或者其他),然后和布局上下存在间距,然后整体与底部对齐。

这时候弹出软键盘,请看图:

这里写图片描述

从图中可以发现,当原生的EditText背景被替换之后,软键盘会遮盖掉自定义区域,并且直接显示在EditText之下,正常情况下,我们是希望软键盘显示在整个外层的Layout之下的。

当时对于这个问题,我没有头绪好一阵子,现在来看,那时候挺年轻的。

而这个问题,就属于软键盘遮挡布局的问题:

引用块内容

(1)软键盘遮盖焦点:

当软键盘弹出的时候,将EditText等输入类的控件的焦点遮盖时,这时候可以设置adjustPan或者adjustResize可以很好的解决。

这里如果理解好本博文第一块内容就能很好解决这个问题。

(2)软键盘遮盖没有遮盖焦点,但是遮盖了需要显示的控件:

这时候设置通过设置属性adjustPan或者adjustResize还不足以解决问题,因为软键盘并没有遮盖了EditText的焦点,所以单独设置这两个属性是对软键盘或者界面是无法产生改变的。

这时我们必须从另外一个角度来考虑这个问题,就是来监听软键盘的弹出和关闭来操作布局,来解决这个问题。

这时候普遍会有以下的几种解决方案:

(1)设置adjustResize属性,当软键盘弹出的时候会重绘布局,然后设置根布局的OnLayoutChangeListener的监听,来监听布局的变化。

 mScrollView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {@Overridepublic void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {Log.d("new change ""left : " + left + "top : " + top + "right : " + right + "bottom : " + bottom);Log.d("old change ""oldLeft : " + oldLeft + "oldTop : " + oldTop + "oldRight : " + oldRight + "oldBottom : " + oldBottom);}});//当软键盘弹出
07-09 21:16:22.911 23653-23653/com.xiucai.softdemo D/new change: left : 0top : 0right : 1080bottom : 817
07-09 21:16:22.911 23653-23653/com.xiucai.softdemo D/old change: oldLeft : 0oldTop : 0oldRight : 1080oldBottom : 1692//当软键盘关闭
07-09 21:16:44.457 23653-23653/com.xiucai.softdemo D/new change: left : 0top : 0right : 1080bottom : 1692
07-09 21:16:44.457 23653-23653/com.xiucai.softdemo D/old change: oldLeft : 0oldTop : 0oldRight : 1080oldBottom : 817
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

我们可以通过上述打印结果发现,根布局的bottom发生变化了,从1692变化到817。我们可以通过这种方式来监听软键盘的弹出和收回,然后实现平移根布局或者其他的操作来保证软键盘不会遮盖你所需要的显示的控件。

(2)通过getViewTreeObserver().addOnGlobalLayoutListener()监听窗体的可见区域,来判断软键盘是否弹出。

/** * @param root 最外层布局,需要调整的布局 * @param scrollToView 被键盘遮挡的scrollToView,滚动root,使scrollToView在root可视区域的底部 */  
private void controlKeyboardLayout(final View root, final View scrollToView) {  root.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() {  @Override  public void onGlobalLayout() {  Rect rect = new Rect();  //获取root在窗体的可视区域  root.getWindowVisibleDisplayFrame(rect);  //获取root在窗体的不可视区域高度(被其他View遮挡的区域高度)  int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom;  //若不可视区域高度大于100,则键盘显示  if (rootInvisibleHeight > 100) {  int[] location = new int[2];  //获取scrollToView在窗体的坐标  scrollToView.getLocationInWindow(location);  //计算root滚动高度,使scrollToView在可见区域  int srollHeight = (location[1] + scrollToView.getHeight()) - rect.bottom;  root.scrollTo(0, srollHeight);  } else {  //键盘隐藏  root.scrollTo(0, 0);  }  }  });  
}  

上面代码是借鉴android 解决输入法键盘遮盖布局问题 这篇文章而来,目的让大家了解这种方式是怎么判断软键盘的弹出和隐藏。

里面需要平移的View,不一定是ScrollView,其他View也可,一般来说作为XML的根布局即可。

平常一般来说,我会使用这个工具类

package com.xiucai.common.manager;import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;import java.util.LinkedList;
import java.util.List;/*** Created by SuperD on 2017/5/12.*/public class SoftKeyBroadManager  implements ViewTreeObserver.OnGlobalLayoutListener{public interface SoftKeyboardStateListener {void onSoftKeyboardOpened(int keyboardHeightInPx);void onSoftKeyboardClosed();}private final List<SoftKeyboardStateListener> listeners = new LinkedList<SoftKeyboardStateListener>();private final View activityRootView;private int lastSoftKeyboardHeightInPx;private boolean isSoftKeyboardOpened;public SoftKeyBroadManager(View activityRootView) {this(activityRootView, false);}public SoftKeyBroadManager(View activityRootView, boolean isSoftKeyboardOpened) {this.activityRootView = activityRootView;this.isSoftKeyboardOpened = isSoftKeyboardOpened;activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(this);}@Overridepublic void onGlobalLayout() {final Rect r = new Rect();//r will be populated with the coordinates of your view that area still visible.activityRootView.getWindowVisibleDisplayFrame(r);final int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);Log.d("SoftKeyboardStateHelper""heightDiff:" + heightDiff);if (!isSoftKeyboardOpened && heightDiff > 500) { // if more than 100 pixels, its probably a keyboard...isSoftKeyboardOpened = true;notifyOnSoftKeyboardOpened(heightDiff);//if (isSoftKeyboardOpened && heightDiff < 100)} else if (isSoftKeyboardOpened && heightDiff < 500) {isSoftKeyboardOpened = false;notifyOnSoftKeyboardClosed();}}public void setIsSoftKeyboardOpened(boolean isSoftKeyboardOpened) {this.isSoftKeyboardOpened = isSoftKeyboardOpened;}public boolean isSoftKeyboardOpened() {return isSoftKeyboardOpened;}/*** Default value is zero (0)** @return last saved keyboard height in px*/public int getLastSoftKeyboardHeightInPx() {return lastSoftKeyboardHeightInPx;}public void addSoftKeyboardStateListener(SoftKeyboardStateListener listener) {listeners.add(listener);}public void removeSoftKeyboardStateListener(SoftKeyboardStateListener listener) {listeners.remove(listener);}private void notifyOnSoftKeyboardOpened(int keyboardHeightInPx) {this.lastSoftKeyboardHeightInPx = keyboardHeightInPx;for (SoftKeyboardStateListener listener : listeners) {if (listener != null) {listener.onSoftKeyboardOpened(keyboardHeightInPx);}}}private void notifyOnSoftKeyboardClosed() {for (SoftKeyboardStateListener listener : listeners) {if (listener != null) {listener.onSoftKeyboardClosed();}}}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99

不管是全屏或者其他情况,使用这个工具类来监听软键盘就可以了,具体的用法:

SoftKeyBroadManager mManager =new SoftKeyBroadManager ("根布局");
//添加软键盘的监听,然后和上面一样的操作即可.
mSoftKeyBroadManager.addSoftKeyboardStateListener();
//注意销毁时,得移除监听
mSoftKeyBroadManager.removeSoftKeyboardStateListener();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

最后如果感觉上面的方案不可行,Github也有一个现成方案,但是博主本人没试过,原理都是一样的。大家可以自行取舍。

Github软键盘监听的工具类

知乎上讨论软键盘的文章


实际案例4: 软键盘弹出来卡顿,找不到原因?

正常来说博文实差不多到这里就应该结束了,但是博主在实际开发中,也会遇到一些诡异的现象,例如软键盘弹出卡顿,但是这种情况下,根本无法定位到卡顿原因。

博主遇到这个问题时,怀疑了设置属性错误,怀疑了线程XX没关,怀疑了布局太过于复杂,总之该想的博主都想了,但是无论怎么试都是徒劳的。

因为博主犯了一个大错

在没找到原因之前,胡乱猜测,可能是这块?是不是那个的问题,而不确定问题的来源这个问题我感觉大家都会遇到,不从事情的本质上下手,这样会多花很多时间用在无用的地方,使自己的开发效率很低。

推荐一款检测卡顿的神器BlockCanary

还原下我当时遇到的问题:

当时我在做一个直播间的功能,直播间从主页跳转进入的,给大家截一张图,大家就懂了。

项目主页

当时做直播间其他功能的时,发现直播间软键盘在弹出和关闭的时候卡顿。

当时怀疑:

(1)什么动画没停,什么线程没关。

(2)软键盘 弹出的时候是不是加载的布局太多.

(3)直播间的布局太过于复杂,导致软键盘弹出时绘制卡顿。

在长期的测试发现一个现象,就是在高端机型上这种状态不明显,而在底端机型问题比较严重,有时候弹出软键盘卡顿很长时间。

过了半个月博主思路换了,想想软键盘弹出卡顿,能不能从卡顿原因下手,来解决问题,后来找到了BlockCanary,接入使用后发现:

原因:
竟然是 主页在软键盘每次弹出或者关闭的时候重新绘制.因为当时BlockCanary当时指向主页的RecyclerView重绘,我当时想是不可能的.
  • 1
  • 2
  • 1
  • 2

最后,博主凭直觉认为和主页SingleTask有关,因为没有确切的理由,这里只是提出自己的观点,而最后问题也解决了。

如果没有BlockCanary我永远发现不了,卡顿的原因是在看不见的主页。

后来我给主页设置成adjustNothing因为主页不需要弹出软键盘。


实际案例5:Android键盘面板冲突,布局闪动的解决方法

这个问题是我在找Android软键盘相关的问题的时候发现的,这块我也没遇到这个问题,所以给大家两个相关的介绍的地址,希望能对大家有帮助。

解决冲突

没有解决冲突

解决Android软键盘,布局闪动的相关博文

解决Android软键盘布局闪动的Demo

开源的Android软键盘布局闪动的解决方案


总结

(1)第一次写这么长的博客,感觉会有一些不足,各位看官如果有不合理的地方,或者有误的地方请直接指出。

(2)本来想整理成一个Demo的,后来简单看来下,该有的几乎都贴出来了,有需要的可以按需复制就可以。

(3)写完这篇博客之后,感觉博客干货还是不多,所以定位这篇文章算是总结性质加上实际案例性质的博客。

(4)Android软键盘的总结就差不多到这里,希望各位看官,如果看到这里有收获,就点点赞,灌灌水,顶一波,这样博主才有写下去的动力。

(5)感谢小辉同学的校验,调整了文章中不通顺的地方。


参考文档

1.彻底搞定Android开发中软键盘的常见问题
http://blog.csdn.net/mynameishuangshuai/article/details/515673572.Android UI(EditText)详解
http://blog.csdn.net/qq_28057577/article/details/51919965?locationNum=12&fps=13.微信软键盘布局闪动问题
https://blog.dreamtobe.cn/2015/09/01/keyboard-panel-switch/
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. [arduino]-序言:面向仅有C语言基础之人的单片机开发板

    [arduino] 是一个 [项目] 也是一个 [商业公司] ,但其核心价值是建立在 [社区] 上的、[开源]的、 [低门槛] 的 [单片机] [开发板]。 [单片机] 是一种低性能的 [计算机],这个名字源于其 [把所需的主要硬件] 全部做到 [单个] 芯片中去。 [开发板] 是一种特殊的电路板,上面不仅搭…...

    2024/4/27 12:39:46
  2. C#获取本机IP搜集整理7种方法

    ①1 private void GetIP() 2 { 3 string hostName = Dns.GetHostName();//本机名 4 //System.Net.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址 5 System.Net.IPAd…...

    2024/4/28 7:09:07
  3. C语言开源项目

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源…...

    2024/4/28 4:35:37
  4. Android自动弹出软键盘(输入键盘)

    Android输入框自动弹出键盘显示和关闭 1.软键盘的自动弹出/*** 显示键盘** @param et 输入焦点*/ public void showInput(final EditText et) {et.requestFocus();InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);imm.showSoftInput(et…...

    2024/4/28 8:22:46
  5. c#调用cmd命令,将doc转换为 pdf

    c#调用cmd命令,将doc转换为 pdf using System; using System.Collections.Generic; using System.Text; using System.Diagnostics;namespace Tools {/// <summary>/// doc文件转换为pdf文件/// </summary>public class DocToPdf{private string savePath = "…...

    2024/4/28 5:09:54
  6. 新人学ruby---print、puts和p的区别

    print、puts、p方法都是输出,都可以待多个参数,但三种输出又有所不同。printprint 输出”“内的内容会识别转义符,并 不会 自动化换行irb(main):002:0> print "hello","\n","ruby!" hello ruby!=> nilputsputs 跟print一样输出“”内的内…...

    2024/4/21 0:04:27
  7. EditText软键盘的显示和隐藏

    在工作过程中,常常会遇见需要根据自己的需求,控制文本框的键盘显示和隐藏。通过查阅Android文档,介绍可以通过在清单文件中元素中添加android:windowSoftInputMode属性来处理。  这个属性主要影响两件事情:  1.软键盘的状态—当Activity显示给用户的时候,它是显示还是…...

    2024/4/21 0:04:26
  8. keil教程之创建基础软件工程

    前言 工欲善其事,必先利其器。要学好52单片机,就要会用keil写程序。不然,谈何学习单片机。下面介绍keil的使用。 keil简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,…...

    2024/4/27 21:44:11
  9. ruby 生成随机数 和 随机字符串

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 1,rand(999999) 生成 6 位随机数2,puts rand(0xffffff) # 十六进制的3,puts rand 生成 0-1 …...

    2024/4/21 0:04:25
  10. Ext.Net 1.x_Ext.Net_实现百度文库的效果

    项目的预算需要个部分上传一个word的说明文件,供在线查看,通过两天的碰钉子,终于算是完成了,代码及过程贴出来,请大家指正。 上传文件并转换: 环境:网上下载了FlashPaper,用来转换文档成Swf 上传: protected void UploadClick(object sender, DirectEventArgs e) { st…...

    2024/4/27 23:10:27
  11. Android判断软键盘的状态和隐藏软键盘

    之前本人也遇到一个关于获取软键盘的状态的问题,在网上找了很多资料,基本上回答都是用getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED来判断软键盘是否打开,若相等则为打开,然后你就可以根据这段代码进行后续操作了…...

    2024/4/28 7:18:27
  12. 1课:单片机简叙

    1.单片机可以做什么?目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。小到电话,玩具,手机,各类刷卡机,电脑键盘,彩电,冰箱,空调,电磁炉,大到汽车,工业自动控制,机器人,导弹导航装置,甚至是美国的火星车,这些设备里面都含有一个或者…...

    2024/4/28 1:19:13
  13. Ruby On Rails 4 hello world,Ruby On Rails上手

    有机会再试一试Rails了,只是原来接触的是2,现在已然变成了4,似乎现在的安装比原来会快些。。Rails 4 安装针对于安装了RVMgem install rails没有的话应该主sudo gem install rails安装RVM可以用\curl -L https://get.rvm.io | bash -s stable查看rails版本rails -vRails 4.0…...

    2024/4/27 22:40:26
  14. Android EditText 软键盘如何显示“下一个”,“发送”,“完成”

    imeOptions属性,系统默认的actionId有:EditorInfo.IME_NULL、EditorInfo.IME_ACTION_SEND、EditorInfo.IME_ACTION_DONE分别对应下一个,发送,完成...

    2024/4/28 0:24:52
  15. C#中设置开机自动运行和关机

    让软件开机自动运行或者设置自动关机,大部分软件都有这种功能。如何实现呢,其实很简单,开机运行,只需要设置注册表就可以了,关机则调用CMD命令:shutdown -s -t,如下: 开机自动运行:/// <summary>/// 设置开机运行/// </summary>public void AutoRun(){Reg…...

    2024/4/21 0:04:18
  16. SketchUp插件可视化开发工具SketchUp Ruby Code Editor

    RubyCcode Editor是一个所见即所得的代码编写工具,在JIM基础上编写的可视化Ruby执行和编写对话框插件,增加了很多在线的资源以及常用的插件语言的编辑和即时插入执行的功能,美国特纳公司也采用本编程检测工具。 官方网站。...

    2024/4/21 0:04:17
  17. Windows调出屏幕键盘的步骤

    1 简介 在工作过程中,有时需要内网和外网的切换,键盘可能想要插在外网电脑上,为了方便可以临时调出内网的屏幕键盘简单使用。 2 前提 鼠标可以点击 3 步骤 3.1 打开控制面板 3.2 打开轻松访问 3.3 点击轻松访问中心 3.4 启动屏幕键盘 这样即可调出屏幕键盘...

    2024/4/21 0:04:16
  18. Java和C#运行命令行的例子对比

    呵呵,刚给客户解决了在C#里运行命令行的例子,顺便整理了一下Java的例子,大家参考对比一下Java的[java] viewplaincopyimport java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; /** * Java运行命令行的例子 * * @author JAVA世…...

    2024/4/21 0:04:16
  19. 10分钟创建一个Ruby博客

    IDE:NetBeans 6.1 RC2 教程原文:http://www.netbeans.org/kb/61/ruby/rapid-ruby-weblog.html 哈哈,这样的教程基本上都是一个“导火索”,真正的博客还需自己完善呀。...

    2024/4/21 0:04:15
  20. C#读写共享文件夹

    C#读写共享文件夹该试验分以下步骤:1、在服务器设置一个共享文件夹,在这里我的服务器ip地址是10.80.88.180,共享文件夹名字是test,test里面有两个文件:good.txt和bad.txt,访问权限,用户名是admin,密码是admin。2、新建一个webapplication项目,在前台页面加一个listbox…...

    2024/4/21 0:04:13

最新文章

  1. 24.Feign性能优化

    feign底层客户端实现&#xff1a; URLConnection:默认实现&#xff0c;不支持连接池&#xff0c;性能不太好。--feign的默认实现。 Apache HttpClient: 支持连接池。 OKHttp: 支持连接池。 优化办法&#xff1a; 1.用连接池替代默认的URLConnection。 2.日志级别&#xf…...

    2024/4/28 11:42:33
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. vue3项目运行正常但vscode红色波浪线报错

    以下解决办法如不生效&#xff0c;可尝试 重启 vscode 一、Vetur插件检测问题 vetur 是一个 vscode 插件&#xff0c;用于为 .vue 单文件组件提供代码高亮以及语法支持。但 vue 以及 vetur 对于 ts 的支持&#xff0c;并不友好。 1、原因 如下图&#xff1a;鼠标放到红色波浪…...

    2024/4/26 17:21:41
  4. ps教程谁教的好

    在Photoshop&#xff08;PS&#xff09;教程方面&#xff0c;有多位老师被推荐为教学水平较高。以下是一些被提及的老师&#xff1a; 敬伟&#xff1a;被认为是很多人的PS启蒙老师&#xff0c;提供基本功能介绍与高级效果案例&#xff0c;教学风格被认为是免费且不拖沓的。1…...

    2024/4/26 20:36:35
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在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