Android
赵得C
Android菜鸟 | 初入江湖 才疏学浅,望请过往看官多多指点
展开
-
Android开发优化之——使用软引用和弱引用
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。这里重点介绍一下软引用和弱引用。如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存...原创 2019-09-25 00:02:45 · 210 阅读 · 0 评论 -
Android性能优化之电量优化
1、在android framework里面有专门负责电量统计的Service:BatteryStatsSerive①这个Service在ActivityManagerService中创建,代码如下:mBatteryStatsService = new BatteryStatsService(new File(systemDir, 'batterystats.bin').toStr原创 2016-11-26 00:40:12 · 18315 阅读 · 2 评论 -
ListView的ViewHolder优化
优化后listView的数据适配器以下是对Adapter经过优化之后的BaseAdapter,不管是ListView还是GridView或者其他具有列表特性的控件,在设置数据适配器的时候可以直接继承public abstract class LvBaseAdapter extends BaseAdapter { private ArrayList mDatas; /** 首页list原创 2016-11-25 23:30:53 · 15491 阅读 · 0 评论 -
Android中APK打包流程
aapt: android application package tool,SDK(Android打包流程图)#Android打包流程1.通过aapt工具将 资源文件(res)、清单文件(AndroidManifest.xml)生成对应的R.java文件* 在项目的根目录下新建 gen目录,并且依次在gen目录下新建清单文件总包名对应的文件目录 > 例如: 清单文件中包原创 2016-12-13 23:00:40 · 20250 阅读 · 0 评论 -
使用fir.im托管应用时通过Android Studio插件更新应用
最近使用fir.im托管自己的一些业余应用时发现无法更新服务器的应用,经过多方取经发现以下插件即可实现fir.im 新增 Android Studio 插件Android Studio 是比较受欢迎的开发环境。这次 fir.im 上线 Android Studio 插件 插件,可以帮 Android 开发者在 Android Studio 的开发环境中上传应用,添加更新日志。上传成功后原创 2016-11-25 00:01:17 · 18018 阅读 · 0 评论 -
使用PreferenceFragment实现设置模块
一、PreferenceFragment的引入:PreferenceActivity是一个非常有用的基类,当我们开发Android项目时避免不了选项设置,这些设置习惯用Preference来保存。Android专门为这种Activity提供了便捷的基类PreferenceActivity。如果继承自Preference则不需要自己控制Preference的读写,PreferenceActivi转载 2016-11-24 16:09:34 · 19493 阅读 · 3 评论 -
Android四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent 的描原创 2016-11-22 00:09:09 · 15819 阅读 · 0 评论 -
返回键之moveTaskToBack(boolean ) 方法的使用
当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可。(类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别)public boolean moveTaskToBack(boolean nonRoot)参数值含义:1、false,仅当activity为task根(即首个activity例原创 2016-11-24 13:44:05 · 16092 阅读 · 0 评论 -
AndroidUI之View的加载机制
对于接触安卓开不到一年的自己来说,总结下view的生命周期还是有非常重要的好处的,不仅表达了对view的理解,也可以给初学者学习参考;本文就粗略总结下view的加载机制,上一文中给大家粗略介绍了下安卓的绘图基础和原理,也偶尔提到了安卓的view是通过解析xml,然后变成Java对象,再通过父类的canvas和paint绘制出来的,如果往上层理解,简单的概括下,就是在activty里通过这是Cont转载 2016-11-23 00:57:01 · 15810 阅读 · 0 评论 -
自定义控件实现(淘宝头条/京东快报)垂直循环滚动栏目
1、通过继承LinearLayout的方式①自定义属性xml version="1.0" encoding="utf-8"?> name="JDAdverView"> name="gap" format="integer" /> name="animDuration" format="integer"/> ②自定义View原创 2016-11-26 01:13:25 · 16857 阅读 · 0 评论 -
Glide和Picasso的对比
原文地址:https://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en下面是Picasso和Glide图像比较的结果。(1920 x1080像素图像加载到768 x432像素ImageView) 我们再来看看内存开销图,这次貌似Glide花费了两倍于上次的内存,但是Pic翻译 2016-12-09 20:03:11 · 15751 阅读 · 0 评论 -
加速AndroidStudio中Gradle构建
解决AndroidStudio中编辑.gradle文件时卡顿问题、.gradle编译卡顿问题开启gradle单独的守护进程在下面的目录下面创建gradle.properties文件:/home//.gradle/ (Linux) /Users//.gradle/ (Mac)C:\Users\\.gradle (Windows)并在文件中增加:org.gradle.dae转载 2016-12-17 15:25:45 · 15433 阅读 · 0 评论 -
Android数学图像MPAndroidChart的使用
1、添加gradle配置compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'2、布局文件xml version="1.0" encoding="utf-8"?> xmlns:android="http://schemas.android.com/apk/res/android" android:layo原创 2017-11-23 22:24:56 · 1110 阅读 · 0 评论 -
百度定位服务使用过程中的异常信息记录及解决方案
Android应用使用百度定位SDK 返回error code : 162 latitude : 4.9E-324 lontitude : 4.9E-324有以下几种情况会导致这种情况的发生(首先要保证按照官方文档配置环境):①官方文档不提供armeabi-v7a文件夹对应的.so文件,所以需要自己新建一个armeabi-v7a文件夹,并从另外一个文件夹里拷贝一个.so文件到该文件夹下原创 2017-01-05 11:57:12 · 17053 阅读 · 3 评论 -
Java获取本周一、上周一、下周一时间
Java获取本周一、上周一、下周一时间原理不多说,获取本周一时间,然后+/-1就是下周/上周一的时间import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateTest { public static Date geLastWeekMonday(Date date) { Calen原创 2017-09-10 03:26:45 · 69782 阅读 · 6 评论 -
PopupWindow和AlertDialog区别
本质区别为:AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。这两种区别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,A原创 2017-06-18 20:21:13 · 15663 阅读 · 0 评论 -
解决ListView的listSelector被覆盖不起作用的问题
ListView的listSelector属性可以为列表的某个元素被点击时产生按下的效果,但是某些情况下这个listSelector属性的效果会被覆盖,比如列表的Item为一个占满单元格的ImageView的时候,ImageView如果有内容那么listSelector的效果就会被挡住。解决的办法是为ListView添加drawSelectorOnTop属性并设置为true。dra转载 2017-06-18 20:19:21 · 16011 阅读 · 0 评论 -
捕获异常信息并上传到服务器
捕获全局异常并将设备参数信息和具体的异常信息发送到服务器供开发者分析和调试程序,解决Process.killProcess(Process.myPid())重启导致多次保存错误日志问题转载 2017-01-11 14:20:15 · 16339 阅读 · 0 评论 -
OkHttp使用之官方文档案例
Synchronous Getprivate final OkHttpClient client = new OkHttpClient(); public void run() throws Exception { Request request = new Request.Builder() .url("http://publicobject.com/h原创 2017-01-07 14:47:50 · 15536 阅读 · 0 评论 -
Android常用代码总结(一)
系统服务1、活动管理器uses-permission android:name="android.permission.GET_TASKS"/>ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);2、警报管理器AlarmMan原创 2016-12-18 17:06:13 · 15622 阅读 · 0 评论 -
VR开发基础—VR视频
1、导入谷歌官方提供的库:commonwidget、common、panowidget(全景图)、videowidget(视频)或者添加依赖:dependencies { compile project(':libraries-common') compile project(':libraries-commonwidget') compile pro原创 2016-11-23 00:14:54 · 15786 阅读 · 0 评论 -
VR开发基础—全景图
1、导入谷歌官方提供的库:commonwidget、common、panowidget(全景图)、videowidget(视频)或者添加依赖:dependencies { compile project(':libraries-common') compile project(':libraries-commonwidget') compile原创 2016-11-23 00:13:13 · 15804 阅读 · 0 评论 -
直播技术学习笔记(一)
播放器相关技术:1、开源项目jjdxm_ijkplayer是基于ijkplayer简单的UI界面;ijkplayer是一个基于 FFmpeg n2.6 的开源 Android/iOS 视频播放器;2、虚拟按键的隐藏方法:rootView = getLayoutInflater().from(this).inflate(R.layout.activity_ca原创 2016-11-23 00:06:56 · 15980 阅读 · 0 评论 -
蓝牙API笔记
蓝牙API笔记常用API :BluetoothAdapter BluetoothDevice BluetoothSocketBluetoothAdapter 代表一个蓝牙适配器硬件通过BluetoothAdapter 可以打开/关闭蓝牙适配器 扫描周边蓝牙设备…bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();打开/关闭 蓝牙原创 2016-11-29 23:24:07 · 15617 阅读 · 0 评论 -
智能家居之智能监控小记
1.手机是如何连接摄像头第一次连接的时候摄像头需要通过网线和路由器连接,会给摄像头分配一个ip地址,手机使用uid、密码通过ip地址进行连接,类似javaweb中的登陆访问操作2.第一次怎么连接摄像头首次连接摄像头需要通过网线去连接摄像头,然后手机通过wifi连接路由器,必须得到同一个网段下,然后通过手机去添加摄像头,因为我们已经有uid和密码了,所以不用添加,这样就会原创 2016-11-29 23:08:50 · 16390 阅读 · 0 评论 -
贝萨尔曲线实现Periscope心形点赞动画效果
先来个效果图这个动画效果主要几个关注点是:一、自定义的RelativeLayout中动态加载ImageView二、刚开始的三个还没移动的动画效果anpha和scaleX,scaleY ,用ObjectAnimator加载三、红心移动效果,运用了ValueAnimator的TypeEvalutors(估值器) 和addUpdateListener监听,在TypeEvalutors获取了贝塞尔曲转载 2016-11-17 19:10:39 · 16192 阅读 · 0 评论 -
解决Eclipse在xml中编辑布局文件智能提示失效问题
1、设置xml 文件的代码提示功能:打开Eclipse 依次选择Window > Preferences > Xml > Editor > Content Assist > Auto activation > Prompt when these characters are inserted ,设置框中默认是<=: ,现在将它改为:<=:.abcdefghijklmnopqrstuvwxyz(,原创 2016-11-17 16:33:09 · 26273 阅读 · 1 评论 -
Android通过使用webview实现和js的交互
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为trueAndroid(Java)与 JavaScript(HTML)交互有四种情况:1) Android(Java)调用HTML中js代码2) Android(Java)调用HTML中js代码(带参数)3) HTML中j原创 2016-11-04 13:32:23 · 23381 阅读 · 0 评论 -
Android直播中弹幕效果实现
在B站或者其他视频网站看视频时,常常会打开弹幕效果,边看节目边看大家的吐槽。弹幕看起来很有意思,今天我们就来实现一个简单的弹幕效果。 从直观上,弹幕效果就是在一个ViewGroup上增加一些View,然后让这些View移动起来。所以,整体的实现思路大概是这样的:1、定义一个RelativeLayout,在里面动态添加TextView。2、这些TextView的字体大小、颜色、移动速度、转载 2016-11-17 15:02:17 · 23281 阅读 · 1 评论 -
MVP模式在Android开发中的应用
一、MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。 在MVP模式里通常包含4个要素: (1)View:负责绘制UI元素、与转载 2016-11-17 14:59:31 · 22221 阅读 · 0 评论 -
给ViewPager设置adapter出现空指针异常 解决
问题描述:TopNewsAdapter topNewsAdapter = new TopNewsAdapter();System.out.println("11111111" + topNewsAdapter == null);// 返回false,表明topNewsAdapter 不为空System.out.println("11111111" + mViewPager == n原创 2016-09-25 21:06:31 · 24537 阅读 · 0 评论 -
Android调用微信扫一扫和支付宝扫一扫
微信在自己的应用中打开微信扫一扫代码:private void toWeChatScan() { try { //利用Intent打开微信 Uri uri = Uri.parse("weixin://dl/scan"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);原创 2018-05-17 22:05:07 · 17219 阅读 · 6 评论 -
Android Studio插件整理
1.GsonFormat快速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程。使用方法:快捷键Alt+S也可以使用Alt+Insert选择GsonFormat2.Android ButterKnife Zelezny配合ButterKnife实现注解,从此不用写findViewById,想着就爽啊。在Activity,转载 2016-11-29 23:31:13 · 15782 阅读 · 0 评论 -
Android自定义加载中Dialog
开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据。今天我们来实现如下效果的加载中Dialog。从图中我们可以看到要这个Dialog是图片还有文字组成的,(不过我这里使用代码实现的,没有用图片),以下是这个加载图形的代码:public class LVCircularRing e转载 2016-11-29 23:37:46 · 20626 阅读 · 0 评论 -
酷狗音乐展示滚动歌词效果的控件实现
在音乐播放器项目中使用到酷狗音乐展示歌词的效果,需要支持修改字体、颜色、渐变色等功能截图如下(效果不是很好,请下载Demo查看)歌词绘制流程核心代码如下(具体实现过程请看Github源码)@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas); // 中心Y坐标 float原创 2016-11-22 23:36:11 · 19283 阅读 · 2 评论 -
Android N 多窗口模式应用开发
我们都知道,在最新的Android N系统中,加入了一个新的功能,就是多窗口模式。多窗口模式允许我们在屏幕上显示两个窗口,每个窗口显示的内容不同,也就是说,我们可以一遍看电视剧,一边聊微信。这里我们通过官方提供的一个Demo来了解一下,作为开发者,怎么给我们的App也适配多窗口模式。这里给出代码github地址,需要的话可以clone下来边看边了解:https://github.com/goog原创 2016-11-22 00:05:24 · 16572 阅读 · 1 评论 -
Android5.0 全新的动画
全新的动画在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性。Material主题为控件和Activity的过渡提供了一些默认的动画,在android L上,允许自定义这些动画:Touch feedback 触摸反馈Circular Reveal 圆形展示Curved motion 曲线运动View state chang原创 2016-11-20 15:14:38 · 15487 阅读 · 0 评论 -
敏捷开发小记
所谓敏捷开发就是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态;敏捷开发遵循:1. 个体和交互胜过过程和工具2原创 2016-11-19 23:02:02 · 15461 阅读 · 0 评论 -
通过Java实现Linux系统下grep指令的功能
在Linux系统下grep指令常见的使用方式有如下两种:grep pattern files – 搜索 files 中匹配 pattern 的内容grep -r pattern dir – 递归搜索 dir 中匹配 pattern 的内容现有如下方法可实现在Windows系统下通过Java代码实现与第一种使用方法相同的功能:import java.io.File;import j原创 2016-12-11 14:04:28 · 22246 阅读 · 3 评论 -
Android Studio实用的11个插件
1. Android ButterKnife Zelezny在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解。2. GsonFormat快速将json字符串转换成一个Java Bean,免去我们根据json字符串手写对应Java Bean的过程。3. Android Studio原创 2016-11-30 23:54:58 · 15913 阅读 · 0 评论