Android
qq_42281792
这个作者很懒,什么都没留下…
展开
-
CoordinatorLayout滑动抖动问题
https://segmentfault.com/a/1190000019431938?utm_source=tag-newest原创 2020-11-03 19:28:38 · 372 阅读 · 0 评论 -
Duplicate class org.intellij.lang.annotations.Flow found in modules annotations-13.0.jar (org.jetbra
在 应用 build.gradle 里添加 如下代码configurations {cleanedAnnotationscompile.exclude group: ‘org.jetbrains’ , module:‘annotations’}转载 2020-08-26 19:40:38 · 1959 阅读 · 0 评论 -
AS初始化设置
工具栏一开始是:选择:变为两行靠左放置设置原创 2020-02-10 21:05:55 · 451 阅读 · 0 评论 -
自定义View(四)——path
文章目录path常用方法表填充模式布尔操作(API19)计算边界path常用方法表填充模式path.setFillType(Path.FillType.WINDING);布尔操作(API19)在Path中的布尔运算有两个方法boolean op (Path path, Path.Op op)boolean op (Path path1, Path path2, Path.Op...原创 2019-09-05 10:39:48 · 126 阅读 · 0 评论 -
8720项目总结
getClass().getSimpleName() System.out.println(getClass().getName()); System.out.println(getClass().getSimpleName());输出结果是:I/System.out: hik.business.ly.owner.login.LoginActivityI/System.ou...原创 2019-08-05 17:13:08 · 196 阅读 · 0 评论 -
bitmap压缩
public byte[] getBitmapByte(Bitmap bitmap) { //将bitmap转化为二进制字节流 ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); try { ...原创 2019-08-05 15:59:44 · 190 阅读 · 0 评论 -
DataBinding
文章目录引入支持在布局文件中绑定指定的变量基本用法单向数据绑定BaseObservable效果图ObservableFieldObservable Collections双向数据绑定其他用法引入支持在对应 Model 的 build.gradle 文件里加入以下代码,同步后就能引入对 DataBinding 的支持android { dataBinding { ena...原创 2019-07-25 15:38:38 · 596 阅读 · 0 评论 -
变量命名前缀
Android中为什么有些变量会以m开头 private String mTitleText;为什么变量名非得以 ‘m’ 开头呢?像上面这样。而不是这样呢? private String titleText;这个疑问终于有一天我找到了答案。Follow Field Naming ConventionsNon-public, non-static field names start...转载 2019-07-30 09:53:45 · 1070 阅读 · 0 评论 -
MVP设计模式&LoginDemo
Controller/Presenter——负责逻辑的处理Model——提供数据View——负责显示M(Model)数据层,和MVC中的M一样,用来放数据的处理(比如网络请求,缓存等)。V(View)负责UI具体实现展现。比如Presenter派发过来一个动作是showDialog显示进度命令,那么我们这个View就负责实现具体UI。P(Presenter)负责处理业务逻辑代码,处...原创 2019-07-17 16:51:15 · 202 阅读 · 0 评论 -
网络请求(三)——Retrofit的get和post请求的用法
文章目录准备工作Get请求实战——每日一词准备工作- 在Gradle中添加依赖,接下来要用到GSON解析``` implementation("com.squareup.okhttp3:okhttp:3.14.2") implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.r...原创 2019-06-29 15:36:17 · 1108 阅读 · 0 评论 -
持久化存储(二)——SharedPreferences存储
文章目录简介得到SharedPreferences对象的三种方法数据存储的步骤存储数据读取数据实现记住密码功能正确使用的建议简介SharedPreferences存储是利用键值对的方式来存储的,有点类似map集合。当保存一条数据时,需要提供一个对应的键,这样在读取数据时可以通过这个键把相应的值取出来。支持多种数据类型的存储,存储的数据类型是整形、字符串……,读取出的数据类型也是整形、字符串...原创 2019-07-04 14:51:31 · 265 阅读 · 0 评论 -
自定义View(一)——自定义ViewGroup+简单自绘View
文章目录为什么要自定义View自定义View的步骤View位置描述LayoutInflate基本用法:举个栗子:自定义ViewGroupView的构造函数自绘View自定义属性onDraw()手动支持wrap_content属性onMeasure()支持padding属性为什么要自定义View需求有特定风格的控件用户交互,例如滑动TextView中的文字嵌套布局(?)封装常用的一组控件...原创 2019-09-04 15:22:50 · 2067 阅读 · 0 评论 -
自定义View(二)——View的构造函数
当一个类继承自View类时,要求实现他的构造函数一般来说,需要写前三个构造函数。那么问题来了,init的内容写在哪里呢?第一个构造函数,在java代码中new这个view的时候会被调用第二个构造函数,在xml中引用这个view的时候会被调用(就是刚刚发生的情况了)。AttributeSet对应的就是设置的属性值集合第三个构造函数,在xml的theme、style中调用。它的作用是当没有...原创 2019-09-04 15:23:03 · 221 阅读 · 0 评论 -
自定义View(三)——canvas画布操作
Canvas的常用操作速查表位移(translate)translate是坐标系的移动,可以为图形绘制选择一个合适的坐标系。请注意,位移是基于当前位置移动,而不是每次基于屏幕左上角的(0,0)点移动// 在坐标原点绘制一个黑色圆形mPaint.setColor(Color.BLACK);canvas.translate(200,200);canvas.drawCircle(0,0,...原创 2019-09-04 15:26:53 · 160 阅读 · 0 评论 -
自定义View(五)——onDraw
super.onDraw()这是自定义绘制最基本的形态:继承 View 类,在 onDraw() 中完全自定义它的绘制。@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //绘制代码 ... }继承自View类时代码写在super语句上面或者下...原创 2019-09-05 16:34:44 · 197 阅读 · 0 评论 -
自定义View(六)——实战ticket view
package com.sky.customapplication;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.DashPa...原创 2019-09-05 16:37:54 · 277 阅读 · 0 评论 -
全局变量->局部变量
“IDE会教你写代码”——鲁迅IDE有很多黄色高亮的地方,其实你的这些写法都是有问题的例如:Field can be converted to a local variable less... (Ctrl+F1) Inspection info: This inspection searches for redundant class fields that can be repla...原创 2019-09-06 16:13:51 · 261 阅读 · 0 评论 -
getDimension()、getDimensionPixelSize()和getDimenPixelOffset()
在写自定义View的时候想获取dimen值的时候,有下面三个函数:(float) getDimension(int index, float defValue)(int) getDimensionPixelSize(int index, int defValue)(int) getDimensionPixelOffset(int index, int defValue)结果值都是将资源...原创 2019-09-19 14:43:10 · 622 阅读 · 0 评论 -
Android尺寸单位 px、dp与sp
px:像素,大小恒定,所以在分辨率不同的设备上会显示不一样dp:可以根据屏幕大小进行转化,适配不同机型sp:与dp一样可以根据屏幕大小进行转化,同时可以根据系统字体大小自动调整...原创 2019-09-19 14:43:21 · 155 阅读 · 0 评论 -
持久化存储(一)——文件存储
文章目录持久化技术文件存储持久化技术将内存中的瞬时数据(瞬时状态)保存到存储设备中(持久状态),保证在手机关机的情况下数据也不会丢失。持久化技术提供这种可以让数据在瞬时状态和持久状态直接转换的机制。Android系统中主要提供了三种方式用于简单的实现数据持久化功能:放链接!!!!!文件存储(手机自带的内存)SharedPreferences存储SQLite数据库存储文件存储...原创 2019-07-04 14:51:12 · 1183 阅读 · 0 评论 -
第五周总结2019.7.8~2019.7.13
开始接触项目,做一个修改密码的功能,在项目中解决问题还是很有趣的,比单纯看理论知识好多了。遇到问题 -> 解决问题 -> 遇到新问题,在这个过程中循环往复,获得新知识。自己的问题是容易钻进一个难题,思路不够开阔,有时候换一种想法或许就可以了...原创 2019-07-13 17:38:53 · 131 阅读 · 0 评论 -
定制项目——修改密码功能
开始接触项目了!先负责一个修改密码的功能xml文件半透明<Button Android:background="#e0000000" … />透明<Button android:background="#00000000" … />原创 2019-07-13 16:24:17 · 1094 阅读 · 1 评论 -
AndroidStudio导入别人的项目
gradle版本不一样修改两个地方1、build.gradle2、gradle -> wrapper -> gradle-wrapper.properties改到和自己可运行的工程一样就可以了原创 2019-06-17 15:20:18 · 292 阅读 · 0 评论 -
活动的生命周期
三个Activity: MainActivity, NormalActivity(普通的活动), dialogActivity(对话框式的活动)MainActivitypublic class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final St...原创 2019-06-11 14:44:27 · 94 阅读 · 0 评论 -
Service两种启动方式和生命周期
两种启动方式启动service,要求:观察并打印生命周期方法、思考service的使用场景以及在什么情况下service会被回收文章目录第一种启动方式——startService启动、停止服务运行结果结论第二种启动方式——bindService绑定、解绑服务运行结果结论参考第一种启动方式——startService启动、停止服务MainActivity@Override pu...原创 2019-06-20 17:19:12 · 1968 阅读 · 0 评论 -
Service准备——Android多线程编程(异步消息处理)
2019.6.19晚上~2019.6.20下午文章目录线程异步消息处理——Handler如果在子线程里更新UI:异步消息处理:解析异步消息处理机制使用AsyncTask步骤1:创建AsyncTask子类方法1:onPreExecute()方法2:doInBackground(Params...)方法3:onProgressUpdate()方法4:onPostExecute()步骤2:创建Asyn...原创 2019-06-20 14:56:17 · 149 阅读 · 0 评论 -
5种log
android中有5种级别的log,分别为:Log.v()这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是Android 日志里面级别最低的一种。Log.d()这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose 高一级。Log.i()这个方法用于打印一些比较重要的数据,这些数据...转载 2019-06-20 11:22:00 · 601 阅读 · 0 评论 -
一个关键的回调getItemPosition()
ViewPager刷新fragmentPOSITION_UNCHANGED 不会去刷新POSITION_NONE会去刷新Fragment更新数据看一下两种状态区别原创 2019-06-15 15:44:28 · 1896 阅读 · 0 评论 -
Broadcast使用及其生命周期
静态动态广播的使用、全局本地广播的使用、广播的拦截,要求:观察并打印生命周期方法、思考广播的使用场景文章目录动态注册静态注册动态注册动态注册的广播接收器可以自由的注册和注销,但是要在程序启动后才能收到广播。MainActivitypublic class MainActivity extends AppCompatActivity { private IntentFilte...原创 2019-06-19 16:18:19 · 655 阅读 · 1 评论 -
ViewPager引入Fragment的生命周期&顺路学习Adapter2019.6.13
文章目录MVC 模式ArrayAdapterAdapter优化 ==待写==ViewPagerPagerAdapterLayoutInflater遇到问题空指针MVC 模式Model:通常可以理解为数据,负责执行程序的核心运算与判断逻辑,通过view获得用户 输入的数据,然后根据从数据库查询相关的信息,最后进行运算和判断,再将得到的结果交给view来显示view:用户的操作接口,说白了就是...原创 2019-06-14 15:34:51 · 170 阅读 · 0 评论 -
fragment三种引入方式和生命周期2019.6.12
文章目录静态加载Fragment代码运行效果动态加载fragment代码运行效果静态加载Fragment1、新建布局,作为fragment的内容2、新建Class,继承Fragment,重写onCreateView()方法,在这个方法中通过LayoutInflate的inflate()方法将刚才定义的布局动态加载进来3.在activity_main.xml布局中使用< fragmen...原创 2019-06-13 11:52:52 · 261 阅读 · 0 评论 -
Activity的四种启动模式下的生命周期(全)2019.6.11
2019.6.11下午~2019.6.12上午文章目录四种启动模式调试standard(默认)singleTop(MainActivity)代码在MainActivity中在NormalActivity中运行结果singleTask 栈唯一(MainActivity)singleInstance(NormalActivity的启动模式为singleInstance)[总结]onNewIntent...原创 2019-06-12 11:59:46 · 308 阅读 · 0 评论 -
横竖屏切换解决方案——静态动态设置+生命周期
静态设置在AndroidManifest.xml的< activity >里加上android:screenOrientation="sensor" //由设备的物理方向传感器决定android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation是用来设置 activ...原创 2019-07-13 16:17:50 · 687 阅读 · 0 评论 -
EditText密码明文暗文+以星号*显示
文章目录实现效果需要注意的细节InputType对照表InputType实现密码隐藏可见星号显示实现效果需要注意的细节默认的EditText样式有一条下划线,去掉他android:background="@null"默认的样式↓要求密码格式6~18位,设置最大长度18位,单行显示android:singleLine="true"android:maxLength="1...原创 2019-07-13 13:59:56 · 4293 阅读 · 0 评论 -
常用第三方数据库——room
组件Room由三个重要的组件组成:Database、Entity、DAO。Database:包含数据库持有者,并作为与应用持久关联数据的底层连接的主要访问点。而且Database对应的类必须满足下面几个条件:1. 必须是abstract类而且的extends RoomDatabase。2. 必须在类头的注释中包含与数据库关联的实体列表(Entity对应的类)。3. 包含一个具有0个参...原创 2019-07-09 10:39:12 · 842 阅读 · 0 评论 -
持久化存储(三)——SQLite的增删改查
1)sqlite的基本使用:创建表格、删除表格、插入、修改、查询操作;2)常用第三方数据库了解:room(首推)、real、greendao等等;文章目录创建数据库方法一:继承SQLiteOpenHelper两个抽象方法两个实例方法三个构造方法代码遇到问题1——怎么查看数据库方法二:调用SQLiteDatabase.openOrCreateDatabase打开或创建数据库升级数据库添加数据更新...原创 2019-07-09 10:38:42 · 198 阅读 · 0 评论 -
如何查看创建好的SQLite数据库
方法一:我首先尝试了通过adb shell来查看adb是Android SDK自带的一个调试工具, 可以直接对连接的虚拟机或真机进行调试。他存放在sdk的platform-tools目录下所以先在系统环境变量Path中配置platform-tools路径C:\Users\shenkeying\AppData\Local\Android\Sdk\platform-tools通常在这个位置...原创 2019-07-02 15:49:17 · 3712 阅读 · 0 评论 -
网络请求(二)——解析XML格式数据+实战
文章目录解析XML格式数据Pull解析方式SAX解析方式DOM解析方式实践——金山词霸每日一句解析XML格式数据Pull解析方式先搭建一个简单的web服务器,在这个服务器上提供一段xml文本。从程序里访问这个服务器,对得到的xml文本进行解析。安装Apache服务器在d:\Apache24\htdocs的目录下新建一个get_data.xml文件,在里面编辑xml内容<app...原创 2019-06-26 17:24:02 · 456 阅读 · 0 评论 -
网络请求(一)——系统API和OkHttp的get/Post请求
使用系统API发起get、post请求,并解析返回的数据;使用okhttp发起get、post请求,并解析返回的数据;使用retrofit发起get、post请求,并解析返回的数据;通过,知乎,金山词霸等的open api做练习文章目录相关准备系统APIget请求代码运行结果遇到问题相关准备API——应用程序接口,一个软件系统对其他软件系统提供的服务SDK——软体开发工具包,一堆接口...原创 2019-06-26 17:22:05 · 329 阅读 · 0 评论 -
网络请求(四)Retrofit实战——金山词霸查词API&遇到的问题
我使用的APIhttp://dict-co.iciba.com/api/dictionary.php?w=good&type=json&key=0CD3A4C079D2D23C683BBFF96300E924@POST("api/dictionary.php?") Call<ResponseBody> rawPostCall( ...原创 2019-07-01 16:16:47 · 435 阅读 · 0 评论