
Android基础
享阅工作室
本人多年软件开发和管理经验,在多家互联网公司担任过高级软件开发、架构师、技术经理、技术总监等。工作认真负责,态度诚恳严谨,思维活跃,勇工并挑战解决项目研发中的难题。主要研究方向移动端和前端开发,包括RN、Flutter等跨平台开发以及Android、Vue、React、Node.js、SpringBoot等都有所研究。生活中爱好广泛,乐观向上,易于与不同类型人群沟通,能在较大的压力下保持良好的工作心态,将百分百的热情投入到每一天的每一分钟。
展开
-
Android获取Flutter使用shared_prefences保存的信息
### 1. 查看shared_preferences安卓端的源代码通过shared_preferences: “0.5.7”源代码可以知道,Flutter使用了channel将信息保存在SharedPreferences的文件中,shared_preferences在Android端保存的文件名为FlutterSharedPreferences 。### 2.在Android端写代码进行查询FlutterSharedPreferences里面的数据Flutter保存数据的代码如下:下面保存一个原创 2020-11-30 20:56:26 · 890 阅读 · 0 评论 -
Asset目录与res目录的区别
assets目录与res下的raw、drawable目录一样,也可用来存放资源文件,但它们三者有区别,对比总结如下表: assetsres/rawres/drawable获取资源方式: 文件路径+文件名 R.raw.xxx R.drawable.xxx 是否被压缩:NONOYES(失真压缩)转载 2016-06-23 15:16:48 · 1587 阅读 · 0 评论 -
Android有用代码片段01
1. Download文件夹绝对路径/storage/emulated/0/Download/xxx遍历File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); File[] files = file.listFiles();原创 2016-06-22 16:38:32 · 428 阅读 · 0 评论 -
Android APK打包流程
概述今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式:一种是用Eclipse或者Android Studio集成开发环境直接生成APK;另一种是使用Ant\Gladle等工具生成APK。当你解压以后会发现它内部主要就是资源文件和classes.dex。这个classes.dex就转载 2016-07-11 16:52:04 · 947 阅读 · 0 评论 -
view的onFinishInflate()何时调用的?
view的onFinishInflate()何时调用的?当View中所有的子控件均被映射成xml后触发;MyView mv = (MyView)View.inflate (context,R.layout.my_view,null);当加载完成xml后,就会执行那个方法;我们一般使用View的流程是在onCreate中使用setContentView来设置要显示Layout文件或直原创 2016-06-27 16:41:44 · 3566 阅读 · 2 评论 -
Drawable /Bitmap、String/InputStream、Bitmap/byte[]互转
Drawable互转BitmapDrawable转BitmapResources res = getResources();Drawable drawable = res.getDrawable(R.drawable.myimage);BitmapDrawable bd = (BitmapDrawable) d;Bitmap bm = bd.getBitmap();pub原创 2016-06-27 15:43:44 · 674 阅读 · 0 评论 -
细说单例在android中的应用
Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂。譬如涉及到DCL双锁检测(double checked locking)的讨论、涉及到多个类加载器(ClassLoader)协同时、涉及到跨JVM(集群、远程EJB等)时、涉及到单例对象被销毁后重建等。原创 2015-12-15 17:40:22 · 440 阅读 · 0 评论 -
CoordinatorLayout使用方法
作为Android的控件, CoordinatorLayout已经加入最新的HelloWorld项目中, 也是Material风格的重要组件, 协调(Coordinate)其他组件, 实现联动. 那么让我们来看看这个动画效果怎么用吧?1. 准备首先新建HelloWorld项目.在项目的build.gradle文件中, 引入头像控件库和CardView库, 在本例中会使用原创 2016-03-20 22:50:12 · 1242 阅读 · 0 评论 -
AppBar的简单使用
AppBar作为Android5.0的重要动画效果, 非常绚丽的UI, 通过内容驱动, 可以减少页面的访问, 更加便捷的传递主题思想. 那么我们看看如何使用.1. 准备创建一个Navigation Drawer的工程, 修改主题颜色. #FF1493 #FF1493 #FF4081修改抽屉的渐变颜色side_nav_bar.xml<s原创 2016-03-20 18:57:43 · 872 阅读 · 0 评论 -
RecyclerView简单使用
RecyclerView相比于ListView, 在回收重用时更具有灵活性, 也就是低耦合, 并且提供了扩展. 加载多个视图时, 应该多用RecyclerView代替ListView.那么我们来看看这东西应该怎么用? 比如生成一个瀑布流的视图.瀑布流首先我们从一个HelloWorld写起, 看看如何构建一个RecyclerView.1. 依赖库Gradle配置,转载 2016-03-20 18:50:58 · 312 阅读 · 0 评论 -
收集大家常用的一些Android代码
这里收集了大家常用的一些Android代码,持续更新中,内容来自自己的平时积累和网络上看到的文章,部分原文地址在最下方。如有错误欢迎指正。里面可能会有重复内容,请忽略。文章出自:https://github.com/jiang111/awesome-android-tips/blob/master/README.mdsetBackgroundResource(0) 可以转载 2016-03-18 10:44:45 · 923 阅读 · 0 评论 -
判断桌面快捷方式是否已经创建
一般情况况下为/*** 判断桌面是否已经创建了快捷图标* * @param context* @param packageName* @return*/public static boolean getIsOnDesktopByPkgName(Context context, String packageName) {final ContentResolver原创 2014-11-18 16:19:48 · 977 阅读 · 0 评论 -
整理的一些Android模拟器的一些常用快捷键
Home键(小房子键):在键盘上映射的就是home键,这倒是很好记。Menu键:用于打开菜单的按键,在键盘上映射的是F2键,PgUp键同样可以。另外,看英文原文的意思,貌似这个键在某些机型上会被设计为左软件(left softkey)Start键:这个键在模拟器和G1真机上我都没有找到到底是哪个键。映射的是Shift+F2或PgDn,某些机型会被设计为右软键(right softk原创 2015-01-03 11:14:05 · 553 阅读 · 0 评论 -
判断App是否在前台运行
// Android开发中,有时候需要判断App是否在前台运行。 代码实现如下:[java] view plaincopyprivate boolean isRunningForeground(Context context) { ActivityManager am = (ActivityManager) context.ge转载 2015-01-05 17:52:15 · 550 阅读 · 0 评论 -
Android Process and Thread 进程和线程
http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html当一个应用程序组件开启,而该应用程序没有其他组件在运行,那么Android系统会为这个应用程序启动一个新的Linux进程,一个单独线程来执行这些操作。一般来说,一个应用程序中的所有组件应该是跑在同一个进程和线程(主线程,calle转载 2015-03-31 15:04:13 · 626 阅读 · 0 评论 -
AsyncTask使用
AsyncTask的实现原理就是封装了的线程池,具体见AsyncTask实现原理。 在1.5中初始引入的时候, AsyncTask 执行( AsyncTask.execute() )起来是顺序的,当同时执行多个 AsyncTask的时候,他们会按照顺序一个一个执行。前面一个执行完才会执行后面一个。这样当同时执行多个比较耗时的任务的时候 可能不是您期望的结果,具体情况就像是ex原创 2015-03-31 16:09:15 · 368 阅读 · 0 评论 -
Android中的Parcel机制和Serialize机制
实现了Bundle传递对象, 使用Bundle传递对象,首先要将其序列化,但是,在Android中要使用这种传递对象的方式需要用到Android Parcel机制,即,Android实现的轻量级的高效的对象序列化和反序列化机制。 JAVA中的Serialize机制,译成串行化、序列化……,其作用是能将数据对象存入字节流当中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态原创 2015-04-14 17:21:41 · 902 阅读 · 0 评论 -
引起内存泄露的原因:CheckList
1、单例不可取:public class Singleton{ private static Singleton instance; private Context mContext; private Singleton(Context mContext){ this.mContext = mContext; } pu原创 2015-09-29 17:52:05 · 1058 阅读 · 0 评论 -
最新AndroidStudio使用教程
什么是Android Studio?Android Studio是基于IntelliJ的最新Android开发工具。与Eclipse相比,主要下面几点好处:使用gradle编译系统,其最大的特点,Gradle编译系统所带来的好处:更简单的依赖管理,只需要一行依赖配置,Gradle就会帮我进行下载,引入,关联等等操作Android Studio与命令行的编译方式一样能同时生成原创 2015-12-22 18:32:10 · 1983 阅读 · 0 评论