android
文章平均质量分 72
帅气好男人_Jack
找工作,求推荐成都地区的工作。
展开
-
JetPack Compose理解
每次点击该按钮时,调用方都会更新 clicks 的值。Compose 会再次调用 lambda 与 Text 函数以显示新值;此过程称为“重组”。不依赖于该值的其他函数不会进行重组。重组过程组合只能通过初始组合生成且只能通过重组进行更新。重组是修改组合的唯一方式。重组通常由对 State 对象的更改触发。Compose 会跟踪这些操作,并运行组合中读取该特定 State 的所有可组合项以及这些操作调用的无法跳过的所有可组合项。在重组期间,可组合项调用的可组合项与上个组合期间调用的可组合项不同,Com原创 2021-09-17 09:04:58 · 1121 阅读 · 0 评论 -
Android开发工具视频Android 12(S)准备
Android开发工具视频Android 12(S)准备适配步骤下载最新的Android studio工具,点我到官网下载最新的吧!最新版的studio规定jdk使用必须至少11,所以请移步下载jdk吧,我用的是jdk16,点我跳转下载jdkwrapper文件夹下面的gradle.properties里面的gradle地址建议用7以上,如下:https\://services.gradle.org/distributions/gradle7.0.0-bin.zip同时,也建议根原创 2021-08-28 11:35:26 · 2724 阅读 · 1 评论 -
Android权限浅析
Android权限浅析权限,是对想要操作文件或者设备的使用者的约束;使用者拥有某个文件的操作权限方可对齐操作,反之则无法操作文件!浅谈Linux的权限如上图,是Linux系统中的一个JCamera文件夹,d表示一个文件夹,r可读,w可写,x表示可以执行;这三位是固定顺序,假如其中某一项为‘-’,则表示不拥有此项权限;drwxr-xr-x : 表示jackzhous文件拥有者UID,具有可读可写可执行的权限,用户组staff有可读和可执行权限,其他用户有可读和可执行权限;在Linux系统底层对读写原创 2020-12-23 12:28:36 · 312 阅读 · 0 评论 -
Android OTA使用及原理浅析
Android OTA使用及原理浅析OTA(over the air)通过无线网络下载、删除更新等操作,完成业务操作;在Android系统方面,使用OTA可以解决系统升级,而其差分包会增量更新系统,具有占比流量小,适用于Android端;制作OTA升级包OTA包分区全量包和差分包;全量包包含编译整个系统后的所有内容,差分包则是在两个全量包基础上,对比产生的差分包;假如你有两个全量包Full A和Full B,此时设备上的系统是A版本,你之多的差分包C = Full B - Full A,则可以使用O原创 2020-12-11 11:59:09 · 2883 阅读 · 0 评论 -
Android开发利器之注解
Android注解笔记简介关于注解的文章网上也很多了,文章也很不错,本文总结记录在开发注解时所踩得坑,希望对你在开发中有所帮助。不太清楚注解是何物?以及如何开发使用注解可以参考一下链接:秒懂,Java 注解 (Annotation)你可以这样学Android中注解的使用Android编译时注解注解概念注解,可以理解为一种标签!对代码贴上(标签)注解,能使我们快速认识代码,以及辅助代码完成某一特定的功能。注解@Retention(CLASS) @Target(FIELD)publi原创 2020-05-14 11:01:32 · 423 阅读 · 0 评论 -
Android Activity生命周期搬运与理解
Android Activity生命周期搬运与理解导读众所周知Android的Activity生命周期设计从OnCreate开始到OnDestroy完结,那设计Activity的工程师为何要做出这样的设计,每个生命周期方法的意义又是什么呢?知其然,且知其所以然,才能更好帮助我们写出更优秀的代码,今天再次聊聊他们的意义,如你有高见,请在评论区留言Activity各个生命周期方法onCr...原创 2020-05-06 16:39:48 · 739 阅读 · 0 评论 -
ThreadLocal内部是个啥玩意?
简介ThreadLocal和Synchronized一样,都是用于处理线程间变量问题;后者有用于等待方式处理变量,前者用多个副本处理对象,时间和空间牺牲;那么ThreadLocal内部是如何用副本的形式管理的呢?继续往下看ThreadLocal一般使用ThreadLocal<String> t = new ThreadLocal<>();t.set("name");...原创 2020-02-21 11:39:45 · 174 阅读 · 0 评论 -
Java lambda表达式理解
简介lambda表达式作为java8的新特性,面向函数式编程,使代码更加简洁,同时也提高编程效率;我们作为开发者,不仅要学会用,还要理解其背后的运作原理lambda一般使用lambda使用的规则大致为:(参数)−>{代码主体}(参数) -> \{ 代码主体 \} (参数)−>{代码主体}左边括号不是必须的,当只有一个参数时可以省略;右侧大括号也不是必须的,如果只有一...原创 2020-02-12 15:31:09 · 554 阅读 · 0 评论 -
你真的懂了Camera的尺寸参数了吗?
你真的懂了Camera的尺寸参数了吗?本文针对自定义相机开发中,使用opengl渲染时,引发的最终视图变形问题开发相机的过程中,你是否遇到过你想要的是右边图效果,结果出来的却是左边图效果,如果你遇到了,本文你遇到的问题或许有帮助;引发上面的不同效果,就是因为一些列的尺寸所引发的问题。自定义相机大致框架一般来说,自定义相机设计如上图:底层camera配置好预览参数、方向等尺寸以及配...原创 2020-01-10 15:34:33 · 3218 阅读 · 0 评论 -
Android系统自带样式
Android系统自带样式(android:theme)(转)android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏android:theme="@android:style/The转载 2014-10-21 21:55:00 · 349 阅读 · 0 评论 -
Calendar类简介
Calendar类 从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstan转载 2014-11-10 22:13:43 · 492 阅读 · 0 评论 -
ViewPage的监听类SimpleOnPageChangeListener
ViewPage使用时,最关键的代码就是setOnPageChangeListener,传入一个ViewPager.SimpleOnPageChangeListener对象。ViewPager.SimpleOnPageChangeListener是个接口,有三个方法,下面做介绍。注:ViewPager有两个操作,一个是用手指滑动翻页,一个是直接setCurrentItem(一般用于点击上面的t转载 2014-11-11 22:59:54 · 1763 阅读 · 0 评论 -
线程池详解
https://www.jianshu.com/p/ae67972d1156转载 2014-11-23 17:18:42 · 392 阅读 · 0 评论 -
android事件分发机制
判断一个事件是传给viewgroup1还是2,比如1是横向滑动,2是竖直滑动的话,通过ViewConfiguration.get(context).getScaledTouchSlop();来判断,横向距离大于此变量,并且纵向距离小于此距离才能判定问横向滑动;不然的话,依靠手的一般的竖直滑动,稍微快一点就会使变动距离大于上面的变量,从而时子view的竖直监听接收不到事件,导致横向滑动不了多少(dx原创 2015-01-29 21:50:44 · 369 阅读 · 0 评论 -
uses-permission权限列表
android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在checkin数据库中,改值可以修改上传android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi来获取粗略的位置android.permission.ACCESS_FINE_LOCAT转载 2014-12-23 22:04:41 · 482 阅读 · 0 评论 -
导入android工程问题解决
问题描述:error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'. 这是因为在style文件里面调用了framework对应的Theme资源,而当前项目路径下的framework路径和本工程环境下的framework不一致,删原创 2015-02-27 10:46:52 · 463 阅读 · 0 评论 -
android动画 -- view Animation
android动画: 分为三种:View Animation、Drawable Animation和Property AnimationView Animation只能用于View组件上,并且只能完成基本的动画效果(旋转/透明度渐变/尺寸渐变/移动),它无法做到背景颜色的改变等;并且这些动画效果也只是改变了draw时的绘制效果,并没有改变组件实际的尺寸和位置,例如Button使用这种效果时原创 2015-10-19 23:30:05 · 378 阅读 · 0 评论 -
sqlite学习
version 2.0 Sqlite是一种轻量级的数据库,设计于在嵌入式设备上,占用资源少,通常在嵌入式设备上只占用几百kbSQLiteOpenHelper 使用SQLiteDatabase需要依靠辅助类SQLiteOpenHelper来对数据库进行操作;继承该类即可 它里面的方法: OnCreate() 第一次创建数据库时执行 OnOpen() 打原创 2015-10-08 21:21:11 · 540 阅读 · 2 评论 -
android事件分发机制
android事件分发机制: 我们在屏幕上进行一系列的点击/滑动/抬起等动作时所触发的事件,都是在与android的组件进行交互,而几乎所有的组件都是继承于View或ViewGroup,那他们在android应用中是如何被传递的呢?事件分发离不开三个重要的方法: public boolean dispatchTouchEvent(MotionEvent event)原创 2015-10-12 20:52:53 · 368 阅读 · 0 评论 -
viewgroup自定义组件 --- 侧滑组件
继承ViewGroup制作的自定义组件常常是一些布局或者组合组件: 和View的自定义组件类似,需要重写onMeause和onLayout测量组件的宽高和布局,因为viewGruop里面包含了子组件,所有在测量和定位的时候都是以子组件为中心进行测量和定位;不需要重写onDraw方法,因为viewGroup是一个容器类,我们只需要调用它的子组件的draw方法即可还要注意事件分发时,要重写on原创 2015-10-12 20:50:36 · 449 阅读 · 0 评论 -
view 自定义组件 --- 水滴组件
继承View可以制作出单独的组件,自己有特色的事件:需要重写几个方法:1. 构造器;一个是参数含有Context和另一个AttributeSet context的构造器一般用于在Java代码中new的时候用到,而attributeset则用于在xml中写一些控件属性时候用到;另外我们可以在android工程中的values目录下编写一个attribut.xml文件,里面主要在<declare-原创 2015-10-12 20:52:21 · 1241 阅读 · 1 评论 -
android学习笔记 sufaceView
Android之SurfaceView学习(一)首先我们先来看下官方API对SurfaceView的介绍SurfaceView的API介绍Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface an转载 2014-08-22 21:50:14 · 624 阅读 · 0 评论 -
android代码实现app升级
android 在APP需要更新的时候是如何更新的呢? 升级分为普通升级和增量升级,增量升级是差分升级,类似于把补丁,把新的特性的文件下载到客户端,在在客户端上进行组装,而不需要把整个安装包重新下载到客户端,减少流量的传输; 普通升级就是把整个apk文件下载到客户端安装,替换掉旧的app应用1. 如何区分app版本需要升级? 谷歌建议我们使用android清单文件里面的配置原创 2015-10-13 21:36:23 · 855 阅读 · 0 评论 -
dom解析xml
dom是一种用于XML文档对象模型,可用于直接访问xml文档的各个部分,在DOM中文档模拟为树状,其中xml语法的每一个组成部分都表示一个节点,DOM允许用户遍历文档树,从父节点移动到子节点;操作简单,方便由于dom是直接将整个xml文件导入进来,所有对内存资源也是一个不小的冲击,所有,DOM只适合那小小型的文档解析,在对大型文档解析的时候要格外注意以Person的xml文件为例读取:<person原创 2015-10-13 23:41:13 · 416 阅读 · 0 评论 -
pull解析xml
Pull解析XML: 和sax类似,也是基于事件驱动的解析xml,但是比sax使用更方便简单;android也自己封装了pull的解析器XmlResourceParser;常用的XML pull的接口和类:XmlPullParser:该解析器是一个在org.xmlpull.v1中定义的解析功能的接口。XmlSerializer:它是一个接口,定义了XML信息集的序列。XmlPullPar原创 2015-10-14 20:38:18 · 422 阅读 · 0 评论 -
sax解析xml
sax解析XML原理,基于事件驱动机制,在文档开头、标签开头等地方触发事件,解析速度快、占用内存少,但使用比较复杂,比较适合移动终端的使用方式解析步骤: ①创建XML解析处理器。 SAXParserFactory factory = SAXParserFactory.newInstance(); ②创建SAX解析器。 SAXParser parser = factory.原创 2015-10-14 23:23:28 · 354 阅读 · 0 评论 -
json解析
json (javascript object notation)轻量级的数据交换格式,一般多用于web服务器和客户端的数据交互json数据格式分两种: jsonObject和jsonArray 前者是一种无需的键值对方式存储数据,例如{“name”,”zhou”} key必须为string类型value可以为其他许多类型 后者是一种有序的value集合,类似于数组原创 2015-10-14 20:57:54 · 311 阅读 · 0 评论 -
http
Http模式: 以Http协议在服务端和客户端之间通信服务端: 首先,需要在Tomcat的安装文件下的conf目录下的server.xml文件的Host节点下添加 java web server,在MyEclipse上面;建立web server工程,配置Tomcat配置方法参考网站http://wenku.baidu.com/link?url=AGUpl3原创 2015-10-12 20:55:19 · 446 阅读 · 0 评论 -
标准java http和 apach httpclient总结
http除了标准的java接口外,还有apach开源项目也提供了http的api,简称httpclient 这种http的使用更为方便简单,httpclient封装了http的请求、身份验证和连接管理等特性,它主要实现了abstractHttpClient、DefaultHttpClient和AndroidHttpClientandroidHttpClient是使用android原生的代码原创 2015-10-14 23:22:03 · 643 阅读 · 0 评论 -
fragment
fragment定义: fragment是Activity的一部分,fragment不能独立存在,只能镶嵌在fragmentActivity中存活,一个fragmentActivity可以包含多个fragment,可以重复包含一个fragment,fragment有自己的生命周期。fragmentActivity可以动态添加或删除fragmentfragment的生命周期: 一般原创 2015-10-14 23:33:11 · 404 阅读 · 0 评论 -
surfaceView
子线程一改变作画内容,改变一次休眠一次:public class WelcomeViewGoThread extends Thread{ WelcomeView welcomeView; private int sleepPan = 150; private boolean flag = true; //循环标志 public WelcomeViewGoThread(WelcomeV原创 2015-10-15 23:05:16 · 377 阅读 · 0 评论 -
android屏幕录像
实现原理:利用Java反射机制,获取WindowManagerImpl,该类里面有一个mViews的参数,它就是存放最终输出到界面的view视图,把这些视图保存在文件中为png,最后播放的时候从文件中拿出来即可。一个Activity,一个后台Service既可以完成:package com.jack.screenrecorder;import java.io.File;i原创 2015-11-16 21:21:23 · 624 阅读 · 1 评论 -
android应用启动流程
原创 2015-12-01 11:02:19 · 385 阅读 · 0 评论 -
劫持Activity
Activity劫持概念:我们登陆正常的APP界面时,被恶意程序监听到,模仿正常界面启动我们的Activity;例如我们支付界面被劫持后,恶意软件启动自己的Activity来模仿支付界面,诱使你输入账号和密码;从而达到劫持效果劫持核心代码原理:1. 读取当前运行的app进程,判断在前端显示并且其他属性,得到劫持的app后启动自己模仿的activity即可2. 定周期的执行该原创 2015-12-01 20:56:59 · 1469 阅读 · 0 评论 -
子线程改变UI线程的方法
第一种:handler机制在子线程中创建handler,并把此handler的looper与主线程UI线程绑定在一块,这样它就和UI线程公用一个消息队列messageQueue(Looper对象里面有消息队列成员),在将改变主线程的代码通过runnable接口提交给主线程执行;例子:Thread t = new Thread(){ @Override pu原创 2015-12-21 22:51:55 · 1191 阅读 · 0 评论 -
android 彻底杀死进程
http://263229365.iteye.com/blog/1283914原创 2016-01-22 21:59:05 · 4852 阅读 · 0 评论 -
ffmpeg解码核心代码理解
将一个视频文件解压转为位YUV文件的代码理解: final conclusion --- 解码核心总结: 1. 将总媒体结构体AVFormatContext读到AVPacket里面去 --- av_read_frame(AVFrameContext *, AVPacket *); 一次读一帧 2. 判断读取后的原创 2016-02-21 10:57:00 · 508 阅读 · 0 评论 -
ffmpeg推流器
av_strerror(errorCode, char *buf, int buf_len); //可以用于转换ffmpeg返回的错误码,转换为字符信息``int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd);//它的作用是计算 "a * b / c" 的值并分五种方式来取整.原创 2016-03-07 11:32:51 · 1015 阅读 · 0 评论 -
android WIFI开发
android wifi开发: wifi技术是一种无线联网技术,通常使用无线路由器制造一个wifi热点,我们的终端设备就可以打开wifi进行互联,那么在android手机上是如何实现与无线路由器的热点互联的呢?android wifi开发的api都在android.net.wifi包下面,它下面主要包括以下几个类:1. ScanResult 打开wifi扫描到的无线网络接入点,包括接入原创 2015-10-13 22:43:14 · 611 阅读 · 0 评论 -
获取manifest清单文件的meta-data数据
转自: http://www.2cto.com/kf/201303/194824.html android 开发中: 在AndroidManifest.xml中,元素可以作为子元素, 被包含在、 、和元素中,不同的父元素,在应用时读取的方法也不同。 1 :在Activity应用元素。 xml代码段:转载 2016-01-25 17:14:21 · 1791 阅读 · 0 评论