Android 的输入法适配设置windowSoftInputMode的9种方式

Java代码动态设置SoftInputMode,友好进行底部界面呈现 获取软键盘的高度 代码切换SoftInputMode 附件与软键盘友好切换 阅读详情
AI摘要

本文详细介绍了Android中`android:windowSoftInputMode`属性的使用,包括`adjust`系列和`state`系列的属性值,如`adjustPan`、`adjustResize`、`stateVisible`等,解析了它们在不同场景下的效果,帮助开发者更好地控制软键盘与Activity窗口的交互行为。

实现接口

用户评论开发过程中通常需要和EditText控件打交道,编辑框通常编程过程中最常见的就是和软键盘做交互操作。在用户最初进入编辑评论时有时希望直接展示软键盘,减少用户选中输入框操作,最好是保证输入框不被软件盘覆盖住。android:windowSoftInputMode属性就包含了实现这些交互方式的属性,主要分成两个部分,一个是控制软件盘展示或隐藏的state开头属性值,一个是控制展示输入框的Window适配效果的adjust开头属性值,通常都是两个使用或(|)指定键盘盘和Windwo适配效果,最常见的Adjust属性值解释如下:

 

属性值    意义
adjustPan    如果Window内容布局可以滚动,尽量将输入框展示在软件盘之上,不能保证软件盘没有遮盖其他内容布局
adjustResize    Window内容布局整体压缩,展示软件盘的地方不会展示内容布局
adjustNothing    Window布局不做任何调整
adjustUnspecified    根据情况做adjustPan或者adjustResize
控制软件盘展示交互的state属性如下:

属性值    意义
stateVisible    初次进入界面展示软键盘
stateAlwaysVisible    不管是初次进入还是导航到别的Activity重新回来,都展示软件盘
stateHide    初次键入不展示软件盘
stateAlwaysHide    不论初次还是从别的Activity导航回来都不展示软件盘
stateUnchanged    软键盘保持在前一个Activity里的状态不论展开还是关闭
stateUnspecified    未指定软键盘状态

 

adjust开头的都是适配屏幕用的,

state是用来在不同的acitivity 之间切换和初次的时候进入界面的时候用的

 

1: 默认的不设置的情况,会把这个edittest 推上去,同时会把activity推上去,ajustPan

 

2: <activity android:name=".MainActivity" android:windowSoftInputMode="adjustNothing">

如果是adjustNothing 的时候,不会把输入框推上去,acitivity 不会推上去

 

 

3: <activity android:name=".MainActivity" android:windowSoftInputMode="adjustPan">

adjustPan的话,会把底部的acitivity 也推上去,不会推上去的

 

 

4: <activity android:name=".MainActivity" android:windowSoftInputMode="adjustResize">

adjustResize  将edittext 推上去,acitivty 没有推

 

5: <activity android:name=".MainActivity" android:windowSoftInputMode="adjustUnspecified">

edittext 会推上去,activity 也推上去了

 

6: <activity android:name=".MainActivity" android:windowSoftInputMode="stateAlwaysVisible">

<activity android:name=".SecondActivity" android:windowSoftInputMode="stateAlwaysVisible"></activity>

当从MainActivity 切换到 SecondActivity的后,一直显示输入法

6: <activity android:name=".MainActivity" android:windowSoftInputMode="stateAlwaysHidden">

 

7: <activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden">

切换的时候,直接隐藏

顾名思义,假设我们设置了这个属性,那么键盘状态一定是隐藏的,无论上个界面什么状态。也无论当前界面有没有输入的需求,反正就是不显示。因此,我们能够设置这个属性,来控制软键盘不自己主动的弹出。

8:<activity android:name=".MainActivity" android:windowSoftInputMode="stateVisible">

相对于stateAlwaysVisible (不管是初次进入还是导航到别的Activity重新回来,都展示软件盘)

