
Android笔记
文章平均质量分 70
GitLqr
A Little White Developer
展开
-
Android - 云游戏本地悬浮输入框实现
在输入法显示的状态下,旋转屏幕,这时需要保证输入法继续显示,同样的,如果是在输入法隐藏状态下,那么旋转屏幕时,得保证输入法继续隐藏。尽管该方案不需要精确获取输入法高度,但是,有必要监听输入法显隐,以达到输入框同步输入法显隐的目的。系统默认的 Dialog 是有样式的,需要对其进行定制,修改为透明的 Dialog,另外还要修改窗口的。但是,从功能性角度来说,,并且与输入法同步显隐,所以,本篇的核心内容,就是如何来实现这么一个。代码中的注释很详细,相信不难理解,不过,有一点得注意的,原创 2024-07-08 23:14:10 · 942 阅读 · 0 评论 -
Android - 利用 jitpack 免费发布闭源 aar
的代码和资源,其依赖的第三方库不会被合并进去,想要被其他工程正常集成使用,就需要将第三方库的依赖信息传递下去,所以,需要借助 maven 发布插件,生成。的,在提交库信息时,就会要求填写开源仓库的 url,如果我们不想开源源代码,仅仅只是希望把混淆后的。配置项,如需混淆,则需要依赖其他 Gradle 插件,有需要的可以看我之前写的另一篇文章。)根据你的库来修改,不能照抄的!构建会很快,1 分钟左右就出来了,但是这次日志图标是红色的,后面是。任务,即可在指定的本地目录下,生成 maven 相关的文件,其中。原创 2024-06-30 17:33:33 · 1167 阅读 · 1 评论 -
Android - OkHttp 访问 https 的怪问题
才是主流,但有可能存在个别网站不支持,所以,我们在使用 OkHttp 发起 https 请求之前,首先要搞清楚,就是服务端(接口)支持的 ssl 协议有哪些。最近使用 OkHttp 访问 https 请求时,在个别 Android 设备上遇到了几个问题,搜罗网上资料,经过一番实践后,问题得到了解决,同时,我也同步升级了我的 https 证书忽略库。的 Android 4.x 设备上,在高版本 Android 系统上并未发现,所以,为了降低风险,将上述代码做了系统版本控制,运行情况是否稳定还在观察中。原创 2024-04-21 20:58:17 · 1865 阅读 · 1 评论 -
Android - 编译 openssl 踩坑之路
以上的预编译库可能最低只支持 API 21(即 Android 5),如果你的项目需要支持 API 19(Android 4.4.x)及以下的话,就得自己编译 openssl 了,本篇主要记录本人编译。因为 openssl 官方目前没有提供 cmake 编译脚本,还是采用传统的 make 命令编译,所以我们需要编写一个 shell 脚本,命名为。因为本人使用的是 Windows 系统,不像 Mac 或 Linux 那样,天然自带各种 shell 命令,所以在执行。环境,因为有安装过 Git,所以可以在。原创 2023-11-05 16:04:47 · 1226 阅读 · 0 评论 -
Android - 自动系统签名
一、系统签名 以下是两类应用开发场景: 普通应用开发:使用公司自定义 keystore 进行签名,如:微信、支付宝 系统应用开发:使用 AOSP 系统签名或厂商自定义 keystore 进行签名,如:原创 2023-02-12 16:53:54 · 2506 阅读 · 0 评论 -
Android - 混淆 java-library 工程
AndroidStudio 可以创建好几种 Module 工程,如果 Module 使用的是 android 插件( 或 ),那么通过在 中将 设为 即可开启混淆,但如果 Module 使用的是 java 插件(),那就需要借助额外的工具了,因为 默认没有提供混淆配置域。想要混淆 工程,需要在 文件中手动依赖一个第三方库 :2、自定义混淆 Task依赖混淆库之后,还要自定义混淆任务,配置一些混淆选项,这里说明几个重点配置项: 这个库还有很多配置项,需要你感兴趣,可以到官网查阅手册了解:注意原创 2022-12-08 00:27:33 · 1088 阅读 · 0 评论 -
Android - setVisibility() 失效,竟然是因为内存泄露
目前,我在开发的一个 Android 项目需要各个功能做到线上动态化,其中,App 启动时显示的 Loading 模块,会优先检测加载远程的 Loading 模块,加载失败时,会使用 App 本身默认的 Loading 视图,为此,我编写了一个 LoadingLoader 工具类:LoadingLoader 工具类使用 Kotlin 的单例模式, 方法接收 2 个回调参数, 方法触发加载远程 Loading 模块,并根据加载结果执行回调,其中 用于防止该工具类被初始化多次。然后,在 App 的主入口 L原创 2022-07-02 22:46:25 · 1528 阅读 · 0 评论 -
解决WebView内存泄漏【最干货】
欢迎关注微信公众号:FSA全栈行动 ????解决 WebView 内存泄漏要解决 WebView 内存泄漏的要点如下:不要使用 xml 方式创建,而是使用代码把 WebView 给 new 出来不要让 WebView 持有对 Activity/Fragment 的 Context 引用(核心)销毁时,停止 WebView 的加载,并从父控件中将其移除1、初始化 WebViewWebView 内存泄露的主要原因是引用了 Activity/Fragment 的 Context,加之 WebV原创 2021-04-01 11:47:59 · 2811 阅读 · 0 评论 -
利用onDraw画出半圆按钮
项目需要,顺手写了一个半圆按钮,记录下来,供新手学习代码如下:public class HalfCircleButton extends Button { public HalfCircleButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defSty原创 2016-03-06 18:42:10 · 743 阅读 · 0 评论 -
ToolBar的使用
官方介绍:Toolbar是应用的内容的标准工具栏,`可以说是Actionbar的升级版`,两者不是独立关系,要使用Toolbar还是得跟ActionBar扯上关系的。相比Actionbar Toolbar最明显的一点就是变得很`自由,可随处放置`,因为它是作为一个`ViewGroup来定义使用的`,所以单纯使用ActionBar已经稍显过时了,它的一些方法已被标注过时。1、引入v7包,原创 2016-02-29 12:23:12 · 1077 阅读 · 0 评论 -
属性动画
属性动画值动画:ValueAnimator animator = ValueAnimator.ofFloat(0,100);//创建值动画,这一步仅仅只是计算出0到100之间的变化值animator.addUpdateListener(new AnimatorUpdateListener() {//要使用变化值,必须设置监听@Overridepublic void原创 2016-02-29 12:31:49 · 454 阅读 · 0 评论 -
缓存之sdcard卡本地缓存
####本地缓存存取_问1. 缓存数据存到哪里? 2. 缓存数据按照什么形式存储? 3. 如何保证缓存数据对应性? 4. 保证缓存数据的时效性? 5. 数据的加载流程?####本地缓存存取_答1. 数据存到哪里? sdcard/Android/data/包名/json 2. 数据按照什么形式存储? 存一个file3. 如何保证数据的唯一性? 一对一原创 2016-02-29 12:34:56 · 779 阅读 · 0 评论 -
android contentprovider limit限定
LIMIT , 等价于LIMIT OFFSET LIMIT , 等价于LIMIT OFFSET 可以通过orderby作假来加上limit offset,反正最后其实也是由db的query去拼接的sql的,如orderby变为 ID DESC LIMIT 100 OFFSET 0。query(NoticeColumsStandard.TABLEN原创 2016-03-07 11:28:44 · 781 阅读 · 0 评论 -
遍历SD卡,获取含有图片文件的文件夹集合
今天遇到这样的需求:得到SD中含有图片文件的文件夹,并以列表方式显示出来,效果如上图所示,网上找了一遍,没发现有人共享这样的代码,所以只好自己写了。思路很简单:直接扫描sd卡所有文件夹,找出所有包含后缀为.bmp,.jpg,.jpeg,png等的文件的文件夹。完整代码如下: /** * 得到包含有图片的文件夹list * * 这个过程有点久,建议放到程序的启动界面原创 2016-03-07 23:58:34 · 756 阅读 · 0 评论 -
得到安卓所有已安装程序的信息
得到安卓手机中所有已安装的应用程序信息,包括系统软件和用户自己的软件核心代码如下: /** * 获取所有已安装的应用程序 * * @param context * 上下文 * @return 本机所有程序信息 */ public static ArrayList getAllAppInfo(Context context) { Arra原创 2016-03-08 00:06:34 · 587 阅读 · 0 评论 -
Android中设置全屏的方法
在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果。其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏。 其一:在代码中设置(如下)public void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns转载 2016-04-02 10:59:43 · 536 阅读 · 0 评论 -
i-jetty-3.1编译小结
i-jetty-3.1编译总结 因为i-jetty-3.1是基于maven的工程,可以在eclipse或者命令行模式编译,但是都需要设置相应的环境。 下面详细介绍命令行模式的i-jetty编译步骤: 1.1 安装maven 从官网 下载最新的maven包,解压后放到某个目录。 (linux:/usr/local/apache-maven-3.0.4;windows转载 2016-03-09 21:04:25 · 497 阅读 · 0 评论 -
android重新启动应用程序和重新启动系统
重新启动应用程序,有两种方法,分别是:1.通过ActivityManager来重新启动应用程序:ActivityManager manager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE); manager.restartPackage("com.example.test"); 2.通过f转载 2016-04-02 19:26:27 · 931 阅读 · 0 评论 -
AlertDialog 点击按钮后不关闭的处理办法
AlertDialog 点击按钮后不关闭的处理办法new AlertDialog.Builder( this ).setPositiveButton( new String( "确定" ), new DialogInterface.OnClickListener() { @Override public void onClick( D转载 2016-04-03 10:17:11 · 1301 阅读 · 0 评论 -
解决Layout weight不起作用
1、确保只有LinearLayout控件才能使用weight,如RelativeLayout使用weight是没有用的。2、设置weight时,要对width生效就把width设置为0dp,要对height生效就把height设置为0dp。原创 2016-03-22 21:48:48 · 1925 阅读 · 0 评论 -
Android开发——自动连接指定SSID的wifi热点(不加密/加密)
首先需要感谢这篇文章的作者:http://blog.chinaunix.net/uid-22342564-id-3228565.html在这篇文章中,作者定义了一个wifi工具类,其中存在着操作wifi的各种方法,其中有一些错误我以改正,正确的代码如下(创建一个名为WifiAdmin.java的文件,以下代码中没有包声明和import,请自行添加):public class Wif转载 2016-04-05 21:09:05 · 1059 阅读 · 0 评论 -
Android--通知之Notification
前言 之前一篇博客讲了Android下使用Toast的方式提示消息。这篇博客讲解一下在Android中使用Notification提示消息给用户,Notification是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。在本篇博客中,将介绍Notification的常规使用,以及自定义方式的使用,对于每种不同的方式,都提供示例转载 2016-04-05 21:20:02 · 389 阅读 · 0 评论 -
Android编程获取sdcard音乐文件的方法
这篇文章主要介绍了Android编程获取sdcard音乐文件的方法,涉及Android针对外部存储卡中多媒体文件的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了Android编程获取sdcard音乐文件的方法。分享给大家供大家参考,具体如下:Cursor query(Uri uri, String[] projection, String转载 2016-04-05 21:29:38 · 665 阅读 · 0 评论 -
No resource found that matches the given name
项目里想使用toolbar需要用到noActionBar主题,但是可能存在v7包版本过低,更新新版的v7包又出现其它问题,没办法,折腾了很久,还是使用sdk里自带的noActionBar主题好了,步骤如下:1、修改清单文件里的主题为: android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" ,这里要注意使用的是a原创 2016-03-13 09:30:01 · 669 阅读 · 0 评论 -
eclipse下使用toolbar
使用 support-v7 的几个步骤:导入 appcompat_v7 项目(android-sdk\extras\android\support\v7\appcompat)修改 appcompat_v7 build-target 为 21及以上声明 appcompat_v7 为库项目(选中项目名 - 快捷键 Alt+Enter - Android - 勾选 Is Library)将 ap原创 2016-03-13 09:47:07 · 3024 阅读 · 0 评论 -
Sherklock Actionbar 和 FragmentActivity的问题
想要使用getSupportFragmentManager()就必须extends FragmentActivity。想要使用Sherklock的ActionBar就必须extends SherklockActivity。想要两者一起使用,就extends SherlockFragmentActivity。原创 2016-03-13 13:10:56 · 532 阅读 · 0 评论 -
Android获取SD卡上所有图片、视频缩略图和音乐专辑封面
查询图片首先,查询Android固有数据库,图片的Uri为Images.Media.EXTERNAL_CONTENT_URI。以下为具体查询实例,FileInfo为自定义的数据模型。public ArrayList queryAllImage(final Context context) { if (context == null) { //判断传入的参数的有效性转载 2016-03-13 16:16:49 · 998 阅读 · 0 评论 -
个人对listview中type的见解
getViewTypeCount()和getItemViewType(position)的作用:从http://www.aitinan.com/3885.html的帖子中可以总结得出以下结论:1、getViewTypeCount()的返回值代表了convertView的缓存池个数。2、不同type的item缓存在不同的缓存池中。3、与getItemViewType(posi原创 2016-02-29 12:24:44 · 410 阅读 · 0 评论 -
listView的position问题
如果listView加了头部,那么listView的总体的itemCount会加1经验总结:1、getView这个方法只管item的显示,是从0开始,所以不用减12、给listView设置itemClick时,要注意position减1,因为此时listView的总体个数已经加了1,要从总体上考虑item的个数如果出现有脚部或者多个头部时,在设置itemCl原创 2016-02-29 12:26:18 · 609 阅读 · 0 评论 -
获取sim卡信息
//获取sim卡信息TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);String simSerialNumber = tm.getSimSerialNumber();//获取sim卡序列号原创 2016-02-29 12:20:19 · 803 阅读 · 0 评论 -
发送短信
//发送短信SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage(phone, null, "sim card change",null, null);原创 2016-02-29 12:20:42 · 516 阅读 · 0 评论 -
读取联系人
//读取联系人private ListView lvList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lvList = (原创 2016-02-29 12:21:00 · 498 阅读 · 0 评论 -
代码设置控件的背景
代码设置控件的背景为圆角并随机背景色:说明:GradientDrawable相当于drawable中自定义shape的布局文件所生成的Drawable,所以它可以设置corners、solid、stroke等布局文件中的写法(布局文件中无法设置随机色): android:shape="rectangle" >原创 2016-02-29 12:21:21 · 846 阅读 · 0 评论 -
图片轮播之自动轮播
利用Handler实现图片自动轮播和用户触摸图片时自动停止轮播Handler mHandler = new Handler();AutoScrollTask mAutoScrollTask = new AutoScrollTask();class AutoScrollTask implements Runnable {public void start() {原创 2016-02-29 12:31:05 · 878 阅读 · 0 评论 -
图片轮播之无限轮播
用ViewPager来实现轮播,会考虑到无限轮播和左右循环,需要做到以下4步://1.把图片的总数改为整数的最大值,做为虚假的图片数量//2.在用到position的地方进行%运算,这样可以保证得到的position的不会数组越界//3.设置虚假图片位置的起点为整数最大值的中间//4.算出真正图片位置与起点的偏差值//5.整数最大值的中间-真正图片位置与起点的偏差值原创 2016-02-29 12:30:19 · 675 阅读 · 0 评论 -
一键锁屏和清除数据
//清单文件android:name=".AdminReceiver"android:description="@string/sample_device_admin_description"android:label="@string/sample_device_admin"android:permission="android.permission.BIND_DEVICE_原创 2016-02-29 12:29:11 · 1009 阅读 · 1 评论 -
ActionBar的使用
使用ActionBar,需要3个步骤:1、导入v7包,并与项目关联2、继承ActionBarActivity3、修改清单文件中的application的主题为android:theme="@style/Theme.AppCompat.XXX"/*================================================ActionBar的一些常用方法=原创 2016-02-29 12:28:16 · 462 阅读 · 0 评论 -
android蓝牙的使用
android蓝牙的使用1、初始化蓝牙:// 获取手机的蓝牙管理器BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();// 开启蓝牙(起到打开机器蓝牙的作用)mBluetoothAdapter.enable();2、对蓝牙进行监听(以下是代码动态注册广播接收者,使用对原创 2016-02-29 12:27:49 · 685 阅读 · 0 评论 -
DrawerLayout的使用
DrawerLayout常用来与ActionBar或者ToolBar结合作为侧边栏1、布局文件中: android:id="@+id/main_drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent"原创 2016-02-29 12:27:06 · 351 阅读 · 0 评论 -
string.xml中占位符的使用
string.xml中占位符的使用占位符:%1$s说明: %1:表示第一个占位符,依次类推,有%2,%3...$s:表示该点位符的数据类型为string,若为$d则表示为数字 时间:%1$s%1$s简介:%2$dString android.content.res.Resources.getString(int id, Object...原创 2016-02-29 12:23:50 · 3062 阅读 · 0 评论