![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 78
博艺
这个作者很懒,什么都没留下…
展开
-
Android 动画
android:duration 动画持续时间android:fillAfter 为true动画结束时,View将保持动画结束时的状态android:fillBefore 为true动画结束时,View将还原到开始开始时的状态android:repeatCount 动画重复执行的次数android:repeatMode 动画重复模式 ,重复播放时restart重头开始,reverse重复播放时倒叙回放,该属性需要和android:repeatCount一起使用。原创 2023-02-01 15:05:38 · 1370 阅读 · 0 评论 -
防止Android点击app图标应用重启
关于app第一次安装,进入主页后再进入一个界面A,然后home键回到桌面,再点击app图标,应该显示哪个界面?1. 第一步:删除第一个Activity的启动模式,或者改为“standard”。第二步:在application中去设置持久化为 true,防止app挂后台被回收。造成这种问题的主要原因:国内手机厂商问题,以及手机自带的第三方手机管家。3. App 重新加载启动页的时候,判断是否已经加载过一次。但是那是相对于Google原生的系统来说,是界面A。有的人肯定说是界面A。原创 2022-11-03 17:38:28 · 1250 阅读 · 0 评论 -
Kotlin Sealed Class
Sealed Classes 受限制: 必须在同一文件中,或者在 Sealed Classes 类的内部中使用,在Kotlin 1.1 之前,规则更加严格,子类只能在 Sealed Classes 类的内部中使用。正如你所看到的,在 Sealed Classes 内部中,使用 object 声明时,我们可以重用它们,不需要每次创建一个新实例,当这样使用时候,它看起来和枚举非常相似。如果你不需要多次实例化,也不需要不提供特殊行为,或者也不需要添加额外的信息,仅作为单个实例存在,这个时候使用枚举更加合适。...原创 2022-08-18 14:32:10 · 507 阅读 · 0 评论 -
mac环境下Android 反编译
一、需要的工具apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。 dex2jar:将反编译后的classes.dex文件转化为.jar文件。 jd-gui:用于将.jar文件转换成java代码。二、反编译步骤第一步:使用apktool工具对APK进行反编译1. 下载apktool下载apktool2. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下菜单栏点击「原创 2021-10-08 16:43:08 · 218 阅读 · 0 评论 -
Android 加固厂商特征
爱加密libexec.so, libexecmain.so,ijiami.dat娜迦libchaosvmp.so , libddog.solibfdog.so梆梆libsecexe.so, libsecmain.so梆梆企业版libDexHelper.so , libDexHelper-x86.so360libprotectClass.so, libjiagu.solibjiagu.so, libjiagu_art.solibjiagu.so, libjiagu_x86.so.原创 2021-10-08 15:42:55 · 1228 阅读 · 0 评论 -
Android从码农到架构师的技术成长之路
在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。初级我对初级研发攻城狮的定义是掌握基础的android知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。需要的技能有:掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\Relative原创 2021-07-07 17:33:01 · 194 阅读 · 0 评论 -
一篇文章搞懂android存储目录结构
存储分类内部存储内部存储位于系统中很特殊的一个位置,对于设备中每一个安装的 App,系统都会在 data/data/packagename/xxx 自动创建与之对应的文件夹。如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。对于这个内部目录,用户是无法访问的,除非获取root权限。String fileDir.原创 2021-03-24 14:51:39 · 491 阅读 · 0 评论 -
Doze和App Standby模式下的Android应用适配
从Android6.0(API23)开始, Google为Android加入了两种省电特性,通过管理Android应用(以下简称应用)在非充电状态下的设备中的运行策略来达到延长用户的Android设备使用时间的目的。这两种特性存在一定的差别,Doze模式通过延缓应用在设备长时间待机状态下对于CPU和网络资源的使用来实现节能;而App Standby则是通过延缓最近未被使用的后台应用对于网络的请求来达到同样的目的。Doze和App Standby在Android6.0及以上的Android设备中可以影响所原创 2021-03-22 16:10:38 · 331 阅读 · 0 评论 -
Android性能优化 -- Systrace工具
Systrace简介一般来说,我们的机器以60帧/秒显示时,用户会感觉机器很流畅,如果显示时出现丢帧的情况,需要知道当前整个系统所处的状态,这个时候Systrace便是最佳的工具选择。Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集Android关键子系统(如Surfaceflinger、WindowManagerService等framework部分关键模块、服务)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。Systr...原创 2021-03-08 16:44:30 · 639 阅读 · 0 评论 -
最强 Android Studio 使用小技巧和快捷键总结
写在前面本文翻译自Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键。 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28)、编码技巧(29 – 49)和调试技巧(50 – 62),分成三个部分。每个小技巧都配有 gif 动图,由于原图在 google photo 上,加载较慢,本文全部转存到七牛上了。由于能力有限,翻译过程中难免有所疏漏,如发现错误或问题,请在评论中提出,谢谢.原创 2021-03-08 16:43:40 · 301 阅读 · 0 评论 -
Android网络安全之NetworkSecurityConfig
google在android p为了安全起见,已经明确规定禁止http协议额,但是之前很多接口都是http协议,我们一般是这样解决的:在res目录下创建xml目录,然后随便创建一个.xml文件,里面内容如下:<span style="color:#000000"><code><?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config clear原创 2021-01-28 12:47:08 · 1597 阅读 · 0 评论 -
Android Mac 获取 Jks 的 SHA1 和 PKCS12 转换
bogon:Home jonny$ keytool -list -keystore /Users/jonny/Desktop/paytm-sport-fantasy.jks输入密钥库口令: 密钥库类型: jks密钥库提供方: SUN您的密钥库包含 1 个条目fantasy, 2021-1-18, PrivateKeyEntry,证书指纹 (SHA1): 74:6D:14:06:23:1D:79:B5:80:A2:FDF:89:02Warning:JKS...原创 2021-01-19 16:08:57 · 416 阅读 · 0 评论 -
Android 进阶 APP优化 包体积优化
一、谷歌官方对流畅度的解释:Android流畅运行,需要运行60帧/秒, 则需要每帧的处理时间不超过16ms。二、IOS系统比ANDROID系统流畅的原因因为Android系统UI的框架设计的问题。在iOS中UI渲染过程具有绝对的优先等级,当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止,系统会将所有资源用于渲染UI过程。而在Android系统中UI渲染过程的优先级别却没有那么高,也就是说当你触摸Android手机屏幕的时候,系统后台的程序并没有停止,仍然在继续运行之中,.原创 2020-12-02 15:31:21 · 529 阅读 · 2 评论 -
ReactNative与Android通信模块及核心实现类
开始之前本文前上部分主要拆解一些基础的原理,由浅到深;后半部分讲解集成模块实现,你也可以直接阅读后半部分,快速实现模块集成。文中着重在Android端帮助大家理解React Native。下方先提前介绍一些关键类。ReactActivity:默认所有的Activity都继承它。 ReactNativeHost:帮你"hold"住ReactInstanceManager。 ReactActivityDelegate:ReactActivity的逻辑代理实现。 ReactRootView:Re原创 2020-08-08 15:54:54 · 278 阅读 · 0 评论 -
React Native的资源的打包流程
一、引用 使用过React Native的应该知道,依赖的库都是通过npm install安装,安装后的所有源码存在于node_modules文件夹中,如果依赖的库需要原生代码的支持,需要通过react-native link实现原生代码模块的引用注册。 而手动针对Android添加过link的应该熟悉,react-native link实际上是通过脚本,在setting.gradle文件中引入模块在node_modules原生路径,然后在 app 的module的build.gradle中,通过.原创 2020-08-08 15:50:04 · 1719 阅读 · 0 评论 -
Android获取设备唯一ID(优化方案)
最近,因公司产品及客户需要,领导让我研究免存储设备ID,以及给出一个设备ID最佳的方案(可与存储相结合)。在研究过浏览器的fingerprient2js后,颇有心得,并且看网上似乎木有完美的解决方案,于是写了这篇文章,仅供需要的开发者参考。(该算法暂未进行验证,这里先给出一个jar包,后期我会在SDK中加入调查接口,分两个jar包(测试版和正式版),希望开发者能支持测试版,稳定后使用正式版。)在产品中,首先肯定要尽量避免权限,其次考虑卸载APP后ID不一致的问题,再就是尽量结合存储,降低卸载或重装app时原创 2020-06-16 17:48:30 · 2538 阅读 · 0 评论 -
Android截屏的几种实现
最近我们的APP要求需要截屏功能,网上看了看大致有一下几种实现的方式,由于我们的机器是特定的设备,(类似于广告机,已经ROOT),所以就采用最简单的方式,只需在代码中执行shell命令即可实现,下面就给大家介绍一下各种截屏的方式。方式一 public static Bitmap capture(Activity activity) { activity.getWindow().getDecorView().setDrawingCacheEnabled(true);原创 2020-06-16 11:34:24 · 1866 阅读 · 0 评论 -
语义化版本 2.0.0
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。Alpha 版Alpha 版功能稳定,但功能可能不完整。 在版本处于 Alpha 版状态时,可以添加、移除或更改 AP...原创 2020-04-08 17:30:08 · 136 阅读 · 0 评论 -
神秘的Activity 的task属性android:allowTaskReparenting alwaysRetainTaskState
1.android:allowTaskReparenting 这个属性用来标记一个Activity实例在当前应用退居后台后,是否能从启动它的那个task移动到有共同affinity的task,“true”表示可以移动,“false”表示它必须呆在当前应用的task中,默认值为false。如果一个这个Activity的元素没有设定此属性,设定在上的此属性会对此Activity起作用。例如在一个应用中...原创 2020-04-07 17:40:46 · 450 阅读 · 0 评论 -
Android-APK签名工具-jarsigner和apksigner
一.工具介绍jarsigner是JDK提供的针对jar包签名的通用工具,位于JDK/bin/jarsigner.exeapksigner是Google官方提供的针对Android apk签名及验证的专用工具,位于Android SDK/build-tools/SDK版本/apksigner.bat不管是apk包,还是jar包,本质都是zip格式的压缩包,所以它们的签名过程都差不多(仅...原创 2020-03-19 14:34:41 · 767 阅读 · 0 评论 -
Google Play支付失败问题解决
一、确保Google Play配置正确1、在Google Play Console上传测试版本APK,并发布测试版本确定上传APK的包名、版本号、APK签名 确定APK上传时的Public Key2、在Google Play Console上配置物品3、将测试账号加入测试计划4、确保本地测试包与测试版本APK的包名、版本号、APK签名相同二、 用户支付失败可能原因goo...原创 2019-12-19 15:13:59 · 17934 阅读 · 0 评论 -
Android SDK 开发的一些个人心得
对 SDK 开发的看法SDK 开发和 APP 开发的区别还是很大的。APP 更倾向于用户体验、功能更偏于特定业务、讲究的是快速迭代、快速占领市场。而 SDK 是为 APP 服务的,提供的大多是公共基础服务,如网络请求、打点统计、帐号服务等。下面从几个点说说我的看法。体积和功能可以用三个字形容:小而精。小是指包的体积要尽可能的小,因为业务方接入的时候可能会有这样的抱怨:怎么接了你们的 S...原创 2019-11-20 11:29:49 · 1010 阅读 · 0 评论 -
Android WebView 工作遇坑总结(持续迭代)
微信支付无法拉起微信支付官方文档webview loader url 需要加入Referer做为headeronPageFinished在4.4版本会被多次执行的问题这里不多做赘述,直接参数作者说明参考地址关闭activity视频不停止播放请在activity 生命周期方法中 调用webview 相关的生命周期方法webview.destro...原创 2019-11-11 18:26:44 · 371 阅读 · 0 评论 -
解决Android Toobar与状态栏重叠
觉得toolbar默认高度太高,给toolbar设了一个固定值。测试时发现在4.4系统上会出现与状态栏重叠的现象。给toolbar设了个margin,但是在7.0的系统上又会出现间隙。最后发现只需要在父view里加上下面两行就解决了。android:clipToPadding="true"android:fitsSystemWindows="true"解释一下上面两个布局属性的意思:a...原创 2019-10-24 16:55:59 · 664 阅读 · 1 评论 -
SharedPreferences优化总结
SharedPreferences(后续简称SP)为我们提供了轻量级存储能力,方便了少量数据的持久化。但是由于项目越来越庞大,SP操作使用不当会导致app卡顿,乃至ANR问题。下面介绍一下操作SP的优化点。SP性能优化点SP性能变差的原因有很多。1.原生API的限制主要有以下两方面:(1)IO瓶颈(2)锁性能差2.对SP的不当封装也会间接造...原创 2019-10-24 16:22:02 · 265 阅读 · 0 评论 -
Android - Vibrator及VibrationEffect类详解
一、Vibrator类详解在API级别1(Android1.0)中添加1、基本概念在设备上操作振动器的类。如果您的进程退出,您启动的任何振动都将停止。必须使用带有Vibrator.class参数的Context.getSystemService(Class)或带有Context.VIBRATOR_SERVICE参数的Context.getSystemService(String)来...原创 2019-10-14 15:40:24 · 8015 阅读 · 2 评论 -
SharedPreferences 存储的注意事项
<br />一般我们用到这个都是存储一些数据<br />但是如果要修改或删除已存在的数据 该怎么办呢 <br />修改方式和存储时一样的:<br />SharedPreferences settings = getSharedPreferences(UtilData.userInfo, 0);<br />settings.edit()<br /> .putString("key", keyValue)<br /><br /> .commit();<br />删除:<br />se原创 2011-05-11 11:00:00 · 848 阅读 · 0 评论 -
gravity 和 layout_grativy 区别
<br />LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。<br />举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_g原创 2011-03-22 10:36:00 · 3928 阅读 · 0 评论 -
Padding 与 margin 区别
<br />padding填充的意思,指的是view中的content与view边缘的距离,类似文本中的indent<br />而margin表示的是view的左边缘与parent view的左边缘的距离<br />margin一般用来描述控件间位置关系,而padding一般描述控件内容和控件的位置关系。原创 2011-03-22 10:37:00 · 545 阅读 · 0 评论 -
android 开发问题
<br />1.为什么我刚刚在Eclipse当中创建一个新项目的时候,就会报错?<br />具体原因我不太清楚,貌似是一个ADT的bug。解决的方法很简单,在Eclipse的菜单当中选中Project—>Clean—>选中你刚刚创建的那个项目,然后再点OK,一切就OK了。<br />说明:Clean的作用是针对项目移除之前自动构建的代码,然后重新生成。<br />2.在为Button添加控件的时候,为什么我的代码和你的代码不一样?<br />这个错误是由导入了错误的包导致的。例如:<br />class M原创 2011-03-22 20:40:00 · 680 阅读 · 1 评论 -
改变ListView滑动图片
<ListView android:listSelector="@drawable/list_selector"/><br /><br />list_selector.xml<br /><?xml version="1.0" encoding="UTF-8"?><br /><selector xmlns:android="http://schemas.android.com/apk/res/android"><br /> <item android:drawable="@drawable/se原创 2011-05-12 12:42:00 · 867 阅读 · 1 评论 -
android背景选择器selector用法汇总
<br />一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片<br /> <br /><?xml version="1.0" encoding="utf-8" ?> <br /><selector xmlns:android="http://schemas.android.com/apk/res/android"> <br /><!--默认时的背景图片--> <br /> <item android:drawable="@drawable/pic1" />原创 2011-05-17 11:21:00 · 902 阅读 · 0 评论 -
Android裁剪图片最简单方法
很多网友平时如果需要在Android平台下开发处理图片裁剪的应用,如果感觉实现的逻辑比较麻烦,比如说需要写类此Win32下的橡皮筋类CRectTracker来设置裁剪区域,这里Android开发网给大家一个最简单可靠的方法,通过下面的Intent调用系统的Camera程序的裁剪功能实现图片修剪。Java代码:01.Intent intent = new Intent("com.android.camera.action.CROP"); 02.intent.setClassN转载 2011-04-13 17:47:00 · 3488 阅读 · 0 评论 -
优先存储SDCard ,无sdcard存在手机内存中!
<br />思路:重写SQLiteOpenHelper getWritableDatabase和getReadableDatabase方法,子类继承实现<br />package com.c35.mtd.oa.database;<br />import java.io.File;<br />import android.content.Context;<br />import android.database.sqlite.SQLiteDatabase;<br />import android.datab原创 2011-04-12 16:20:00 · 1428 阅读 · 0 评论 -
PackageManager 与 ActivityManager
<br />Android系统为应用管理功能提供了大量的API。根据功能的不同,这些API分为两大类:PackageManager相关和ActivitManager相关。PackageManager相关<br /> 本类API是对所有基于加载信息的数据结构的封装,包括以下功能:安装,卸载应用查询permission相关信息查询Application相关信息(application,activity,receiver,service,provider及相应属性等)查询已安装应用增加,删除permis转载 2011-04-13 15:21:00 · 810 阅读 · 0 评论 -
计时器:Chronometer
<br />在Android SDK中提供了多种时间服务。这些时间服务主要处理在一定时间间隔或未来某一时间发生的任务。Android系统中的时间服务的作用域既可以是应用程序本身,也可以是整个Android系统。本节将详细介绍这些时间服务的使用方法,并给出大量的实例供读者学习。<br /> 计时器:Chronometer<br />本节的例子代码所在的工程目录是src/ch08/ch08_chronometer<br />Chronometer是TextView的子类,也是一个Android组件。这个组件可以原创 2011-05-31 13:52:00 · 5234 阅读 · 1 评论 -
如何隐藏滚动条在ScrollView中
<br />如何在Android的ScrollView中隐藏滚动条呢,其实通过两个方法就可以搞定了。在layout的xml布局文件中,比如有<ScrollView android:id="@+id/sView" 这个代码。<br /> 在Java中使用ScrollView sView = (ScrollView)findViewById(R.id.sView);<br /> sView.setVerticalScrollBarEnabled(false); //禁用垂直滚动<br /> sView.set原创 2011-06-02 16:05:00 · 11018 阅读 · 3 评论 -
监听Android应用程序是否卸载成功
<br />-------------卸载Android应用程序的方法---------------<br />/**<br />* 卸载Android应用程序<br />*<br />* @param packageName<br />*/<br />public static void uninstallApk(Context ctx, String packageName) {<br />Uri packageURI = Uri.parse("package:" + packageName);<br转载 2011-04-15 10:34:00 · 5464 阅读 · 0 评论 -
android Notification (2)
<br />其中遇到了把程序通知常驻在 Notification 栏,并且不能被 clear 掉(就像android QQ一样)的问题。经过研究实现了其功能,现把 Notification 的使用总结如下:<br />Notification 的使用需要导入 3 个类view sourceprint?1importandroid.app.PendingIntent; 2importandroid.app.NotificationManager; 3importandroid.app.Notification原创 2011-04-18 16:25:00 · 1016 阅读 · 0 评论 -
android 网络可用否,以及类型
在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况。下面的代码,作为例子,详细说明了对于当前网络情况的判断。 先看一个自己定义的应用类。 view plaincopy to clipboardprint? 01.public class NetworkDetector { 02. 03. public static boolean detect(Activity act)原创 2011-06-10 18:29:00 · 878 阅读 · 0 评论