![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
APP开发
文章平均质量分 58
绿风天空
这个作者很懒,什么都没留下…
展开
-
Andriod开发 报错及解决方案
通常情况下,这个错误是由于在调用setText()等方法时,传递了一个整数(int)类型的参数,而不是字符串类型的参数。在这种情况下,Android系统会尝试根据传递的整数参数查找对应的字符串资源ID,但是找不到对应的字符串资源,则会抛出Resources$NotFoundException异常。这个异常通常发生在尝试在非UI线程(例如后台线程或其他工作线程)中修改UI界面的视图,例如更新TextView的文本或更改ImageView的图像。1. 在非UI线程中修改UI界面的视图。原创 2023-07-17 19:34:09 · 239 阅读 · 0 评论 -
Andriod 开发 SearchView默认弹出软键盘
focusable和focusableInTouchMode两个属性是用于控制Android中视图(View)的焦点行为的属性。然后再打开APP,SearchView就没有自动获取焦点了,软键盘也没有自动弹出了。这是因为SearchView的上级控件LinearLayout获取了焦点。这时候我意识到了该java代码是没有用的,得去。原创 2023-07-02 15:07:08 · 569 阅读 · 0 评论 -
Android开发 应用通信 ContentProvider ContentResolver
它提供了一组方法来查询ContentProviders、插入、更新和删除数据,以及注册ContentObserver以侦听数据中的更改。ContentProvider是一个Android组件,它提供了一个标准接口来在不同的应用程序之间共享数据。它充当应用程序和数据源之间的中介,数据源可以是SQLite数据库、文件,甚至是远程服务器。ContentProvider提供了一组方法来管理对数据的访问,例如查询、插入、更新和删除数据。它还支持内容URI,这些URI是表示一段数据的唯一标识符。原创 2023-06-21 10:53:04 · 326 阅读 · 0 评论 -
Andriod开发 用fragment实现引导页
所以我们可以用fragment来实现引导页,这样内存里一次最多保存两三个View,内存开销小。当View数量比较少的时候不成问题,但当引导页要切换上百次时,就会造成内存开销过大的问题。因为要切换不同的View,所以在初始化Adapter的时候,就把所有View设置好了。中,是用PagerAdapter的子类实现的引导页。1.fragment优点。原创 2023-06-18 12:09:08 · 387 阅读 · 0 评论 -
Andriod开发 fragment
与Activity类似,Fragment也有自己的生命周期,包括onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法。前面说的静态注册,就是直接在需要fragment的页面的xml里直接加上一个fragment,然后用属性name写清楚fragment指向的类。这个方法可以用于创建 fragment,然后将fragment所需的参数打包到Bundle中,然后作为fragment的参数存储。2.fragment静态注册。原创 2023-06-17 17:00:17 · 1013 阅读 · 0 评论 -
Andriod开发 ViewPager实现引导页
提到了,如果希望ViewPager的每一页更复杂,那就可以和ListView一样,写一个item的layout,用Adapter绑定。在instantiateItem方法中,直接根据位置得到View,放入容器中。显示一张图片,下面有一组按钮组,显示第i张图片时,第i个按钮会选中。然后最后一页有一个enter按钮,进入APP主界面。在构造函数,就按顺序设置好各个page的View。ViewPager的简单实现在。原创 2023-06-15 18:18:21 · 259 阅读 · 0 评论 -
Andriod开发 ViewPager PageTabStrip
比起只显示图片,需要在xml里增加一个PageTabStrip,然后在适配器的class中实现getPageTitle方法,返回值就是title内容。PagerAdapter是个抽象类,所以需要写一个子类来实现它。这个是放在ViewPager里的一个组件,在View上方显示一个标题栏,可以随着View的滑动而滑动。instantiateItem表示当前容器要展示第几个View,执行一个放入新View的操作。ViewPager常见于APP的引导页或者产品介绍,左右滑动展示不同页面。原创 2023-06-14 20:48:58 · 466 阅读 · 0 评论 -
Andriod开发 GridView
GridView比ListView多了一个列数的属性,可以理解成表格View,用法和ListView类似,都是用Adapter绑定数据和格式。原创 2023-06-14 11:19:50 · 141 阅读 · 0 评论 -
Andriod开发 ListView
当item里面放置一个button后,设置监听button,会发现button可以正常点击,但是点击item(非button部分)时,会没有响应。列表视图,用于展示数据列表,比如帖子列表,商品列表,一般和Adapter一起使用。这是因为ListView默认会把焦点传递给子项,可以之间在item的布局中设置。这样item就会得到焦点,响应用户点击。例子是一个简单的ListView。原创 2023-06-06 11:24:18 · 192 阅读 · 0 评论 -
Andriod开发 SimpleAdapter BaseAdapter
SimpleAdapter接受List作为数据源,每个Map对应一个item(比如购物车里的一件商品,书架上的一本书),Map中的key需要与视图控件相对应,这样value就可以显示到视图控件中了。getView()每次判断convertView是否为空,若为空,则新建一个View并把item会用到的控件打包放进View中,若不为空,则代表可以复用已经滚出页面的item的View。如果每次都创建新的Item,会浪费内存,所有可以重复使用已经滚出页面的Item。原创 2023-06-05 10:16:20 · 567 阅读 · 0 评论 -
Andriod开发 Adapter ArrayAdapter
Adapter 的作用是将数据转换成视图,以便用户可以查看和操作数据。可以将item的布局和数据输入Adapter,View使用Adapter,就可以得到多个布局相同、内容不同的item了。一般的用法是一个View中要显示多个布局相同但数据不同的item(例如论坛界面的多个帖子,购物车里的多个商品)。3)使用Adapter绑定item和数据,Spinner使用该Adapter。Adapter 是一个非常重要的组件,用于将数据与视图进行绑定。不同的 Adapter 类型适用于不同的数据源和视图类型。原创 2023-06-04 15:12:14 · 821 阅读 · 0 评论 -
Andriod开发 Room 数据库处理框架
Room是Android Jetpack组件库中的一部分,它是一个SQLite数据库的抽象层,提供了更简单的API和更好的性能,适合于中大型应用程序。举个例子,我们要将书本信息存储到数据库中,那么可以先创建一个书本信息的新类,用于封装书本信息。在该实体类中,用注解表明实体:@Entity, 和对应表中的主键:@PrimaryKey。这个接口不需要实现具体的增删改查操作,只需要用注解标记好对应的操作。也是类似的,用注解写清楚该数据库涉及的实体类。这样数据库的实例就是全局变量。3)创建数据库的抽象类。原创 2023-06-03 20:03:45 · 1374 阅读 · 0 评论 -
Android开发 Application
在Application中用name指定自己定义的Application的名字,就可以使用非默认的Application了。表单内容会被存储到Application类中,在没有结束APP进程的情况下,再次访问表单,可以reload之前保存的信息。Application一般在Activity之前创建,可以定义自己的Application。因为static变量只会在进程结束时被回收,会造成不使用的静态变量一直占据内存。二、用Application保存全局变量。同时在类内定义map存储全局变量。原创 2023-06-02 12:04:26 · 677 阅读 · 0 评论 -
Android开发 外部存储空间
那么很自然地可以得出,当APP卸载后,内部存储空间和外部存储空间的私有存储空间的文件都被清空了,但公共存储空间的文件不会被删除。内部存储空间和外部存储空间的私有存储空间,都是每个APP独有的,不允许其他APP访问。公共存储空间则是所有APP都可以访问,空间也更大,可以用于存储一些大的音频文件。外部存储空间也就是常说的SD卡,可以分为私有存储空间和公共存储空间。对Andriod来说,存储空间分为内部存储空间和外部存储空间。结果:在对应路径可以看到文件。//外部存储私有空间。//外部存储公共空间。原创 2023-05-26 13:33:38 · 1684 阅读 · 0 评论 -
Android开发 SQLiteOpenHelper
SQLiteOpenHelper类中有一个onUpgrade方法,当数据库版本号version更新后(APP中版本号与程序理的版本号不一致),就会自动调用onUpgrade方法。上一篇说到了创建一个新类继承SQLiteOpenHelper类,从而获得SQLiteDatabase实例,对SQLite数据库进行操作。简单说就是一个事务内的操作必须一起完成,或者一起失败,不能只完成了其中某条操作,而其他操作失败。如果完成一个事务时,在其中某条操作中报错失败了,那应该回滚回事务开始前。原创 2023-04-12 15:58:15 · 180 阅读 · 0 评论 -
Android开发 SQLite数据库 SQLiteOpenHelper
在Android开发中,一般会使用SQLiteOpenHelper类来获得SQLiteDatabase实例,然后对数据库进行增删查改操作。SQLiteDatabase用于在Andriod开发中操作SQLite数据库。SQLite是一个小型的嵌入式数据库,使用SQL管理数据。创建和删除SQLite数据库。原创 2023-04-11 19:19:41 · 606 阅读 · 0 评论 -
Android开发 SharedPreferences
SharedPreferences用于存储一些简单孤立的文本数据,可以持久化存储(不会随着APP的关闭而清除。SharedPreferences保存在APP的私有目录下,其他APP不能访问。当下一次启动APP时,可以读取该xml文件的内容,在APP中显示上次运行的信息。可以通过getSharedPreferences创建一个xml文件来存储数据。二、SharedPreferences 写入和读取。原创 2023-04-10 17:54:33 · 222 阅读 · 0 评论 -
Android开发 Dialog对话框 DatePickerDialog
DatePickerDialog在 AlertDialog上添加了日期选择器DatePicker,达到日期选择弹窗的目的。没有公开的构造方法,一般用AlertDialog.Builder来完成参数设置,最后调用create方法创建。DatePickerDialog则是内置了日期选择器的弹窗,用onDateSet方法设置确定日期之后的动作。datePickerMode可以选"spinner"或者"calendar"AlertDialog是弹出的提醒对话框,有提示,确认,选择等功能。原创 2023-04-08 12:21:50 · 1298 阅读 · 0 评论 -
Android开发 文本输入 EditText 监听器
注意这里是焦点变更,而不是点击事件,因为EditText点击一次触发的是焦点变更,第二次点击才会触发点击事件。当然也可以自定义EditText的背景,比如用selector设定获取焦点时EditText背景的变化。使用EditText时,可以在focus变更时触发事件,常用于检查EditText的内容或者长度。其中focus和nofocus都是自定义的shape,分别表示聚焦和没有聚焦时的背景,如下图。当焦点移向密码栏时,检查手机号码的长度,若小于11位,将焦点返回手机号码栏,弹出提示。原创 2023-04-06 16:54:18 · 2783 阅读 · 0 评论 -
Android开发 CompoundButton CheckBox Switch RadioButton
和CheckBox类似,可以通过点击来选择开或关,可以通过实现setOnCheckedChangeListener()来监听开关。所以需要一个容器来存储同一组的单选按钮,这个容器就是RadioGroup,实际上是一个布局,默认是垂直布局。和普通Button一样,CheckBox也可以设置监听,根据是否选中,做出不同反应。单选按钮与前面的复选框和switch的不同在于,它是一组单选按钮,每次只能选中一个。效果图:第一排是默认的CheckBox的效果,第二排是我自定义的。),可以设置勾选时和取消勾选时的图片。原创 2023-03-30 15:42:28 · 387 阅读 · 0 评论 -
Android开发 Drawable
九宫格图片:可以控制拉伸的范围,达成只拉伸图片内部,不拉伸图片的外部(轮廓)的目的,这样图片不会变模糊。Android将所有图形(图片,色块,画板,背景)都抽象为了Drawable类。为了解决图片设置成View背景时,由于大小不够,被拉伸填满背景导致的模糊问题。在java文件中通过"R.drawable. 图片名“引用,图片名不带扩展名。在xml文件中通过“@drawable/图片名”引用,图片名不带扩展名。用于绘制常见的几何图形:默认矩形,可选椭圆,直线,圆环。原创 2023-03-28 21:20:37 · 879 阅读 · 0 评论 -
Android开发 Activity配置信息 meta-data
需要注意的是android:shortcutShortLabel和android:shortcutLongLabel 不能直接复制一个常量字符串,需要先去strings.xml中定义,再在赋值时引用变量名。可以在res/value/strings.xml中配置字符串,优点是方便批量修改字符串常量,同时因为xml是配置文件,所以修改后不用再编译。meta-data不仅有name和value属性,还有一个resource属性,可以指定一个xml文件,用于传递更加复杂的信息。3.meta-data传递复杂信息。原创 2023-03-27 14:15:40 · 1608 阅读 · 0 评论 -
Android开发 Intent
发送方使用registerForActivityResult方法来启动页面跳转,与startActivity方法的不同在于,这样启动要求接收方返回数据给发送方。这里的发送方和接收方指的是发送方跳转到接收方,接下来也会写到接收方如何向发送方发送数据。没有给定的发送方和接收方,通过一个动作字符串让系统自动匹配,属于模糊匹配。在组件之间传递信息,一般需要设置发送方,接收方和数据。1)显式Intent:精确匹配发送方和接收方。接收方收到发送方的数据,且回答发送方。3.发送方向接收方传递数据。2)隐式Intent。原创 2023-03-26 11:14:25 · 725 阅读 · 0 评论 -
Android开发 Activity
Activity可以直接理解为APP的一个页面,Activity的启动和关闭就是页面之间的跳转。在XML文件AndroidManifest.xml中设置Activity的启动模式。参数为当前Activity的指针,和即将跳转的Activity的class。Activity启动后会进入活动栈,启动模式决定了活动栈会如何更新。第一个页面代码:启动Activity。第二个页面代码:关闭Activity。原创 2023-03-23 17:13:27 · 448 阅读 · 0 评论 -
Android开发 ImageView ImageButton
用于显示图像,图像存储在drawable文件夹下,可以指定缩放类型。继承了ImageView,而不是Button。图像button优先使用ImageButton。3.Button同时显示文本和图像。原创 2023-03-19 11:09:59 · 147 阅读 · 0 评论 -
Android开发 Button setOnClickListener
前面说了如何使用onClick来调用点击按钮之后的函数。但这会存在一个问题,xml文件是用于设置APP界面布局的,如果加入java代码中的函数名,会导致界面设计与程序逻辑混在一起,不利于复用。所以最佳方法是点击事件监听的代码只写在java文件中。主要调用的方法是监听器setOnClickListener,有多种写法,但本质都是实现View.OnClickListener接口。步骤为:View调用setOnClickListener实现View.OnClickListener接口的OnC原创 2023-03-18 18:55:35 · 3112 阅读 · 0 评论 -
Android开发 Layout布局 ScrollView
属性orientation:内部组件排列方式,可选vertical、horizontal,默认horizontallayout_weight: 与平级组件长宽比例,需要将layout_width、layout_height其中一个设置为0dp,表明长或宽与平级组件的长或宽成比例。原创 2023-03-17 16:07:48 · 644 阅读 · 0 评论 -
Android开发 View属性
上述是直接在xml文件中设置View宽高,也可以在java文件中设置,需要注意的是此时默认单位为px。layout_margin: View与周围View的间距,也就是外部间距。View的子类及子类的子类都有View的属性,都可以设置下述介绍的属性。layout_gravity:当前View相对上级View的对齐方式。padding: View与内部View的间距,也就是内部间距。gravity:下级View相对当前View的对齐方式。match_parent:匹配父控件的宽高。4.View对齐方式。原创 2023-03-16 17:30:12 · 419 阅读 · 0 评论 -
Android开发 TextView
textColor指定文本颜色,当xml文件内的颜色用六位表示时,默认前两位为FF,表示不透明。上述简单讲了几个常用的参数,可以在xml文件中直接设置,也可以在java文件中设置。先通过findViewById得到该控件,接着通过一系列的set函数修改控件的参数。id是该控件的名字(变量名),可以在java文件中通过id来引用到该控件。开发一个APP,还需从最基础的控件入手,今天学习TextView控件。textSize:文本的大小,注意是有单位的,px,dp,sp。R是引用该project资源的一个类。原创 2023-02-28 11:34:52 · 1104 阅读 · 0 评论 -
Android开发
MainActivity.java文件用到了activity_main,也就是指向了activity_main.xml文件,该文件描述了APP界面如何显示。很显然,上述提到的最基础的代码流程,只有一个APP页面,这显然是不够的,我们还需要了解Andriod Activity(APP页面)是如何创建的。最顶层的文件是AndroidManifest.xml包含了APP的配置信息,决定了APP如何显示和运行。我们可以在主界面添加一个button,当用户点击了这个按钮,就跳转到第二个界面。3.创建新的APP页面。原创 2023-02-10 15:20:48 · 1452 阅读 · 1 评论