将数据存储到 SharedPreferences 中 首先需要获取到SharedPreferences 对象,Android中主要提供了3种方法用于得到 SharedPreferences 的对象。...,第二个参数是默认值,即表示当传入的键找不到对应的值时会以什么样的默认值返回。...首先在onCreate()方法中获取到了 SharedPreferences 对象,然后调用他的 getBoolean() 方法获取 remember_password 的键值。...account和 password对应的值都存到 SharedPreferences文件中并提交。...,并填充到文本框中,然后把记住密码复选框选中,这样就完成了记住密码的功能。
设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概的布局,然后用代码来微调 一、常见的布局 1. ...:gravity 设置布局管理器内组件的对齐方式,值可以是 top/button/left/right/center_vertical/fill_vertical......android:measureWithLargestChild 当属性设置为true时,所有带权重的子元素都会具有最大元素的最小尺寸 android:orientation 设置布局管理器内组件的排列方式...android:autoLink 的值有以下几种 设置 TextView 字间距 属性 android:textScaleX 控制字体水平方向的缩放,默认值 1.0f,类型值是 float 如:...我们可以将 Button 的 android:background 属性设置为该 drawable 资源即可轻松实现按下 按钮时不同的按钮颜色或背景 下表列出了可以设置的属性 在 res/drawable
标签可以允许在一个布局当中引入另外一个布局,那么比如说我们程序的所有界面都有一个公共的部分,这个时候最好的做法就是将这个公共的部分提取到一个独立的布局文件当中,然后在每个界面的布局文件当中来引用这个公共的布局...那如果自己去实现的话,由于这个头布局是在所有界面都要使用的,显然我们不可能在每个界面当中都去写一遍这个头布局的代码,因此这种情况下使用标签就非常合适了。...这里举个大家都非常熟悉的例子,我们在添加联系人的时候其实可以编辑的字段真的非常多,姓名、电话、email、传真、住址、昵称等等等等,但其实基本上大家最常用的就是填一个姓名,填一个电话而已。...(R.id.edit_extra3); } } 当点击More Button之后我们首先会调用findViewById()方法将ViewStub的实例获取到,拿到ViewStub的实例之后就很简单了,...()得到的值也会是空。
前言 我们以前的几个例子中都是直接使用设计器来制作的表单视图,实际在开发中经常会遇到使用代码来动态的添加控件到视图中。 ? 一般步骤是: 1.生成一个控件,比如new Button。...2.设置控件的各种属性,比如 设置某个Button的显示文字,绑定事件等。 3.将这个控件追加到一个容器控件中,作为这个容器控件的子控件。...比如我添加一个文本框,我还想获得用户在这个文本框里填入的值。android的view控件里,都有个属性Tag,我们可以很方便的使用这个属性来存放我们的特殊标记,用这个特殊标记来标记我们的控件。...获取控件的步骤: 1.获得容器控件 2.遍历容器控件的包含的所有子控件,根据我们设置的标识Tag属性,或者判断控件的类型来找到我们想要的控件 3.从找到的控件里读取到我们想要的值。...4.将收集到的值存储或其他处理 下面是生成表单的操作 for(int i = 0; i< 5 ; i++) { TableRow row = new TableRow(this
中,编写布局文件 activity_register.xml,创建背景选择器register_selector.xml,MD5加密算法,创建utils包,创建MDUtils类 注册界面逻辑代码 声明用于操作控件的...--标题栏界面中的返回键在按下与弹起时,返回键会有明显的区别,这种效果通过背景选择器进行实现--> <TextView android:id="@+id/tv_back" android:layout_width...file 将图片iv_back_selected.png和iv_back.png 粘贴到drawable中 鼠标右键drawable,new->drawable resource file,创建go_back_selector.xml...file 创建背景选择器register_selector.xml 将register_icon_normal.png,register_icon_selected.png贴入drawable中 在...file 注册界面逻辑代码 声明用于操作控件的Activity私有属性 //标题 private TextView tv_main_title; //返回按钮 private TextView tv_back
一个Android项目包含了所有构成Android应用的源代码文件。...SDK已安装的最新Android版本(目前应该是4.1或更高版本,如果你没有安装一个可用Android版本,就要先用SDK Manager来完成安装),我们仍然可以使用较老的版本编译项目,但把该值设为最新版本...在大部分运行Andriod3.2或更老版本系统的设备上,这个选项位于“设置>应用程序>开发选项”里。 在Andriod 4.0或更新版本中,这个选项在“设置>开发人员选项”里。...对于所有的 View 默认的权重是 0,如果只设置了一个 View 的权重大于 0,则该 View 将占据除去别的 View 本身占据的空间的所有剩余空间。...在这节课中,我们将添加一些新的代码到MyActivity中,当用户点击发送(Send)按钮时启动一个新的activity。
说明 应用范围 view 作用对象 Android Studio布局编辑器 具体作用 将view的任意属性值的 android 前缀替换为 tools 之后,就可以实现预览效果。...说明 应用范围 作用对象 Android Studio 布局编辑器 具体作用 声明在预览时将哪个布局文件填充到该Fragment 取值说明 布局id 的引用值 示例代码: 在预览时将...则会默认使用 item1、item2 填充到 TextView中作为预览文本 6、 tools:showIn ....说明 应用范围 所有 的根节点(即 布局文件的根节点) 作用对象 Android Studio 布局编辑器 具体作用 声明该布局文件将会被哪个布局通过 引用。...说明 应用范围 布局文件的根节点(Any root ) 作用对象 Android Studio布局编辑器 具体作用 声明在预览界面中 AppBar 将展示哪些菜单 取值说明 menu文件的id
= null) { //点亮 selected.setVisibility(View.VISIBLE); //记录当前这个点 lastSelectedDot = selected; //将tag值拼接到密码中...); //记录 lastSelectedDot = selected; //将tag值拼接到密码中 password.append(selected.getTag()); //将点亮的点添加到数组中 selectedList.add...(View.VISIBLE); //将tag值拼接到密码中 password.append(selected.getTag()); //点亮这条线 //获取容器对象 RelativeLayout rl...; //将点亮的点添加到数组中 selectedList.add(selected); //将点亮的线添加到数组中 selectedList.add(iv); } } } break; case MotionEvent.ACTION_UP...手指在两个点间滑动时,两个点的tag值组成一个两位数(两个点小的tag值组成十位,大的组成个位),遍历所有的线的tag值,判断是否有与这个两位数相同的tag值,有则点亮该线。
2、城市信息获取的api 城市信息这里我直接使用的是Android前辈搭建的一个服务器获取的,数据链接是http://guolin.tech/api/china,访问返回的是JSON数据类型的省份信息(...如果将来需要更改数据源,这里的操作将非常简单 。 5)接着显示的是接下来几天的天气的大体介绍,这里显示的数据同样受限于获取到的数据。...2、@SerializedName(“JSON中的结点名”)需要转换成的节点名; 使用关键字把一些JSON数据中意义晦涩的名词转换成类中名字可以见名知意的属性。...3、在布局文件中加入ViewPager控件,并在程序给控件设置步骤2中的适配器。 4、给控件添加监听器。...–选中时的图片背景–> item android:state_selected=“true” android:drawable=“@drawable/pic4” /> !
如果是相对于父布局,我们也可以不写入另外一个控件的id值,直接填parent值就可以了 <Button...WRAP_CONTENT,则在1.1之前的版本中, 约束不会限制生成的尺寸值。...尺寸(也就是0dp)(在1.1中添加) 设置为MATCH_CONSTRAINT时,默认是大小是占用所有可用空间。...或layout_constraintHeight_percent属性设置为介于0和1之间的值) 下面的TextView控件将占据剩余宽度的50%和剩余高度的50%: <TextView...="parent" app:layout_constraintTop_toTopOf="parent"/> 复制代码 将按照16:9的比例设置按钮的高度,而按钮的宽度将匹配父布局的约束。
说明 应用范围 view 作用对象 Android Studio布局编辑器 具体作用 将view的任意属性值的 android 前缀替换为 tools 之后,就可以实现预览效果。...说明 应用范围 作用对象 Android Studio 布局编辑器 具体作用 声明在预览时将哪个布局文件填充到该Fragment 取值说明 布局id 的引用值 示例代码: 在预览时将...item1、item2 填充到 TextView中作为预览文本 6、 tools:showIn ....说明 应用范围 所有 的根节点(即 布局文件的根节点) 作用对象 Android Studio 布局编辑器 具体作用 声明该布局文件将会被哪个布局通过 引用。...说明 应用范围 作用对象 Android Studio 布局编辑器 具体作用 为NumberPicker 设置预览时的最小值和最大值 取值说明 int 型数值 示例说明: 这个加完之后,并没有看到什么特殊效果
本文实例为大家分享了Android根据文字数量换行的具体代码,供大家参考,具体内容如下 //主页 定义数据框 package com.example.customwaterfallviewgroup;...setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取输入框的值...android:id="@+id/edit" android:hint="输入" / <Button android:layout_width="match_parent"...,null); //获取到它的ID TextView textView = view.findViewById(R.id.water_fall_textview); //得到后给它赋值 (输入框里的值...给它) textView.setText(str); //添加到布局中 linearLayout_h.addView(view); //设置权重 让每一行内所有的控件相加充满整行,并合理分配 LinearLayout.LayoutParams
design中显示的却是大写的BUTTON,这是由于系统会对Button中的所有英文字母自动进行大写转换,如果这不是你想要的效果,可以使用如下配置来禁用这一默认特性:加入描述语句:android:textAllCaps...那我们来看一看如何在界面上加入EditText吧,修改activity_main.xml中的代码,如下所示: <EditText android:id="@+id/edit_text...,然后在按钮的点击事件里调用EditText的getText()方法获取到输入的内容,再调用toString()方法转换成字符串,最后还是老方法,使用Toast将输入的内容显示出来。 ...**所有的Android控件都具有这个属性,可以通过android:visibility 进行指定,可选值有3种:visible 、invisible 和gone 。...好了,关于Android常用控件的使用,我要讲的就只有这么多。一节内容就想覆盖Android控件所有的相关知识不太现实,同样一口气就想学会所有Android控件的使用方法也不太现实。
一年后,一个新的需求要用到这个库,项目代码已经全 Kotlin 化,强硬地插入一些 Java 代码显得格格不入,Java 冗余的语法也降低了代码的可读性,于是决定用 Kotlin 重构一番,在重构的时候也增加了一些新的功能...单个Selector已经可以很好的工作,但要让多个Selector形成一种单选或多选的模式,还需要一个管理器来同步它们之间的选中状态,Java 版本的管理器如下: public class SelectorGroup...= null) { preSelector.setSelected(false); } } } 将 Java 中的接口改成lambda,存储在函数类型的变量中...= null // 选中状态变更监听器, 将所有选中按钮回调出去(函数类型) var selectChangeListener: ((List/*selected...,或删除,或追加选中的按钮到Map中 if (select) { selectorMap[selector.groupTag]?.
7、下载尾部代码,跑起来调试 自定义接口的类型 1、click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的...key值,开发者可以通过自定义的key值与用户进行交互; 2、view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息...4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框...7、pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。...8、location_select:弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息
2.listView的使用 listView的布局上比较简单,只需要在其布局文件中写上如下代码即可: <ListView...数组或List:该数组或List将负责为多个列表项提供数据。 示例: 在创建完ArrayAdapter之后,调用ListView的setAdapter方法即可将数据填充到ListView中。...SimpleAdapter中的第四个参数String数组与map的两个key对应,第五个参数int数组与这个layout中两个控件的id相对应,注意String[]数组与int[]数组中的值要一一对应,...在这个示例中,key为name的value填充到id为name的TextView中。...——CursorAdapter中,l指的是从数据库中取出的数据在数据库中的id值。
需求包括: 一个标题TextView 一个圆角白色背景EditText 一个可输入个数提示的TextView 两个按钮,‘确定’、‘取消’ 对话框展现形式。 代码实现: (1)编写布局文件 <?...isSingleLine EditText是否限制一行显示 maxSize EditText中文字的最大长度 textview 修改的TextView控件,首先要讲该控件的文本显示在EditText中...(textview.getText().toString()); // 将参数textview的文本数据显示在EditText中 popup_edit_info_edit_content.setSingleLine...需求包括: 1、顶部两个按钮:“取消”、“确定”按钮 2、标题 3、滚动的wheelview选择器 代码实现: 1、选择一个WheelView控件,这个github上很多,我这里选用的是 https...能获取到数据源选中位置的数据 public int getCurrentPosition() { // 获取到wheelview当前选中的位置 return currentPosition
就是通过手机序列号或IP来实现的。打开cmd,输入adb devices,查看手机序列号,输入框中填写设备的IP或者设备的Serial(序列号)。...#选择带有文本'Clock'的对象,它的类名是'android.widget.TextView' d(text='Clock', className='android.widget.TextView')...d.long_click(x, y, 0.5) # 长按坐标位置0.5s默认 将UI对象拖向另一个点或另一个UI对象 # Android<4.3不能使用drag. # 在0.5秒内将UI对象拖到屏幕点(..., 'login')] # 按钮包含账号或帐号 //android.widget.Button[contains(@text, '账号') or contains(@text, '帐号')] # 所有...ImageView中的第二个 (//android.widget.ImageView)[2] # 所有ImageView中的最后一个 (//android.widget.ImageView)[last
animation.setDuration(3000); //给要渐变的控件设置动画,比如说imageview,textview,linearLayout之类的 ll.setAnimation...0,进入引导页跳转到主页时再把这个值设为1,这样,每次跳转时判断isFirst的值,如果仍是默认值0则为首次打开进入引导页,反之进入主页。...当滑动到最后一个页面时,将 “进入应用”的按钮显示,反之隐藏。.../focus_on" android:state_selected="true"/ <item android:drawable="@drawable/focus_nomal" android:state_selected...="false"/ </selector 在最后一个页面点击 “进入应用”按钮跳转到主页时,将缓存中的isFirst数据改为1,以后打开应用则不会再进入引导页面了。
在上一讲中,我已经制作了一个简单的Android应用。...SharedPreferences以键值对(key-value pair)的方式存储数据。在写入时,我们需要说明数据对应的键。在读取时,我们将根据键,来获得对应的数据值。数据可以在整个应用范围内调用。...使用SharedPreferences.Editor类对象写入数据时,我们调用了putString()方法,以存储字符串类型的数据值。commit()方法将执行写入。...使用getString()方法,从SharedPreferences对象获得键位"name"的值。如果"name"键不存在,将返回默认值"unknown"。 ?...onResume() 最后,用setText()方法,把新的数据加载到视图的TextView中。 运行 在"Edit Profile"中输入用户信息,提交后返回主页面,效果如下: ?
领取专属 10元无门槛券
手把手带您无忧上云