Android
文章平均质量分 84
京城最明亮的少年
生活应该充满挑战和艰险才显得无比的精彩!
展开
-
NDK动态注册
关于NDK想必大家都了解一点如静态注册 //动态注册 public native void registerJava01(String text);这是一个最基本的Native函数那么我们之前采用的静态注册就是在c/c++文件中填写extern "C"JNIEXPORT void JNICALLJava_com_example_myndk_MainActivity_r...原创 2020-02-27 20:37:17 · 294 阅读 · 0 评论 -
DrawerLayout侧滑使用
我们知道Android侧滑的方式又很多种,但是很少知道Android自带的DrawerLayout有侧滑的功能。 </android.support.v4.widget.DrawerLayout> <fragment android:layout_width="match_parent" andr...原创 2018-10-23 15:54:03 · 300 阅读 · 0 评论 -
Rxjava+Retrofit+Okhttp进行网络访问和数据解析
在平时项目开发中Okhttp3.x、Rxjava2.x、Retrofit2.x,使用的越来越多了,需要我们不断的去学习别人的优秀开发设计程序,今天简单的了解下(这三块内容庞大绝非几篇博客能说清楚的)1,创建Android项目(Android studio)导入相关依赖 implementation 'com.squareup.okhttp3:okhttp:3.11.0' impl...原创 2019-02-25 15:20:32 · 913 阅读 · 0 评论 -
kotlin的RecycleView优雅点击事件
说道点击事件,我想大家不陌生,今天 我们主要介绍的是在RecycView中的点击事件,同时了解Java和kotlin监听事件的不同,如何优雅的看待kotlin的函数式接口大家一步步来,我们先介绍java的1,简单View的点击事件 view1.setOnClickListener(new View.OnClickListener() { @Overrid...原创 2019-03-25 10:28:29 · 2980 阅读 · 2 评论 -
Fragment传递参数的两种方式
本文采用的是kotlin语言为例在android开发中,我们经常在fragment中传递参数,但是我们经常会使用一些不正常的手段,比如构造方法等之类的和其他的投机取巧的方法,这些方法都是不建议使用的,不利代码高效性和性能的要求,因此建议使用下面两种传递参数的方式一、设置arguments val fragment = MvPagerFragment() val ...原创 2019-03-19 11:07:32 · 4163 阅读 · 0 评论 -
Android获取手机内的音频数据
我们经常需要获取手机信息,例如我们想做一个音乐播放器,我们需要拿到本地的音频信息,这样一来,我们就需要考虑如何拿到这些数据了1,一个神秘的apk这个叫做MediaProvider.apk是干什么的呢,和我们今天讲的东西有啥关联吗,其实这是一个正在运行的apk,这个apk是没有界面的,因此我们是看不见的,他的作用就是在后台默默的为我们收集相关的数据信息。,然后保存在数据库里面从上面的截图...原创 2019-04-17 10:02:44 · 6558 阅读 · 4 评论 -
Android权限申请Kotlin版本
有关权限申请的我就不多做介绍了,这里我们实现一个功能1,当访问隐私功能时 申请权限2,用户点击了拒绝,下次再进来的时候弹出友善的对话框3,用户点击确定,呈现申请权限对话框4,用户点击了同意申请的对话框,申请权限5,申请成功了调用相关方法 override fun initData() { //这里我们需要查询手机内的数据,访问内存信息 handlePer...原创 2019-04-18 11:46:11 · 2807 阅读 · 0 评论 -
kotlin的Anko库
Anko库是一个很强大库,我们可以从官网上的一段话看出来Have you ever been tired of parsing SQLite query results using Android cursors? You have to write lots of boilerplate code just to parse query result rows, and enclose it...原创 2019-06-13 16:00:44 · 1628 阅读 · 0 评论 -
自定义枚举
Java中的自定义枚举优化在性能优化中,枚举的每一个都是一个实,比较耗内存,采用注解能很好的解决这个问题public class SHAPE { public static final int RECTANGLE=0; public static final int TRIANGLE=1; public static final int SQUARE=2; p...原创 2019-06-16 21:19:41 · 270 阅读 · 0 评论 -
java对象池
首先介绍下对象池,所谓的对象池就是存储一部分对象到一个池中,需要时就取,不需要时候就释放,其实对象池中维护的是两个SparseArray。那么对象池有什么用呢,当然是有用的,假设一个场景,在消息处理的时候,比如聊天软件中每个消息都不停的创建和销毁那么这样一来就会给GC造成很大的压力,此时此刻对象池就可以派上用场了,其实在这里我们可以联想到线程池。首先我们看对象池ObjectPool,这是一个抽...原创 2019-06-17 00:04:58 · 776 阅读 · 0 评论 -
App启动流程与消息机制
相信很多人对这个问题不陌生,但是大家回答的都比较简单,如谈到app启动流程有人就会是app的生命周期去了,谈到消息机制有人就会说looper循环消息进行分发,如果是面试可能面试官不会满意,今天我们搞一篇完善的源码解析来进行阐述上面的问题1、第一步了解 ThreadLocal什么是ThreadLocal呢,专业的来讲,ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程...原创 2019-06-21 14:40:24 · 204 阅读 · 0 评论 -
Android 分辨率和dp px等之类的介绍
因为要做屏幕适配和内存优化,随便看了这方面的,自己总结下备用分辨率 px如:720*1080表示 => 720px *1080px=> 720像素点 * 1080像素点通俗的讲,就是宽度有720个像素点,竖向右1080个像素点。屏幕尺寸 in如:我们一般说屏幕多少寸多少寸,说的就是这个,这里说的是对角线的长度,这里有个公式1寸 就是 1英寸, 1英寸 = 2.54厘米,也...原创 2019-07-03 10:05:35 · 944 阅读 · 0 评论 -
Java反射,带你全面解析Java反射
一、前言相信很多没有听说过反射,这也很正常,因为在一般的开发中反射基本上用不着、但是我再Android开发中经常涉及到内存优化、性能优化的问题,需要使用反射,那么今天带给大家一顿丰富的Java反射大餐。二、反射定义反射就是在运行中获取你想获取的一个类中的类实例、方法、成员变量。即使这个类不对外暴露三、反射的优点可以在程序运行中,操作这些对象解耦、提高程序的可扩展性四、反射的机制...原创 2019-07-19 14:29:05 · 246 阅读 · 1 评论 -
Android开发无线调试
很多目前还在用数据线进行调试,但是其实可以进行无线调试的,今天就来介绍下,看到网上很多写的都不怎么正确,很乱,而且有的还不管用,请读者按照以下步骤操作环境:Android studio 3.4.1 设备: Android 9.01 打开开发者选项,打开USB调试2 是用USB命令F:\resource\HomeApp\android\demo>adb usbrestarting...原创 2019-08-19 09:14:07 · 1271 阅读 · 1 评论 -
Cmake的简单论述
关于Cmake很多人应该都听说过,Android在使用JNI和底层的C/C++打交道的时候必须要使用到Cmake,今天就来简单的解析下Cmake。#在android studio升级后,好像是在3.0版本的样子就不用我们手动去配置C/C++的编译环境了,如下图这里我们只用勾选C++ support就可以了,当然如果你想使用kotlin的支持勾选下也是一样的点击 Next完成后是这样...原创 2018-10-15 16:55:23 · 135 阅读 · 0 评论 -
Android的时间分发机制 完整解析
在Android的触摸点击等事件中我们经常需要用到时间分发机制,看了很多朋友写的博客,感觉不是很明朗,综合多家的精粹用通俗的描述全面的介绍下事件分发机制。1。首先来一张全局图1代表我们的activity2代表我们的viewgroup 也就是我们经常说的容器3 就是最顶层的view了 比偶如说 textview imageview等先简单的介绍下,稍后再代码分析当点击最顶层的v...原创 2018-10-11 13:40:21 · 1690 阅读 · 0 评论 -
颜色自动渐变效果ArgbEvaluator的使用
ArgbEvaluator 这个类是一个颜色渐变的控制类,如同下面的效果 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, ...原创 2018-09-07 15:26:45 · 641 阅读 · 0 评论 -
关于andorid播放内部铃声和震动的简单介绍
手机震动提示 关于Android设备震动的情况有一个内部类 Vibrator private Vibrator vibrator; //定义一个内部类 将需要播放的文件放置在相关的文件夹下面,例如下面这个我将danger.mp3存放在assets这个文件夹下面 接下来就是进行代码控制了 bt_getBatter.setOnClickListe...原创 2018-03-01 11:09:04 · 1214 阅读 · 0 评论 -
Android设计模式之 观察者模式
观察者模式是Android众多设计模式中很重要的一种设计模式,在我们平时开发中经常碰到这种模式,简单的来说,这种设计模式就是信息推送的形式,类似我们生活中的报社和订阅者之间的关系,一旦报纸有更新订阅者就会受到相关的信息。 案例: 在我们开发过程中经常用到ListView,也经常会需要用到ListView的adapter.notifyDataSetChanged()来更新,其实这就是观察者模...原创 2018-03-14 14:36:28 · 185 阅读 · 0 评论 -
Android设计模式之 工厂模式
工厂模式也就是省略了创建过程,类似批量生产的形式,一般来说工程模式有三种形式一,简单工厂模式 二,工厂方法模式 三,抽象工厂模式简单的工厂模式: 工厂: 产品: 具体的产品: 具体的工厂:(这个工厂里面只能生产A) 测试:首先创建一个工厂,工厂里面生产一个产品,通过调用产品里面的方法,我们知道产品生...原创 2018-03-14 16:04:12 · 275 阅读 · 0 评论 -
Android触摸事件传递
作为一名Android开发工程师,事件传递肯定是需要了解清楚的,简单的来说也就是你手指在屏幕上操作的时候,这个事件在内部是怎么传递的呢,今天我们需要详细的了解下。(此文章是在巨人的肩膀上编写的)1,触摸时间的几种类型 ACTION_DOWNACTION_MOVEACTION_UP 很简单也就是你手指的按下 移动 松开的这三个核心的操作! 2,触摸事件的三...原创 2018-05-13 11:47:41 · 739 阅读 · 0 评论 -
深入浅出之序列化 Serializable,Parcelable,Externalizable
首先介绍下三个序列化版本的基本情况,1,Serializable是一般的序列化,这种序列化是一种接口,直接实现这个借口就可以,接口里面的所有属性都会被序列化2,Externalizable 这个序列化接口是Serializable的之类,它不会调用默认的构造函数,而是调用自己的构造函数,这个序列化方式不仅仅需要实现这个接口而且需要自己在具体的方法里面添加需要序列化的属性。3,Par...原创 2018-05-14 14:02:48 · 377 阅读 · 0 评论 -
Android ListView中不同样式的布局
在平时android开发当中,我们经常会碰到这样一个需求,在一段listView中差一段不一样的布局,那么这种listView我们应该怎么做呢其实在BaseAdapter这个适配器中我们需要注意两个方法就可以简单的实现下面这种插入不同布局的效果接下来我们就来认识这两个方法下一步在getView中编写加载两种不同布局的逻辑数据...原创 2018-06-03 15:18:08 · 1899 阅读 · 0 评论 -
Android 异步加载深入解析
首先看下android异步加载的整体形式 private class downLoadTask extends AsyncTask<String, Integer, String> { //这里是在后台执行任务,相当于开启了一个进程 @Override protected String doInBackground(Stri...原创 2018-06-15 10:28:59 · 250 阅读 · 0 评论 -
Java/Android设计模式之 Builder设计模式,构建者模式
在众多的设计模式中构建者模式Builder显得非常的精妙,它能在用户不知道内部情况下创建一个对象,也就是省略部分细节,显得简洁大方。今天我们开始介绍这个构建者模式 首先是对象,我们需要生成的对象,这里我们是一个抽象的产品类,其中操作系统需要具体的实现类去操作//计算机,也就是产品类public abstract class Computer { protected Stri...原创 2018-06-23 17:26:22 · 143 阅读 · 0 评论 -
RecycleView的分割线基础
RecycleView很多人可能用不习惯,觉得太麻烦了,但是实际上用起来的时候功能非常强大。话不多说开始吧。ItemDecoration这个是RecycleView分割线//自定义一个类继承RecyclerView.ItemDecorationpublic class CustomDividerItem extends RecyclerView.ItemDecoration ...原创 2018-07-21 10:39:45 · 255 阅读 · 0 评论 -
RecycleView动画效果和拖拽效果
RecycleView功能强大,很简单的几个步骤就能满足我们的开发需求,首先来三个效果 上图是动画,相当于加载数据的时候一个简单的动画效果 上图是拖拽,能够选择一行进行上下拖拽和任意一行进行交换 上图是删除,对不用的选项可以进行删除下面对以上的效果一一进行讲解首先是动画效果 创建动画的xml文件item_animation_fall...原创 2018-07-21 19:02:20 · 1650 阅读 · 0 评论 -
Android Studio 常用快捷键
快捷键又称为“热键”,多个按键的组合可以实现某些快速操作,例如Window中最常用的Ctrl+C和Ctrl+V,熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生。Android Studio也默认提供了众多快捷键方式供开发者调用,推荐使用Android Studio默认风格的快捷键。其实我们没必要一次就背下来,只需要在开发中尽量使用快捷键并打印一份快捷键表在电脑旁,经常使用和查阅,一...转载 2018-08-10 13:46:22 · 143 阅读 · 0 评论 -
ButterKnife8以上版本正确方法
网上看了很多种办法,乱七八糟的,给大家截图成功运行的的配置情况 implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' classpath 'com.neenbedankt.gradle....原创 2018-09-06 15:10:41 · 1756 阅读 · 2 评论 -
retrofit:2.2.0的基本使用
retrofit:2.2.0框架功能强大,在网络加载方面封装的非常优秀,今天我们来了解下他的基本使用方法1,导入依赖: 这里把gson这个优秀的框架也一并导入 implementation 'com.squareup.retrofit2:retrofit:2.2.0' implementation 'com.squareup.retrofit2:converte...原创 2018-09-06 16:25:07 · 638 阅读 · 0 评论 -
AnimationDrawable的基本使用
今天我们介绍下AnimationDrawable的使用方法介绍,其他的Drawable后面我也会一一介绍的 编写XML文件,也就是图片资源文件集合,例如下面的value.xml,android:oneshot=”false”,表示的是循环播放animation-list xmlns:android="http://schemas.android.com/apk/res/androi原创 2018-01-23 09:52:16 · 2715 阅读 · 1 评论