stateVisible 只有初次进去这个界面的时候visible,设置为这个属性,能够将软键盘召唤出来,即使在界面上没有输入框的情况下也能够强制召唤出来。

 

 

 

9: <activity android:name=".MainActivity" android:windowSoftInputMode="stateUnchanged">

中文的意思就是状态不改变的意思。我们应该怎么理解这句话呢?事实上非常好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个样例,假如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;假设当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。

 

例如第一个界面输入法展示出来了,那么跳转到第二个acitivty的时候,输入法也会显示出来


 

 

10: <activity android:name=".MainActivity" android:windowSoftInputMode="stateUnspecified">

stateUnspecified

中文意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认採用的就是这样的交互方式,系统会依据界面採取对应的软键盘的显示模式。比方。当界面上仅仅有文本和button的时候,软键盘就不会自己主动弹出。由于没有输入的必要。

 

那么。当界面上出现了获取了焦点的输入框的时候。软键盘会不会自己主动的弹出呢?这个还真不一定!

就是说。默认的,在这样的界面情况下,系统并不确定用户是否须要软键盘,因此不会自己主动弹出。

可是,为什么说不一定呢?这是由于,假设我们在这个布局的外面,包裹上一个

ScrollView,软键盘就会自己主动的弹出来了!

其实就是我们安装向下的按钮向下的时候,如果检查到了

 

    例如以下,在这样的布局文件下,软键盘会自己主动的弹出

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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="wrap_content"
            android:orientation="vertical" >

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="toOther"
                android:text="跳转" />

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>


   这确实是一个非常奇怪的推断方式。因此,我们能够得出结论,当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的。可是当有获得焦点的输入框的界面有滚动的需求的时候,会自己主动弹出软键盘。至于为什么非要强调要获取焦点的输入框。这是由于,假设不是输入框获取焦点。软键盘也是不会自己主动弹出的。让界面不自己主动弹出软键盘的当中一个解决方式,就是在xml文件里。设置一个非输入框控件获取焦点,从而阻止键盘弹出。

 

 

 

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

其他可以参考的:

参考;https://blog.youkuaiyun.com/xingzhong128/article/details/79194233

参考:https://www.cnblogs.com/gccbuaa/p/7049889.html 

【Android开发经验】android:windowSoftInputMode属性具体解释

    本文章来自优快云博客:http://blog.youkuaiyun.com/zhaokaiqiang1992。转载请注明地址!

 

    在前面的一篇文章中,简单的介绍了一下怎样实现软键盘不自己主动弹出,使用的方法是设置android:windowSoftInputMode属性。

那么,这个属性究竟是干什么的,他有什么作用呢?今天这篇文章。就是探索android:windowSoftInputMode属性的作用的。

 

    首先,我们从这个属性的名称中,能够非常直观的看出它的作用,这个属性就是来设置窗体软键盘的交互模式的。

 

    android:windowSoftInputMode属性一共同拥有9个取值。各自是:

    stateUnspecified,stateUnchanged。stateHidden,stateAlwaysHidden。stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize。adjustPan。

    我们设置属性的时候。能够在这9个值里面选择一个。也能够用"state...|adjust"的形式进行设置。那么,这些取值究竟是怎么影响到软键盘与窗体之间的交互的呢?以下。我们就一个个的測试这9个取值。究竟是怎样影响软键盘的显示的。

    1.stateUnspecified

    中文意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认採用的就是这样的交互方式,系统会依据界面採取对应的软键盘的显示模式。比方。当界面上仅仅有文本和button的时候,软键盘就不会自己主动弹出。由于没有输入的必要。

那么。当界面上出现了获取了焦点的输入框的时候。软键盘会不会自己主动的弹出呢?这个还真不一定!

比方,在以下的这个界面布局中。软键盘并不会自己主动弹出。

 

 

    就是说。默认的,在这样的界面情况下,系统并不确定用户是否须要软键盘,因此不会自己主动弹出。

