2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Android逆向开发学习之路直接点击即可前往访问. 前言 在做从正向的程序开发转到逆向开发的两年里,深切体会到两种开发的不同.尤其是学习道路这一块走了很多的弯路,当然我现在也不是厉害的逆向.所以所有的看法仅代表个人意见,如有不同看法请在评论区打出来. 正向开发为什么容易学习 以普通的Android开发为例…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来学习一个使用表格视图的程序,下图是该程序的运行效果: 该程序主Activity文件内容如下: package com.liuhaoyu; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android支持常用音视频格式文件的播放,本文我们来学习怎样开发Android应用程序对音视频进行操作. Android提供了MediaPlayer和SoundPool两个类能够用来播放音频,MediaPlayer类通常用来播放较大的文件,比如一首MP3歌曲,这种文件通常保存在SD卡上,而不是保存在资源文件中,当然如果有必要,也可以保存在资源文件中.SoundPool类通常用来播放体积较小的文件,比如游戏中的炸…
 前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [原]热更新开源项目Tinker源码解析之资源热更新 [原]热更新开源项目Tinker源码解析之Library热更新 [原]Android热更新开源项目Tinker集成实践总结 [原][开源项目]DexDiff格式解析工具 异步并发 [原]JAVA并发库concurrent包之ThreadPool…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在上一篇文章中我们学习了多线程和Handler消息处理机制,如果有计算量比较大的任务,可以创建一个新线程执行计算工作,但是子线程无法更新UI界面,所以通过Handler消息处理机制与UI线程通信,更新UI界面. 有一个问题需要注意,创建的子线程太多时,会影响系统性能.针对这个问题,Android为我们提供了代替使用Thread和Handler的方案,这就是AsyncTask.下面看Android官方文档对Asyn…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Fragment翻译成中文就是“碎片”.“片断”的意思,Fragment通常用来作为一个Activity用户界面的一部分.例如,可以用Fragment1在左边显示一个列表,用Fragment2在右边显示选中列表项的详细内容.两个Fragment属于同一个Activity,并且每个Fragment有它自己的生命周期,可以处理它自己的用户输入事件,另外,Fragment还可以有自己的布局文件.在平板电脑等屏幕比较大的…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android中的菜单分为选项菜单(OptionMenu)和上下文菜单(Context Menu).通常使用菜单资源文件创建菜单.菜单资源文件通常放置在res\menu目录下,这个目录默认情况下是不存在的,需要我们自己创建该目录.菜单资源的根元素通常是<menu></menu>标记,在该标记中可以包含两种子元素: 1.<item></item>标记,用于定义菜单项.如果某个菜…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Intent是什么呢?来看Android官网上的定义: An intent is an abstractdescription of an operation to be performed. It can be used with startActivity tolaunch an Activity, broadcastIntent tosend it to any interestedBroadcastRec…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 列表视图我们会经常用到,可以通过两种方式来创建列表视图,一种方式是直接使用ListView组件创建,另一种方式是通过让Activity继承ListActivity实现. 指定ListView组件的内容有两种方法,一是通过在布局文件中指定数组资源,另一种是通过创建适配器. 下面来看一个使用ListView组件创建列表视图的例子,其内容是通过在布局文件中指定数组资源实现的.该程序运行效果如下: 主布局文件main.x…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看一个通过selector动态改变ImageButton背景图片的例子,下图是该程序的运行效果: 该程序中有三个ImageButton,最上面的是鼠标按下时的状态:中间的是鼠标没有按下,但是按钮获得了焦点的状态:最下面的是鼠标没有按下,按钮也不具有焦点的状态. 先来看主布局文件main.xml,其内容如下: <?xml version="1.0" encoding="utf-8…