Android开发( 右侧选择分类 )
android01

Android源码解析(十)-- Launcher启动流程

Launcher程序就是我们平时看到的桌面程序,它其实也是一个android应用程序,只不过这个应用程序是系统默认第一个启动的应用程序,这里我们就简单的分析一下Launcher应用的启动流程。不同的手机厂商定制android操作系统的时候都会更改Launcher的源代码,我们这里以android23的源码为例大致的分析一下Launcher的启动流程。通过上一篇文章,我们知道SystemServer
714 人浏览
SuperBig

Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用

这是第六篇文章主要讲的是BoundService中用AIDL实现IPC,自定义属性的使用,上篇博客已经说明了AIDL应该如何使用,但是如果想传入一个自定义的类的时候怎么办呢?那么这篇博客将对这种情况进行详细描述废话不多说了,直接上步骤,前期的步骤上篇博客已经说明了,这篇是对上篇博客的扩展1.新建一AIDL文件,并与你即将定义的类型名字相同,例如Person.aidl2.新建一个类Person.ja
712 人浏览
android

Android Studio卡在refreshing gradle project的原因和快速解决办法

这个问题遇到过很多次,网上也有很多解决办法,但是好像都没有发现refreshing gradle project在做什么。可以再试试./gradlew --info看看详细信息。一般refreshing gradle project出现在打开一个新工程或者升级Android Studio之后,为什么需要refreshing呢?问题就出在gradle-wrapper.properties这个文件上,
704 人浏览
cheng

Android设置Activity全屏的三种方式

设置Activity全屏的三种方式1、代码中设置requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
697 人浏览
SuperBig

Android Service详解(五)---绑定服务BoundService详解之AIDL的使用

一、什么是AIDLAIDL(Android Interface Definition Language)安卓接口定义语言二、为什么使用AIDL呢?如果将Service变成远程Service的话,使用扩展的Binder进行通信会报错:这是由于在Bind Service按钮的点击事件里面我们会让MainActivity和MyService建立关联,但是目前MyService已经是一个远程Service
690 人浏览
SuperBig

Android Service详解(七)---绑定服务BoundService详解之Messenger双向通信的实现

这是第七篇文章主要讲的是BoundService中用Messenger实现IPC。前三篇文章对扩展Binder类和AIDL进行了说明,绑定服务一般通过AIDL和Messenger来实现IPC一、概述Messenger实现IPC通信,底层也是使用了AIDL方式。和AIDL方式不同的是, Messenger方式是利用Handler形式处理,因此,它是线程安全的,这也表示它不支持并发处理;而AIDL方式
686 人浏览
kotlin

Android Edittext进行字符限制

在工作中,根据需求,EditText对输入的内容进行20个字符的限制,一个汉字占两个字符,一个字母占一个字符,当已经输入19个字符的时候,不可以输入汉字,但是还可以输入一个字母。如果输入超过20个字符,进行截取20个字符。以下是网上大神的工具类,我这边根据自己需求修改。(其中的20个可以随意的修改)1,创建工具类packagecom.zhzd.youde.util; importandroi
685 人浏览
cnbzlj

android 获取视频第一帧作为缩略图