可是,为什么说不一定呢?这是由于,假设我们在这个布局的外面,包裹上一个

ScrollView,软键盘就会自己主动的弹出来了!

 

    例如以下,在这样的布局文件下,软键盘会自己主动的弹出

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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="wrap_content"
            android:orientation="vertical" >

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="toOther"
                android:text="跳转" />

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>


   这确实是一个非常奇怪的推断方式。因此,我们能够得出结论,当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的。可是当有获得焦点的输入框的界面有滚动的需求的时候,会自己主动弹出软键盘。至于为什么非要强调要获取焦点的输入框。这是由于,假设不是输入框获取焦点。软键盘也是不会自己主动弹出的。让界面不自己主动弹出软键盘的当中一个解决方式,就是在xml文件里。设置一个非输入框控件获取焦点,从而阻止键盘弹出。

 

 

 

 

    2.stateUnchanged

    中文的意思就是状态不改变的意思。我们应该怎么理解这句话呢?事实上非常好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个样例,假如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;假设当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。

 

    3.stateHidden

    顾名思义,假设我们设置了这个属性,那么键盘状态一定是隐藏的,无论上个界面什么状态。也无论当前界面有没有输入的需求,反正就是不显示。因此,我们能够设置这个属性,来控制软键盘不自己主动的弹出。

 

    4.stateAlwaysHidden

    这个属性也能够让软键盘隐藏,可是我临时还不知道和stateHidden属性的差别,本来想去stackOverFlow上问一下的,可是,Great Wall,呵呵呵...祝愿病魔早日战胜方校长

    

    5.stateVisible

    设置为这个属性,能够将软键盘召唤出来,即使在界面上没有输入框的情况下也能够强制召唤出来。

 

    6.stateAlwaysVisible

    这个属性也是能够将键盘召唤出来,可是与stateVisible属性有小小的不同之处。举个样例,当我们设置为stateVisible属性,假设当前的界面键盘是显示的,当我们点击button跳转到下个界面的时候,软键盘会由于输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏的。可是假设我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,可是当我们再次回来的时候。软键盘是会显示出来的。

所以。这个Always就解释了这个差别,无论什么情况到达当前界面(正常跳转或者是上一个界面被用户返回)。软键盘都是显示状态。

 

 

    讲到这里。我联想到了上面的stateHidden和stateAlwaysHidden。我预计差别也是这种。就是说。stateAlwaysHidden不管怎样都是隐藏的,可是假设在跳转到下个界面的时候。软键盘被召唤出来了。那么当下个界面被用户返回的时候,键盘应该是不会被隐藏的,可是,我还没有找到可以跳转到下个界面,还让当前界面软键盘不消失的方法。所以临时不能验证。

    

    7.adjustUnspecified

    从这个属性開始。就不是设置软键盘的显示与隐藏模式了,而是设置软键盘与软件的显示内容之间的显示关系。当你跟我们没有设置这个值的时候,这个选项也是默认的设置模式。在这中情况下,系统会依据界面选择不同的模式。假设界面里面有能够滚动的控件,比方ScrowView。系统会减小能够滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到全部的内容。假设布局里面没有滚动的控件。那么软键盘可能就会盖住一些内容,我们从以下的图中能够看出区别。

 

 

    没有滚动控件,软键盘以下的布局都被遮挡住了,若想改动,仅仅能隐藏软键盘。然后选择。并且,重点注意一下上面的布局,当我们选择的输入框偏下的时候,上面的标题栏和布局被软键盘顶上去了。

