android开发

Android 开发技术周报 Issue#275

半世苍凉 提交于 2020-04-07 17:11:30
新闻 谷歌放出玩家大福利:Android精品游戏全免费 畅玩30天 [图]谷歌Play商城测试新界面 移除“已安装”和“库”两个子标签页 LineageOS 17.1发布:基于Android 10定制 自带主题引擎 教程 Kotlin Vocabulary | 密封类 sealed class Android Jetpack CameraX 库 Beta 版正式发布! App 黑白化实现探索,有一行代码实现的方案吗? App 黑白化实现探索2, 发现了一种更方便的方案,我被锤了! 开源库/Librarys BlurTutorial Library for creating blur effects under Android UI elements PlayWidget Break the monotony and make your music player unique! LinkageScrollLayout A container which supports any two view scrolling in it ExoPlayer-Wrapper 📺 Android library, ExoPlayer wrapper KeepAlive Fighting against force-stop kill process on Android with binder

Android知识体系总结2020之Android部分优化篇

空扰寡人 提交于 2020-04-07 15:05:17
  项目优化是每个程序员必修之课,笔者是一名Android开发者,谈不上技术了得,但好在总是认识自己的不足,一点点积累,因为Android项目优化涉及的很多,比如:屏幕适配,绘制优化,内存优化,UI卡顿优化等等,因此本系列文章将会带你对Android项目的方方面面进行优化,希望你抽时间看看,总结总结,这样才能成为一名中高级Android程序员。   本系列文章设计的项目优化知识点如下: 屏幕适配 绘制优化 UI卡顿优化 内存优化 包体积优化 存储优化 耗电优化 App稳定性优化 1.1 屏幕适配   屏幕适配是每个Android程序员都要学会的一项技能。 1.2 绘制优化   绘制优化中包含有布局优化和启动优化,我们的布局层次一定不要层级太多,这样会导致过度绘制问题,那么什么是过度绘制呢?接着我们会从Android 如何完成View绘制到冷启动优化问题,对于App首次启动太慢的问题进行方案解析。 1.3 UI卡顿优化   UI为什么会卡顿?UI线程为什么不能做耗时操作?ANR是什么?Android的ANR机制原理是什么? 1.4 内存优化   内存优化的重要性笔者就不提了。我将会从虚拟机垃圾回收,对象生命周期等再到内存泄漏,内存溢出,内存抖动,以及项目中如何检测内存泄漏等。 1.5 包体积优化 1.6 存储优化 1.7 耗电优化 1.8 App稳定性优化 来源: oschina

有时候横竖屏切换的时候有没自动加载layout布局文件知道为什么吗?

烂漫一生 提交于 2020-04-07 12:29:47
我大概知道原因,但还是不知道确切原因。在我的Mainfester.xml中的有些activity是android:configChanges="keyboardHidden|orientation"有些是android:configChanges="keyboardHidden|orientation|screenSize",后者会出现切换屏幕不会重新加载对于的资源文件。说明没有重新启动activity,(据说从Android 3.2 ( API level 13)开始,"screen size"也随着设备的横竖屏切换而改变。因此,如果你在 API level 13或更高(minSdkVersion和targetSdkVersion属性声明)进行开发时,要防止因方向改变而重新启动,你必须为" orientation "添加"screen size"值。),如果这样的话,那是不是我的每个activity中都要对我的onConfigurationChanged进行处理以保证屏幕加载正确和数据的完整?这样感觉好麻烦,每个都要加正确的做法是不是这样???? 来源: https://www.cnblogs.com/NuoChong/p/12652543.html

一行Java代码实现RecyclerView的Adapter?一行都不需要!