今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上。之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需要显示视频的缩略图在界面上给用户看,于是想到显示视频的第一帧作为缩略图。但是我不知道具体怎么写,于是在网上查找资料,最终是解决了问题。这里记录一下。一.使用MediaMetadataRetriever获取视频的第一帧作为缩略图/** * 获取视频文件截图
680 人浏览
android

Android 常用控件 - View 属性大全

(1)视图透明度,值在0-1之间,0为完全透明,1为完全不透明 android:alpha setAlpha(float) (2)视图背景 android:background setBackgroundResource(int) (3)视图是否可点击 android:clickable setClickable(boolean) (4)设置view的备注说明,作为一种辅助功能提
679 人浏览
android02

安卓app升级的3种方式及交互细节

app升级是一个看似简单其实很复杂的事情;网页可以随时更新,用户不需要做任何操作就可以升级到最新版本;但app每次版本发布都需要用户配合才能完成。如何在不同的网络环境下,尽量不打扰用户,让更多的用户完成版本升级?我们以几个电商app为例,来研究下他们是怎么做的。一、WIFI环境(WLAN) 1. 静默升级、自动下载、提示升级如图14-1,京东、天猫、苏宁正好代表了目前主要的3种升级方式。京东采用的
675 人浏览
android01

Android源码解析(十四)-- Activity启动流程

好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等,首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:An activity represents a single screen w
672 人浏览
android

Android webview https 链接中加载http图片,加载不出

问题:链接是https的,但是里面的图片是http的,所以导致图片加载不出。解决:在webview中加上代码webView.getSettings().setJavaScriptEnabled(true); // 启用js webView.getSettings().setBlockNetworkImage(false); // 解决图片不显示 if(Build.VERSION.SDK_INT
668 人浏览
androidproject

Android智能下拉刷新框架-SmartRefreshLayout

Android智能下拉刷新框架-SmartRefreshLayoutEnglish| 中文SmartRefreshLayout以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结
668 人浏览
android01

Android产品研发(五)-- 多渠道打包

国内的Android开发者还是很苦逼的,由于众所周知的原因,google play无法再国内打开,所以android系的应用市场,群雄争霸,而后果就是国内存在着有众多的应用市场,产品在不同的渠道可能有这不同的统计需求,为此android开发人员需要为每个应用市场发布一个安装包,这里就涉及到了android的多渠道打包。本文主要讲解的就是几种主流的多渠道打包方式,以及其优劣势。通过配置gradle脚
668 人浏览
androidproject

封装带分类的RecyclerViewAdapter UniversalTypeRecyclerView

UniversalAdapter这是封装的带分类Recyclerview的Adapter,主要解决项目中分类列表繁琐的重复劳动。不影响Recyclerview或其他封装的上拉下拉Recyclerview的正常使用只需写一个继承UniversalAdapter的adapter支持分类和子项部分的自定义布局数据类需实现OnTypeList接口数据结构JSON示例[ { "title&qu
667 人浏览
cnbzlj

Android 使用MediaPlayer播放assets或者raw目录的音频文件

不废话,需求:当接收到推送消息时,播放apk自带的声音,怎么办?1,首先接入极光推送,我前几篇文章已经讲了,不会的自己去看。在MyReceiver里的public void onReceive(Context context, Intent intent)判断消息类型,然后使用MediaPlayer播放assets或者raw目录的音频文件。if (JPushInterface.ACTION_NOT
667 人浏览
android00

android遍历map的两种常用方法

Map一般用来保存具有映射关系的数据,Map里保存着两组数据:key(键)和value(值),它们可以是任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。遍历方式一、当键和值都需要用到时所采用的方法。Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Ma
665 人浏览
cnbzlj

Mac彻底卸载Android Studio

需要卸载Android Studio应用及相关配置,在终端(terminal)执行以下命令:rm -Rf /Applications/Android\ Studio.app rm -Rf ~/Library/Preferences/AndroidStudio* rm ~/Library/Preferences/com.google.android.studio.plist rm -Rf ~/
663 人浏览
android01

Android产品研发(十四)-- App升级与更新

上一篇文章中我们讲解了android app中的轮训操作,讲解的内容主要包括:我们在App中使用轮训操作的情景,作用以及实现方式等。一般而言我们使用轮训操作都是通过定时任务的形式请求服务器并更新用户界面,轮训操作都有一定的使用生命周期,即在一定的页面中启动轮操作,然后在特定的情况下关闭轮训操作,这点需要我们尤为注意,我们还介绍了使用Timer和Handler实现轮训操作的实例,更多关于App中轮训
662 人浏览
androidproject

Github flutter自定义波浪view

flutter自定义波浪viewvoidmain()=>runApp(WaveWidget( bgColor:Colors.lightBlue, //imageProvider:AssetImage('assets/pic/ic_headimg.png'), //imgSize:Size(50.0,0.0), size:Size(300.0,500.0), ));
659 人浏览