记住这个特征,由于后面有个属性和这个的效果不一样。

   

    布局里面有滑动控件,系统会自己主动的缩小整个界面的大小。因此,我们能够软键盘上面的小区域中显示全部的输入框。

 

 

    这就是两中显示模式之间的区别。

 

 

    8.adjustResize

    这个属性表示Activity的主窗体总是会被调整大小,从而保证软键盘显示空间。

    我们先看显示效果。

 

    注意观察这个上面的标题栏和button,设置为adjustResize属性之后,对于没有滑动控件的布局。尽管还是不能选择全部的输入框。可是,窗体的显示方式发生了变化,默认属性时,整个布局是被顶上去了,可是设置为adjustResize属性。布局的位置并没有发生什么变化。这就是最大的差别。

 

 

而对于有滑动控件的布局来说,显示效果和默认是一样的。

 

 

    9.adjustPan

    假设设置为这个属性。那么Activity的屏幕大小并不会调整来保证软键盘的空间。而是採取了第二种策略,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的失业范围里面,从而让用户能够看到自己输入的内容。对于没有滚动控件的布局来说。这个事实上就是默认的设置,假设我们选择的位置偏下,上面的标题栏和部分控件会被顶上去。可是对于有滚动控件的布局来说。则不太一样。我们看以下的效果图。

 

    首先,这是软键盘没有弹出的时候,有滚动控件的显示范围。最以下显示的是9.

 

    当我们点击5这个输入框,我们会发现以下的现象。

 

    最上面仅仅可以显示到button,标题栏已经不能看到了。

 

    而最以下也仅仅能滑动到8,以下的内容也不可以滑动了。

 

 

   因此,我们就行理解这个属性的作用了。

 

    通过以上的实验,我们能够得出结论,假设我们不设置"adjust..."的属性,对于没有滚动控件的布局来说,採用的是adjustPan方式,而对于有滚动控件的布局,则是採用的adjustResize方式。

 

    了解了上面的这些知识之后,我们就能够依据自己的需求设置不同的方式了。并且。关于怎样使得界面载入的时候不显示软键盘。我们也有了一个非常清楚的认识。

    晚安,在假期里还在奋斗的程序猿们。

React Native Android软键盘适配:adjustResize与adjustPan原理及实战 软键盘行为是移动应用表单交互的基础能力,其本质属于Android窗口管理机制中的布局响应策略,而非前端样式控制。理解windowSoftInputMode的三种模式(adjustResize、adjustPan、adjustUnspecified)对Activity根视图尺寸和测量流程的影响,是解决RN安卓端输入框遮挡、SafeAreaView失效、KeyboardAvoidingView失灵等高频问题的前提。adjustResize通过收缩窗口触发onMeasure重排,为RN提供可感知的尺寸变化,是兼容 阅读详情

相关推荐

安卓POS机开发实战:串口通信、蓝牙打印与扫码适配全攻略

安卓系统凭借开放性与低成本,正在成为商业收银、移动支付等场景的主流终端形态。在智能硬件开发中,外设通信是绕不开的核心环节:串口负责连接密码键盘与钱箱,蓝牙基于SPP协议驱动小票打印,USB扫码枪则需处理HID类设备与输入法冲突。理解这些底层原理后,开发者才能设计出高可用的硬件抽象层,将设备差异隔离在驱动模块内,实现快速替换与稳定运行。从交易状态机、金额精度到异常恢复,再到打印编码与电量管理,这些工程实践共同构成了商用POS安卓版本的关键技术栈。本文围绕真实项目中的架构设计、代码实现与排障经验,系统梳理安卓P

weixin_34161064的博客 371

windowSoftInputMode属性详解

windowSoftInputMode属性详解

weixin_40862356的博客 6675

Android中的windowSoftInputMode属性详解

在前面的一篇文章中,简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性。那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:windowSoftInputMode属性的作用的。     首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。     android:windowSoftInputMode属性一共有9个取值,分别是:     stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHid

Android软键盘windowSoftInputMode的使用与原理(使用篇)

