![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 65
安卓开发,各种知识
铃俐
爱好广泛,成长记录分享。
展开
-
Android gson解析@SerializedName、transient、@Expose
1 创建gson对象时,用new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()创建,让 @Expose 注解生效2 加@Expose注解,默认表示serialize = true,deserialize = true,即这个字段序列化和反序列化都参与3 加@Expose注解,通过更改serialize和deserialize的值true /false,控制该字段是否序列化、反序列化4 不加@Expose注解,默认表示seri原创 2022-06-13 14:33:08 · 1376 阅读 · 0 评论 -
Android gson实现数组与集合的序列化与反序列化
集合的反序列化 需要用TypeToken来获取type原创 2022-06-13 12:10:04 · 637 阅读 · 0 评论 -
Android gson实现java对象的序列化与反序列化
通过gson完成java 实体类 和 json格式的互相转换原创 2022-06-12 22:44:32 · 197 阅读 · 0 评论 -
Android 报错:Call requires API level 26/设置SDK最小的版本
Call requires API level 26/设置SDK最小的版本原创 2022-06-11 20:03:06 · 1560 阅读 · 0 评论 -
Android intent传递对象(Serializable接口方式、Parcelable接口方式)
传递Serializable接口的对象: Serializable 是面向JVM java虚拟机的传递Parcelable接口的对象:Parcelable是面向Android虚拟机的,性能更高,推荐 Android开发必须用这个,因为和Android虚拟机兼容原创 2022-06-11 15:49:23 · 402 阅读 · 0 评论 -
Android intent传输数据、intent通过bundle传输数据
intent传输示意图如下:把数据从activity1传输到activity2 案例:把activity1的数据传递给activity2效果 bundle 传输示意图bundle和intent的区别, 拆数据和没放在bundle里是一样的 结果原创 2022-06-11 13:09:45 · 3544 阅读 · 0 评论 -
Android Room增删改查详解、报错的改正记录
Room 是 SQLite的封装SQLite: 需要写帮助类、SQL语句、执行SQL语句、创建表 → 非常非常繁琐Room(SQLite的封装): 面向注解开发 @Entity @Dao @Database → 方便通过在实体类上加注解@Entity,让实体类相当于一张表通过在Dao接口上加注解@Dao,就可以让dao轻松地完成增删改查创建一个类继承RoomDatabase,加注解@Database,轻松地建数据库和建表用Room完成如下增删改查功能3 创建一个Dao接口,加注解@Dao原创 2022-06-10 23:09:27 · 3590 阅读 · 0 评论 -
Android SQLite数据库的增删改查
查询: 1 连接数据库:(单例模式获取单例) MySQLiteOpenHelper helper = MySQLiteOpenHelper.getInstance(this); SQLiteDatabase db = helper.getReadableDatabase(); 2 游标到下一个位置时,获取列: Cursor cursor = db.rawQuery("select * from people",null); cursor.moveToNext() String nam原创 2022-06-10 13:38:06 · 3898 阅读 · 1 评论 -
Android SQLite数据库介绍、Android Studio代码建数据库建表
SQLite使用1 创建工具类mySQLiteOpenHelper 继承 SQLiteOpenHelper,使用单例模式获取到实例2 创建数据库getWritableDatabase()3 创建表db.execSQL(sql)原创 2022-06-09 22:39:03 · 3864 阅读 · 0 评论 -
Android SQLiteExpertPro安装及简单使用(含安装包)
从0开始使用SQLite原创 2022-06-07 18:37:39 · 928 阅读 · 0 评论 -
Android SP存储 记住密码、自动登录案例
sp存储:记住密码、自动登录案例原创 2022-06-07 14:46:13 · 424 阅读 · 1 评论 -
Android RXJava响应式编程思维 (观察者设计模式 )
RX思维是链条式思维 : 起点(被观察者Observable)到终点(观察者Observer),以后加新的需求的话就加在起点和终点的中间RxJava 使用三步走:第一步:创建 Observable 被观察者第二步:创建 Observer 观察者第三步:使用 subscribe 进行订阅............原创 2022-06-06 20:17:00 · 441 阅读 · 0 评论 -
Android 音视频开发 YUV颜色编码
是一种颜色编码方法能优化彩色视频信号的传输与RGB相比,YUV只需占用极少的频宽Y:亮度(灰阶值)U与V: 色度(色调和饱和度)只有Y数据:表示的图像就是黑白的Y + UV表示的是彩色图也就是 YUV 既可以兼容黑白图像,也能兼容彩色图像......原创 2022-06-05 20:30:13 · 258 阅读 · 0 评论 -
Android 音视频开发 ffmpeg软件、视频为什么要编码?
ffmpeg是计算机上面的一个开源软件:帮助我们处理音视频原创 2022-06-04 17:23:47 · 161 阅读 · 0 评论 -
Android 音视频开发 h.264编码分析
图片经过h.264编码之后,会被编码成一个或多个片.一般的h.264编码器的输出默认为: 起始码 + nal单元 (起始码就相当于帮我们断句,看到起始码就知道我们又来到了一个新的单元)紧跟在起始码后面的NAL header占用1个字节,这个字节(转成2进制)的后五位表示nal单元类型,把这个后5位转成十进制就可以对照出nal单元类型.比如:NAL header是67,把这个十六进制的67转成二进制是 011 00111 ,后五位是00111,转成十进制就是7,对照下面的图就可以得出nal单元类型是原创 2022-06-04 20:53:03 · 274 阅读 · 0 评论 -
配置环境变量
在我们安装各种软件,搭建各种开发环境时,一般也都是直接在这个path里面放入配置程序路径的原创 2022-06-04 11:10:00 · 76 阅读 · 0 评论 -
Android viewPager2 + fragment 模拟微信首页2(滑动页面标签同步变化,点击标签滑动页面)
模拟微信首页(滑动页面标签同步变化,点击标签滑动页面)原创 2022-06-03 20:44:27 · 446 阅读 · 0 评论 -
Android viewPager2 + fragment 模拟微信首页1(滑动翻页效果)
fragment + viewPager2模拟微信首页1(滑动翻页效果)实现思路总结:activity → viewPager → Adapter → fragment → TextViewactivity里装viewPager,viewPager里setAdapterAdapter里放fragmentfragment里设不同的TextView原创 2022-06-03 16:35:41 · 603 阅读 · 0 评论 -
Android viewpager2实现翻页效果
为什么要实现翻页效果?减少用户的操作viewpager2是基于recyclerview实现的,自带懒加载功能viewpager2是对recyclerview的封装原创 2022-06-02 22:34:16 · 962 阅读 · 0 评论 -
Android fragment的生命周期详解
为了方便后期的记忆,我按顺序把它们排列好,编上号了一 创建编号1 onAttach() : 和activity绑定编号2 onCreate() : 创建fragment编号3 onCreateView : 创建fragment的UI编号4 onActivityCreated() : activity创建了二 运行编号5 onStart() : 可见编号6 onResume() : 可见之后要与用户交互编号7 onPause() : 不可见之前编号8 onStop() : 不可见三 销毁原创 2022-06-02 18:27:52 · 5128 阅读 · 3 评论 -
Android activity与fragment通过接口通信
1 定义接口:写发消息和收消息的两个方法2 Fragment.xml布局3 Fragment.java 写一个属性是刚刚自定义的接口,写set方法 点击事件时,调接口的发消息和收消息方法 收到消息方显示吐司:Toast.makeText(this,msg,Toast.LENGTH_LONG).show();4 Main.java new Fragment之后set自定义的接口,实现接口发消息和收消息的方法 收到消息方显示吐司:Toast.makeText(thi原创 2022-06-01 20:36:51 · 560 阅读 · 0 评论 -
Android 动态fragment、fragment添加到栈管理、activity与fragment的bundle通信
案例:点击不同的按钮动态切换不同的fragment页面案例效果图step1 创建3个fragment备用step2 main.xml写3个按钮布局step3 main.java 1 按钮点击事件的新写法 main.java实现View.OnClickListener btn.setOnClickListener(this); 重写onClick方法 2 点击事件:动态切换fragment //专门管理fragment的原创 2022-06-01 15:10:24 · 916 阅读 · 2 评论 -
Android fragment介绍及基本使用
一 什么是fragment? fragment是一个小的activity,点击不同的item,会显示不同的界面,这个界面就是fragment. 可以在多个activity中重复使用一个fragment,所以可以把fragment视为activity中的模块化的组成部分二 为什么有fragment? 使页面动态灵活设计 为了让activity能更简洁地配置画面三 fragment的特点? 1 Fragment 有自己的生命周期 2 必须委托在activity中才能运行(所以Fragment的生原创 2022-06-01 13:22:35 · 12756 阅读 · 3 评论 -
Android receiver 动态注册广播
CustomReceiver customReceiver = new CustomReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(ActionUtils.DONG_ACTION_FLAG); registerReceiver(customReceiver,filter);原创 2022-05-31 22:08:58 · 884 阅读 · 0 评论 -
Android startService、bindService的使用
服务在后台默默地运行,是看不见的一 步骤1 创建一个类继承Service (这个类就是服务了) 在这里重写一些方法(用来测试)2 在清单文件中注册Service <!--组件必须在清单文件中注册才能生效--> <service android:name=".MyService"/> 3 xml写2个按钮,添加两个点击事件4 点击事件,分别写启动服务和停止服务 startService(new Intent(this,MySer...原创 2022-05-31 13:54:10 · 1280 阅读 · 0 评论 -
Android activity的生命周期
案例:测试activity的生命周期1 画面刚启动的时候2 点中间home键返回手机主页时3 重新打开画面时4 跳转到另一个activity时5 点返回键回到主页时区分一下:2 点中间home键返回手机主页时总结activity 就是画面每个开卡片的存活状态就是 生命周期1 第一次启动activity时onCreate()onStart()onResume()2 跳到其他activity时onPause()onS...原创 2022-05-31 13:03:13 · 147 阅读 · 0 评论 -
Android activity跳转使用详解
画面就是活动卡片,就是activity继承 AppCompatActivity 的才是activity,否则就是一个普通的java类案例:实现activity跳转一 步骤step1 new一个新的activitystep2 看一下AndroidManifest.xml是否配置了新的activitystep3 在MainActivity.java 里添加点击事件,跳转到activity2 startActivity(new Intent(this,MainActivity2.cla...原创 2022-05-31 10:47:20 · 3613 阅读 · 0 评论 -
Android ViewPager左右滑动切换页面效果
ViewPager: 做一个左右 滑动切换页面 的效果一 步骤step1 创建3个页面step2 activity_main.xml里面写 <ViewPager>step3 创建MyAdapter 继承 PagerAdapter 添加List<View> 属性,写构造方法 将view添加到容器中 删除当前的view ...step4 MainActivity里面 获取3个页面 把3个页面添加到listView 获...原创 2022-05-30 16:23:56 · 1283 阅读 · 1 评论 -
Android LayoutParams 、单位和尺寸的使用
px : 像素,不同设备,显示效果相同 → 一般不会用到pt : point ,1pt = 1/72英寸 → 用于印刷业dp/dip : 为了适配不同屏幕大小的单位sp : 放大像素 → 主要用于字体显示LayoutParams : 相当于一个Layout信息包,封装了Layout位置 宽 高 等信息 linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,View...原创 2022-05-30 15:00:55 · 699 阅读 · 0 评论 -
Android Studio 常用快捷键整理
一 调换格式Ctrl + D → 复制行alt + shift + ↑ → 移动到上一行Ctrl + Shift + ↑ → 移动到上一行alt + shift + ↓ → 移动到下一行Ctrl + Shift + ↓ → 移动到下一行Ctrl + R → 查找后替换Ctrl + G → 快速定位行Ctrl + Alt + L → 对当前类的所有代码进行格式化Ctrl + / →.........原创 2022-05-30 12:36:34 · 8483 阅读 · 0 评论 -
Android 属性动画的使用
属性动画: 在一定时间内,持续改变属性的值一 ValueAnimator设置属性的变化(不可以针对对象设置属性的变化)案例: 在2秒内,把属性的值从0改到1package com.example.myanimshuxing;import androidx.appcompat.app.AppCompatActivity;import android.animation.ValueAnimator;import android.os.Bundle;import android.ut原创 2022-05-30 12:31:19 · 293 阅读 · 0 评论 -
Android 透明度、旋转、缩放、平移
补间动画一共分为4种1 alpha 透明度2 rotate 旋转3 scale 缩放4 translate 平移一 alpha 透明度1 步骤step1 创建动画文件 res 文件夹下创建文件夹,在此new一个animation resource file <alpha> 透明度标签 fromAlpha toAlpha:透明度从哪到哪 (0 表示完全透明,1 表示完全不透明) duration:总共花费多少毫秒的时间...原创 2022-05-29 22:27:25 · 524 阅读 · 0 评论 -
Android 帧动画的使用
一 步骤step1 drawable文件夹 1 drawable文件夹放动画图片 2 drawable文件夹--右键--new--drawable resource file <animation-list>里面放<item> <item>标签的duration属性: 图片显示多少毫秒step2 xml布局文件背景引用drawable文件step3 java主文件里 1 获取布局的背景 2 给布局...原创 2022-05-29 16:30:44 · 397 阅读 · 0 评论 -
Android Studio debug方法和Logcat不打印日志问题
一开始以为代码写的不对,后来debug发现走到了打印日志的地方,但是Logcat 就是没有日志,解决方法记录如下:一 dubug方法二Logcat 不打印日志问题原创 2022-05-28 21:58:59 · 3552 阅读 · 0 评论 -
Android recyclerview垂直布局、网格布局、瀑布流布局、点击事件获取位置的使用
一 recyclerview基础使用1 步骤step1 导入recyclerview 的依赖step2 activity_main.xml 里面添加recyclerview标签 step3 添加一个recyclerview_item.xml 页面 里面添加TextView内容 step4 创建一个java bean类step5 创建MyAdapter类MyAdapter类继承 RecyclerView.Adapter<MyAdapte.........原创 2022-05-28 22:40:39 · 2419 阅读 · 0 评论 -
Android ListView的使用
一 ListView的基础使用1 步骤step1 activity_main.xml 里面添加ListView 标签 step2 添加一个list_item 页面 里面添加TextView内容 step3 创建一个java bean类step4 创建MyAdapter 继承 BaseAdapter类,重写方法获取 list_item 页面内容 1 获取list_item.xml页面 convertView = LayoutInflater...原创 2022-05-28 15:04:37 · 966 阅读 · 0 评论 -
Android constraintlayout 约束布局画计算器详细步骤
constraintlayout: 约束布局新建项目默认就是 约束布局一 constraintlayout 使用step1 点 designstep2 工具总览注:图上的4根辅助线是我之前画的step3 辅助线使用添加一根水平的辅助线二 来画一个计算器吧step1 添加这个障碍辅助线,先布一下局,普通的辅助线起不到限制作用Ctrl+ 鼠标滚轮,可以放大手机屏幕...原创 2022-05-27 22:39:56 · 848 阅读 · 2 评论 -
Android GridLayout 网格布局属性
GridLayout: 网格布局子元素超过一行的宽度,超过的地方也不显示一 设置在父元素GridLayout上的属性1 orientation : 水平还是垂直显示 horizontal水平(默认) | vertical 垂直显示2 columnCount: 设置一行有几列(不会改变子元素的宽度,超过一行显示的个数 就自动换行)3 rowCount: 设置显示几行二 设置在子元素上的属性layout_row : 设置显示在第几行(从0开始计数,该元素后面的元素位置会跟...原创 2022-05-27 15:22:16 · 2544 阅读 · 0 评论 -
Android TableLayout 表格布局详解
TableLayout: 表格布局一 里面的元素,默认占一行二 TableLayout 一般和 TableRow 结合在一起用TableRow里的内容超出一行的宽度,不会自动换行, 会显示不全三 常见属性1 写在父元素上 collapseColumns : 隐藏第几列的子元素(从0开始数的) stretchColumns :拉伸第几列的子元素(从0开始数的),有剩余空间才能拉伸 shrinkColumns:收缩第几列的子元素(从0开始数的),当这一行的...原创 2022-05-27 11:30:10 · 1850 阅读 · 0 评论 -
Android AlertDialog 弹出对话框的使用
1 弹出对话框AlertDialog.Builder builder = new AlertDialog.Builder();builder.setIcon() .setTitle() .setMessage() .setPositiveButton() .setNegativeButton() .setNeutralButton() ...原创 2022-05-26 14:45:41 · 818 阅读 · 0 评论