- 博客(60)
- 资源 (2)
- 收藏
- 关注
原创 Google 官方数据库框架Room使用教程
Room 是 Google 提供的官方 ORM 框架,用于处理 Android 应用中的 SQLite 数据库操作。它是 Android Jetpack 的一部分,具有编译时检查、数据持久化的简化操作以及与 LiveData 和 RxJava 的良好集成。以下是 Room 的详细使用教程,结合rxjava,并将其封装在中进行管理,同时处理数据库升级。
2024-09-19 09:49:24
1177
原创 谷歌官方对于Kotlin 学习的最佳途径
对于没有Android应用编程经验的初学者新开设的kotlin构建Android应用的在线课程,该课程提供了逐步指导,来帮助您使用 Android Studio 构建应用以及在 Android 设备 (或虚拟设备) 上运行应用。对于具有编程经验学者,可依次学习以上三个 Kotlin 免费培训课程,如果打开以上网址报错,可将google.cn改成com(需翻墙)。对于您具有java编程经验,想转为kotlin,可参考该课程。编程学者也可以直接参考官方文档查找适合自己的课程。
2023-07-12 19:06:24
317
原创 Android 实现应用桌面角标
1、小米手机官方文档:文档中心 /** * 小米手机创建通知信息并创建角标 * * @param context * @param num */ public static void setXiaoMiBadgeNum(Context context, int num) { Log.e(TAG, "--------setXiaoMiBadgeNum----------"); NotificationManag
2022-03-19 00:42:41
10282
5
原创 使用TabLayout实现仿今日头条的导航页效果
在之前做项目的时候,想要去实现类似今日头条那种导航页效果,大家可能会去githug上找一些开源框架,比如ViewPagerIndicator,没错,在我刚不如安卓开发这一行业的时候,就是使用这个框架,不过在Android5.0棒棒糖之后,谷歌官方api中新增了自己的一个叫做TabLayout的控件以实现类似效果。刚好最近做项目中使用到过,便趁着空闲时间整理下,方便自己以后用到就可以直接拿来使用了,
2016-09-09 17:04:52
2665
原创 Android Studio教程(六)之AS插件
在公司第一次接触Android Studio时的感受并没有像传说中的那么好使用,相反遇到的各种问题弄得我头都打了,不过经过几天的使用下来,发现AS确实比Eclipse好用不知一丢丢啊,原因就是AS的各种插件真是太神奇了,给开发带来了极大的便利啊。由于时间原因,先空着,等有时间继续。
2016-06-10 21:27:32
733
原创 Android Studio教程(五)之Gradle
一、Gradle基础1、Gradle概念Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。2、Gradle构建Android Studio使用Gradle构建工具,Eclipse的ADT插件使用的是Ant构建工具。要知道构建的概念首先了解下程序的生成过程,可以百
2016-06-10 21:15:18
570
原创 Android Studio教程(四)之AS窗口
在了解打开AS的界面首先有必要了解下AS的Projects和Module概念。一、AS的Projects和Module概念Project:类似eclipse的工作空间(workspace),里面放置的一个个Module,但是应该放置和同一个Project相关的Module;Module:对应的就是一个独立的可执行程序或者类库。二、AS的项目结构关于AS项目结构的介绍,可以查看在
2016-06-10 18:33:09
2991
原创 Android Studio教程(三)之AS的设置
一、Setting-AS的设置设置窗口如下图: 1、Appearance&behavior①设置背景,动画效果这里设置了黑色背景和取消了显示动画(为节约电脑性能可以禁止掉) ②设置menu或者toolBar这里添加了创建class,xml的ToolBar根据个人情况添加 ③系统设置1)打开工程设置①设置是否自动打开上次关闭工程 ,以及退出提示
2016-06-10 18:25:39
1711
原创 Android Studio教程(二)之AS的安装和配置目录介绍
最近公司的项目要使用Studio开发,由于自己还是个studio小白用户,在工作中遇到各种坑,简直是头痛的不要不要的,于是利用这端午的放假时间赶紧学习了一下Studio。一、AS的配置目录在C:\Users\ifengouy\.AndroidStudio2.1目录下有三个文件config:用户配置文件,用户的个人设置-->注意备份restart:不用关心system:运行的生成
2016-06-10 17:35:43
5047
原创 Android中ProgressDialog的使用
1、ProgressDialog简介ProgressDialog,进度条对话框,可以设置水平进度条和圆形进度条,其中圆形进度条是一个不断旋转的动画,没有实际进度;而水平进度条可以设置当前的进度值。2、创建ProgressDialog2.1、创建圆形的ProgressDialog// 进度计数 int iCount = 0; private ProgressDialog dial
2016-06-06 00:36:20
667
原创 Android中AlertDialog使用
1、Dialog简介Dialog通常是一个小窗口,出现在当前activity的前面。底层的activity失去焦点Dialog接受所有的用户交互。Dialog通常用于通知应用程序的进程应该中断用户和执行任务(如一个进度条或登录提示)。在Android应用中,有多种对话框:Dialog、AlertDialog、ProgressDialog、时间、日期等对话框,他们之间的继承关系如下:
2016-06-05 17:33:30
598
原创 Win10下eclipse中打开图片乱码
以前用win8.1系统开发的时候,在eclipse中打开图片乱码,而在win10系统下,就出现打开乱码的情况,原因就是win10系统把默认的照片查看器给隐藏了。鉴于有几个刚入门Android开发的朋友遇到这个问题,就通过博客记录下来吧,为后面刚入手win10系统的朋友们提供参考吧。当你出现打开图片式一堆乱码的文字时,你可通过如下步骤解决:点击Window- preference-gen
2016-06-04 17:19:13
2119
原创 Android中dip和px的互转
1、dip 转 px公式 : -- 基本公式 : px / dip = dpi / 160;-- 计算公式 : px = dpi / 160 * dip; 一些概念解析 : -- dpi 概念 : dpi (dot per inch), 每英寸像素数 归一化的值120 160 240 320 480;-- density概念:每英寸的像素数,精准的像素数,可
2016-06-04 17:00:28
363
原创 保存Activity被系统回收前的状态
Activity被销毁的两中情况Activity被销毁的情况大致可分为两种。一是正常行为。如当用户按了手机的back键或者activity调用自己的finish()方法而被销毁。另一种是非正常行为。如activity处于stop状态而且长期没有被使用,或者是前台的activitiy需要更多的资源因此系统必须关闭后台进程以回收内存。Activity状态能保存的情况当activit
2016-06-01 00:03:38
3914
原创 Android screenrecord录屏教程
1、Android真机录屏简介Android 4.4(“KitKat API 19)介绍了screenrecord shell命令, 这使开发人员使用adb shell screenrecord 命令便可记录设备的屏幕作为一个mp4视频文件。这里要求platform tools(即adb)必须升级到V19以上。2、Android录屏实现通过 adb shell screenreco
2016-05-30 08:01:02
2831
原创 关于质数的算法
质数(prime number)又称素数,除了1和它本身以外不再有其他的除数整除,最小的质数是2。算法:用这个数分别去除2到这个数的一半,如果能被整除,则表明改数不是素数。用java代码表示如下:private static boolean isPrime(int n) { if (n < 2) { return false; } else if (n == 2) {//2是最
2016-05-29 23:34:07
440
原创 递归算法
递归算法定义:递归算法就是在当前的函数中直接或间接的调用自己并传给相应的参数的算法。递归函数的特点(1)函数要直接或间接调用自身。(2)要有递归终止条件检查,即递归终止的条件被满足后,则不再调用自身函数。(3)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。1、使用递归算法求解斐波那契数列Fibonacci数列即斐波那
2016-05-29 21:23:05
493
原创 排序算法
1、直接插入排序直接插入排序是插入排序的一种,插入排序还包括希尔排序、折半插入排序。插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。算法:首先在当前有序区R[1..i-1]中查找R[ i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的元素均后移一个位置,腾出k位置上的空间插入R[i]。 public static void i
2016-05-29 20:05:26
263
原创 反转算法
1、数组反转如:{1,2,4}反转后的数组为{3,2,1}。算法描述:将第1个数和第n个数替换,第2个数和第n-1个元素替换,直到左边元素索引大于右边。private static void reverseArr(int[] arr) { for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
2016-05-29 16:57:57
1017
原创 Android Screen Monitor真机抓屏教程
Android Screen Monitor (ASM) 是一个监控设备或模拟器屏幕的工具。下载ASM:https://code.google.com/archive/p/android-screen-monitor/环境变量设置安装jdk1.5以上的版本,并配置Path为java bin目录。安装Android SDK并需同时设置Path为platform-tools和too
2016-05-24 23:34:29
3163
原创 Android性能优化之Java代码优化
1、降低执行时间1.1、使用缓存缓存主要包括对象的缓存、IO缓存、DB缓存、网络缓存,对象缓存能减少内存的分配,IO缓存减少磁盘的读写次数,网络缓存减少网络传输,DB缓存较少Database的访问次数。因为在内存、文件、数据库、网络的读写速度中,内存是最优的,且速度数量级差别,所以尽量将需要频繁访问或访问一次消耗较大的数据存储在缓存中。Android中常用的缓存:1)线程池
2016-05-11 21:49:58
417
原创 Android性能优化之布局优化
1、布局原则1.1、使用RelativeLayout和LinearLayout尽量多使用RelativeLayout和LinearLayout。在布局层次一样的情况下,建议使用LinearLayout代替RelativeLayout(因为LinearLayout性能要稍高一点);在结构层次复杂的时候建议使用RelativeLayout(因为RelativeLayout能简单实现Li
2016-05-11 21:22:38
341
原创 Android性能优化之内存优化
1、内存溢出的原因1.1、内存泄漏内存泄漏和内存溢出的区别:内存泄漏:程序中存在对无用对象的引用,导致GC无法回收。内存泄漏最终会导致oom。内存溢出:程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。1.2、保存多个耗用内存过大的对象应用的某些逻辑操作消耗掉大量内存(譬如加载一张不经过处理的超大超高清图片等)导致超过阈值。2、内存优化2
2016-05-08 18:02:40
1135
原创 MotionEvent的getX()和getRawX()的区别
在自定义View的过程中,我们总是会接触到MotionEvent对象,而总是会对该对象的getX(),getY()和getRawX(),getRawY()的表示的意思模糊不清,遂写下这篇博客,以便帮助和我一样,曾经被这个问题困扰的学者。getX():表示控件相对于自己左上角为原点的X坐标getRawX():表示相对于以屏幕左上角为原点的X坐标(该屏幕左上角是手机屏幕左上角,不管该Activ
2016-05-08 16:19:54
532
原创 Android Scroller分析
Android Scroller分析Scroller,这个对象里有startScroll方法的重载,以提供的起始点和将要滑动的距离开始滚动。public void startScroll (int startX, int startY, int dx, int dy) startScroll(int startX, int startY, int dx, int dy, int dur
2016-05-08 12:44:09
480
原创 Android getScrollX()详解
在开发中相信大家在自定义View时会时不时的使用getScrollX()方法,为了便于之后的开发工作,本篇博客主要记录了我对getScrollX()方法的理解。getScrollX:Return the scrolled left position of this view意思是返回当前滑动View左边界的位置,其实获取的值就是这块幕布在窗口左边界时的x坐标,而幕布上面哪个点是原点(0,0)呢
2016-05-07 15:44:29
7044
9
原创 自定义滑动菜单SlidingMenu
1、分析:一个是菜单(menu)的布局,一个是内容(content)的布局。两个布局横向排列,菜单布局在左,内容布局在右。初始化的时候将菜单布局向左偏移,以至于能够完全隐藏,这样内容布局就会完全显示在Activity中。然后通过监听手指滑动事件,来改变菜单布局的左偏移距离,从而控制菜单布局的显示和隐藏。原理图如下:
2016-05-07 14:29:15
771
原创 版本控制(下)——使用Git将代码托管到github
不关你是一个it新人还是一个大牛,最基本的你需要一个github账号,这样你便可以在github上分享自己的成果或者下载被人优秀的项目。第一步——注册一个github账号:百度搜索github,进入官网注册即可,至于怎么注册不用明说了,相信大家都会。 第二步——登陆github:进入github官网,点击Sign in即可登录Github: 第三步——创建项目登陆git
2016-05-07 13:13:39
1997
原创 版本控制(上)——Git使用教程
1、Git简介 Git是用于Linux内核开发的版本控制工具,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git基本交互流程图如下: 使用Git进行版本控制有两种方式,一是使用msysgit命令行方式,另一种则是使用图形化工具TortoiseGit,但两种方式都需安装msysgit。1)msysgit是Windows版
2016-05-06 14:50:10
4623
原创 自定义View解析之自定义View实战(四)
前面我们对自定义View的理论有所认识,接下来,我们通过几个自定义View的例子来加深对自定义View的理解。1、定义带有删除按钮的EditText需求分析:如下图 其实就是在EditText右边加入一个小图标,当点击小图标就可以清楚输入框里面的内容,因为android系统中不存在这样的控件,因此,我们需自定义一个控件实现上面的功能。在自定义控件时主要有如下功能:1)添加图
2016-05-05 17:35:14
439
原创 Android自定义View解析之自定义View类型(三)
自定义View的实现方式可以可以分为三种,自定义控件、自定义组合控件、以及自定义已有控件的子类。1、自定义控件自定义控件就是自定义一个android控件中不存在的view,这个View上所展现的内容全部都是我们自己绘制出来的。绘制的代码是写在onDraw()方法中的。2、自定义组合控件不需要自己去绘制视图上显示的内容,而只是用系统原生的控件就好了,但我们可以将几个系统原生的控件组合
2016-05-05 17:27:53
456
原创 Android自定义View解析之LayoutInflater类(三)
1、LayoutInflater介绍顾名思义,LayoutInflater主要是用于加载布局的,在Activity中加载布局的任务通常都是通过调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的。获取LayoutInflater的实例,有两种方法:1)LayoutInflater layou
2016-05-05 17:23:14
737
原创 Android自定义View解析之视图状态及视图重绘(二)
1、最常用的几种视图状态1. enabled表示当前视图是否可用。可以调用setEnable()方法来改变视图的可用状态,传入true表示可用,传入false表示不可用。它们之间最大的区别在于,不可用的视图是无法响应onTouch事件的。2. focused表示当前视图是否获得到焦点。有两种方法可以让视图获得焦点,即通过键盘的上下左右键切换视图,以及调用requestFocus
2016-05-05 17:18:13
1823
原创 Android自定义View解析之View的绘制流程(一)
1、View的绘制流程在了解自定义View之前,首先需要知道View系统的绘制流程是从ViewRoot的performTraversals()方法中开始的,然后在其内部调用View的measure()方法对View进行测量,在measure()方法结束后,继续会在该方法内调用View的layout()方法来对视图进行布局,在layout()结束后,便会继续在该方法内调用View的draw()方
2016-05-05 17:01:44
527
原创 Java设计模式之观察者模式
1、概念观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、或者源-监听器(Source/Listener)模式。观察者模式对象之间的关系是一对多的关系,当一个对象发生变化时,其他依赖该对象的对象都会收到通知,并且随着变化。2、运用观察者模式所涉及的角色有:抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如Ar
2016-05-05 16:55:10
293
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人