看了网上很多文章都没有很准确的说明windowSoftInputMode的几种模式的作用,而且大部分文章只是分析了一下如何使用并没有深入源码去分析原理,今天这篇文章就来分析一下Android软键盘windowSoftInputMode的各个模式的作用和原理,文章一共分为两篇,一是使用篇,二是原理篇,下面开始使用篇的讲解。如上,windowSoftInputMode有六个stateXXX的值和三个adjustXXX的值。

一只特立独行的猪 1万+

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 357

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本)

本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。

f9g0h的博客 483

Android软键盘windowSoftInputMode的使用与原理(原理篇)

上一篇文章介绍了windowSoftInputMode各个属性的具体作用,下面我们在源码层面来分析一下各个属性的实现原理(基于Android9)。

一只特立独行的猪 6197

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 520

Android 输入法/ 软键盘 显示模式 设置(android:windowSoftInputMode)

Android 输入法/ 软键盘 显示模式 设置(android:windowSoftInputMode) 在 Android 屏幕适配的工作中,时长遇到输入法弹出 软键盘的时候,下面的输入框会有一部分被 软件盘 遮挡,从而不能获取焦点输入。或者是有使用 framentlayout 悬浮在底部的button也会挡住输入框。 三种解决方案: A、current activity ---...

Jon.Lo 的专栏 4181

ubuntu22.04降级安装CUDA11.3

ubuntu22.04原CUDA12.1降级安装11.3

gls_nuaa的博客 1779

手把手教你用Sentinel-1和SNAP处理InSAR数据:从下载到生成沉降图(附Python脚本)

本文详细介绍了如何使用Sentinel-1数据和SNAP软件处理InSAR数据,从下载到生成地表沉降图的全流程。通过Python脚本实现自动化处理,适用于城市扩张和地质脆弱带的地表沉降监测,提供高性价比的毫米级形变监测方案。

weixin_26800111的博客 265

Activity下WindowSoftInputMode属性详解

最近在做一个银行的项目,所以需要自定义键盘,不再使用系统的键盘了,从中也遇到了很多问题,比如怎么控制系统键盘不弹出,然后怎么控制软键盘与当前Activity的交互,是时候了解下WindowSoftInputMode了,这个属性就是来设置窗口软键盘的交互模式的。它总共有9种状态,官方给的9种状态的解释大概如下: 【1】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态

vv_bug 2万+

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3328

Android 输入法弹出界面上移的问题

在 AndroidMainifest 中对应activity中加入android:windowSoftInputMode=”adjustPan” 加入此句可使界面不变化 android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。 这个属性能影响两件事情: 【一】当有焦点产生时,软键

u012760183的专栏 5972

CryoEM - 冷冻电镜 基于深度学习的 从头重构(Ab-initio Reconstruction) 开源项目 教程

冷冻电镜(CryoEM) 是一种成像方式,为蛋白质和其他生命基本组成部分的动态,提供独特的观察方式。从数百万噪声和随机取向的二维投影中,以计算效率高的方式,联合估计生物大分子的姿态、三维结构和构象异质性。

AGI 1556

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 976

windowSoftInputMode 属性详解

android:windowSoftInputMode :activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,这个属性能影响2件事情: 1、当有焦点产生时,软键盘是隐藏还是显示 2、是否减少活动主窗口大小以便腾出空间放软键盘 其可选值如下: 1、stateUnspecified:不指定团键盘状态, 2、stateUnchanged:当activity出现时,软键盘将一

taozi321的博客 627

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Dialog内软键盘覆盖布局的终极解决方案:Theme与windowSoftInputMode实战

本文深入探讨了Android开发中Dialog内软键盘覆盖布局的解决方案,重点解析了`windowSoftInputMode`和Theme配置的关键作用。通过实战案例展示了如何利用`adjustPan`参数和自定义Theme实现键盘与布局的完美适配,并提供了处理WebView、键盘状态监听等特殊场景的进阶技巧,帮助开发者彻底解决这一常见难题。

weixin_29306317的博客 341

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android:windowSoftInputMode属性应用