随声附和 提交于 2020-04-07 04:56:19
单类型列表的实现 先看下MainActivity的java代码 public class MainActivity extends AppCompatActivity { //要展示的数据源 public final ObservableArrayList<Student> showDatas = new ObservableArrayList<>(); { //初始化数据源 for (int i = 0; i < 20; i++) { students.add(new Student("学生:" + i)); } showDatas.addAll(students); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //完成数据和布局的绑定 ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setActivity(this); } public void onBindItem(ViewDataBinding binding, Object data, int position) {

android 代码混淆及问题大集锦

醉酒当歌 提交于 2020-04-07 01:45:33
  最近在需要对所开发的项目进行了代码混淆,在android studio中开启代码混淆其实还是挺方便的,不过因为代码混淆产生的问题非常多,特别是对于一些涉及到反射的第三方库经常因为名称的变化导致无法使用。   下面介绍android studio中对android项目进行代码混淆的详细步骤:   (1)代码混淆开启   想要开启代码混淆功能,只需要在相应的项目中将 build.gradle 的相应设置开启即可。 android{ buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }    minifyEnable 即为开启的开关,而proguard-rules.pro是设置代码混淆时的相关设置,可以过滤不代码混淆的对象。   (2)代码混淆规则设置    程序中每个module下面都有对应的 proguard-rules.pro 文件,设置其规则可以过滤掉一些类、方法、注解和属性名的混淆,下面是ProGuard的手册页面,详细的规则可以在其中了解。https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk

Android Studio中的Gradle是什么?

半腔热情 提交于 2020-04-06 21:43:03
问题: Gradle is a bit confusing to me, and also for any new android developer. Gradle让我有些困惑,对于任何新的android开发人员也是如此。 Can anyone explain what Gradle in Android Studio is and what its purpose is? 谁能解释Android Studio中的Gradle是什么,它的目的是什么? Why is it included in Android Studio? 为什么它包含在Android Studio中? 解决方案: 参考一: https://stackoom.com/question/18IeB/Android-Studio中的Gradle是什么 参考二: https://oldbug.net/q/18IeB/What-is-Gradle-in-Android-Studio 来源: oschina 链接: https://my.oschina.net/u/3797416/blog/3221725

Android 应用程序组件介绍

蹲街弑〆低调 提交于 2020-04-06 11:53:11
安卓(Android)是一种基于 Linux 的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。 应用程序组件是一个Android应用程序的基本构建块。这些组件由应用清单文件松耦合的组织。AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互。 以下是可以在Android应用程序中使用的四个主要组件。 Activities 一个活动标识一个具有用户界面的单一屏幕。举个例子,一个邮件应用程序可以包含一个活动用于显示新邮件列表,另一个活动用来编写邮件,再一个活动来阅读邮件。当应用程序拥有多于一个活动,其中的一个会被标记为当应用程序启动的时候显示。 一个活动是Activity类的一个子类,如下所示: public class MainActivity extends Activity { } Services 服务是运行在后台,执行长时间操作的组件。举个例子,服务可以是用户在使用不同的程序时在后台播放音乐,或者在活动中通过网络获取数据但不阻塞用户交互。 一个服务是Service类的子类,如下所示: public class MyService extends Service { } Broadcast Receivers 广播接收器简单地响应从其他应用程序或者系统发来的广播消息。举个例子

android Camera 架构简介

谁说胖子不能爱 提交于 2020-04-06 11:14:25
目前需要做一个语音通话及视频聊天功能开发,主要分为音频及视频两个部分,必然会涉及到Camera及AudioFlinger部分,对于显示部分又会涉及到SurfaceFlinger部分,因此需要一步步的进行学习并确认设计是否合理. 这篇文章主要针对Camera作个简要的介绍,了解需要开发的各个环节。 摄像头系统提供的功能如下几个方面: a、预览功能preview b、视频儿取功能 recording c、拍照功能 takePicture d、参数设置 1、android中基本的架构都是C/S层架构,客户端提供调用接口,实现工作由服务端完成,那么Camera也同样 满足此条件:Client进程虽然不曾拥有任何实质的Camera数据,但是service端为它提供了丰富的接口, 它可以轻松的获得Camera数据的地址,然后处理这些数据。两者通过Binder进行通讯。 首先我们来理清其工作流程,如此才能够知道到底是个啥回事: 按照上图的流程,一路下来都是客户端调用与实现,而这些接口的真正实现却在服务端: 通过阅读其interface函数知道,ICamera中提供的都是控制类接口,而ICameraClient定义的都是回调函数 接口,即真正的数据流传输都是通过回调函数实现的。 ok,通过以上应该知道了基本的摄像头基本层次结构 2、重点介绍一下CamerService ,

Win10下Android studio配置

痞子三分冷 提交于 2020-04-06 05:19:17
Win10下Android studio配置 一 . 安装 Android Studio 的准备工作 1. 下载好 JDK ,去官网上找一个下载下来 2. 安装 JDK .并配置环境变量.安装过程:本人将使用的是jdk-8u25-windows-x64.exe文件,安装到C:\Java\jdk1.8.0_25,对于jre是使用默认安装,配置环境变量,对我的电脑右击属性出现如下框框 选中高级系统设置,出现如下图左边界面: 选择环境变量,出现如上右图界面: 进行配置环境变量,在下面的“ 环境变量 ”中新建变量: 变量名:JAVA_HOME 变量值: C:\Java\jdk1.8.0_25 然后点击确定。 系统变量→寻找 Path 变量→编辑 在变量值最前面输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意;号) 如果要单独运行Java程序(所包含的库文件和工具)的话要再新建一个变量: 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 然后点击确定 全部完成后点击两次确定,就OK了。 然后你运行cmd回车后看看再输入javac回车,出来一堆java命令就表示配置成功了,如下图所示 3.下载Android Studio的安装包 去官网上找一个,下载下来也可以在这个网站上下载:

解决LIstView与EditText冲突问题

半城伤御伤魂 提交于 2020-04-05 22:58:22
  最近遇到一个关于android软键盘的问题。在ListView中每个Item中都有个EditText,在最后的几个Item中,EditText第一次点击界面还能向上弹出,正常显示, 但第二次点击时,软件盘就把最后的几个Item给正当住了。这样很影响用户体验的。   其实解决的办法只要想一下,我相信有经验的开发人员就能够想到,让软键盘在消失的时候让相应Item中的EditText消失焦点clearFouce();但是有个关键的问题, 就是在获得返回事件的时候,如果获得的事件不对那就不会达到想要的效果。这个back时间一定要是自定Layout中的back事件才可以。   直接上代码。 <cn.test.systemSetting.MyLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboardlayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/main_bg" android:orientation="vertical" > <ListView android:id="@+id/lv_data"