android:windowSoftInputMode属性应用 android:windowSoftInputMode属性使用   在AndroidManifest.xml文件中的android:windowSoftInputMode属性使用   The AndroidManifest.xml File      "stateUnchanged", "stateHidden",

mylike_45的专栏 371

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android targetSdkVersion28 适配

平时csdn看资料的时候,都是游客模式,前两天要看个评论,不得不登一下,发现之前写的一个心得,有好几个朋友评论了。虽然是很小的问题,但能帮到别人,心里就很满足2333 正好近期把targetSdkVersion 升到了28,适配过程中踩到了各种坑,趁此机会写一篇个人总结与诸位一起分享。 1. 腾讯云-语音识别 code=-301 & 7.0无法抓包 & MTA崩溃 这几...

elyonsaber的博客 5661

Re-Editor 跨平台适配:在 iOS、Android 和 Web 上的最佳实践指南 [特殊字符]

Re-Editor 是一款强大的轻量级文本和代码编辑器组件,专为 Flutter 跨平台应用设计。无论您正在开发 iOS 应用、Android 应用还是 Web 应用,Re-Editor 都能提供一致且高性能的编辑体验。本指南将为您详细介绍如何在三大平台上实现最佳的 Re-Editor 集成体验。 ## 为什么选择 Re-Editor 进行跨平台开发?✨ Re-Editor 不仅仅是另一个文本

gitblog_00897的博客 611

android应用activity中调出输入法后界面调整问题的解决

在自己写的一个小应用中发现一个问题,当调出输入法后界面最下方的一个按钮被挤到了输入法的上面,这样很不美观,所以找了一下解决办法记录如下: 在AndroidManifest.xml文件中找到对应的activity添加该属性:android:windowSoftInputMode。 该属性做两件事: 1:当用户使该activity获得焦点时决定软键盘是隐藏还是显示。 2:当软键盘出来时acti...

weixin_30398227的博客 255

Android应用中调用输入法后界面调整问题的解决

在AndroidManifest.xml文件中找到对应的activity添加该属性:android:windowSoftInputMode。该属性做两件事:1:当用户使该activity获得焦点时决定软键盘是隐藏还是显示。2:当软键盘出来时activity是否重新调整大小以适应软键盘和输入的内容。添加方法:android:windowSoftInputMode="adjustPan"也可以同时设置

产品改变世界,技术驱动未来 898

Android学习笔记(二六) 输入法

Android学习笔记(二六) 输入法

skdhfdfc的博客 292

Android学习之 IME<输入法:Input Method Editor>

原文转载至  http://blog.youkuaiyun.com/flowingflying/article/details/6307322    —— 向大神学习、尊重原作。 对Android设备,可能是无物理键盘,可能带键盘,也可能带数字键盘,这些都是可以处理的。 inputType:IME可自动适配所设的输入类型 如果没有物理键盘,当用户进入EditText的时候,将调起IME(

小吕丶Code阶区 4578

阔比例手机屏幕适配:从沉浸体验到开发实践的全方位解析

屏幕纵横比是移动设备硬件形态演进的核心指标之一,它定义了屏幕宽度与高度的比例关系。随着全面屏技术的普及,18:9、19.5:9乃至21:9等阔比例屏幕逐渐成为主流,其原理在于通过改变物理尺寸比例来扩展可视区域。这种变化的技术价值在于显著提升影音娱乐的沉浸感、优化多任务分屏效率,并为游戏等应用提供更宽广的视野。在实际应用场景中,开发者需要面对不同屏幕比例和异形屏(如刘海屏、挖孔屏)带来的适配挑战,确保界面元素不被遮挡、内容显示正常。阔比例屏幕的适配涉及响应式布局、安全区域处理等关键技术,通过合理使用系统API

chuange6363的博客 1210
上一篇: Android NavigationBar 资料
下一篇: 转: 输入法任意位置与大小
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值