一、标签学习
# 资源文件xml
背景图片样式
<inset>
功能:用于设置背景图片边距等;
参考:关于对android中的inset标签的简单解读_ECHO的博客-CSDN博客
<shape>
功能:简单图形绘制
参考:安卓 Shape 标签(简单图形绘制)_三月的船长-CSDN博客_安卓shape
<string-array>
参考:Android 中string-array的用法_不积跬步,无以至千里-CSDN博客
<vector>
功能:用于定义矢量图标
参考:Android vector标签_架构师的成长之路的博客-CSDN博客_android vector
vector图片资源学习:https://blog.csdn.net/lhzjllh/article/details/78918770
Android Studio创建vector位图:SVG和Vector的概念和如何在Android Studio中使用 - 简书
矢量图标黑白反色:https://blog.csdn.net/actionwind/article/details/114400249
如下就是一个表示“震动”的矢量图标
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="19dp"
android:width="19dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:tint="?android:attr/textColorPrimary">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M1,9h2v6H1V9zM4,17h2V7H4V17zM21,9v6h2V9H21zM18,17h2V7h-2V17zM17,5.5v13c0,0.83 -0.67,1.5 -1.5,1.5h-7C7.67,20 7,19.33 7,18.5v-13C7,4.67 7.67,4 8.5,4h7C16.33,4 17,4.67 17,5.5zM15,6H9v12h6V6z"/>
</vector>
# Android学习相关博主
参考:IT先森_CSDN博客
# 布局文件xml
<space>组件
Android中Space标签于4.0添加的,继承自View主要用于占位,解释如下:
Space is a lightweight View subclass that may be used to create gaps between components in general purpose layouts.
Space是一个轻量级的View,一般用于分隔组件,布局或者在组件布局之间产生间隔
打开Space源码发现他的draw方法是空的,这...(相当可以);
<space>的使用:
<!-- 如果需要占位但是不改变背景颜色,用Space取代View可以节约绘制时间,使用方法也很简单 -->
<android.support.v4.widget.Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
二、函数和类
# 函数
# 类
Notification类
Notification类的函数与参数详解
Android开发之使用Notification.Builder_来来来,走一走-CSDN博客
Notification.Builder()函数
1. 函数的使用
另一个网址:Notification.builder的简单使用 - 包清骏 - 博客园
NotificationManager notificationManager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);//获取系统服务
Notification noti = new Notification.Builder(MainActivity.this)//实例化Builder
.setTicker("sdhsajdsaj")//在状态栏显示的标题
.setWhen(java.lang.System.currentTimeMillis())//设置显示的时间,默认就是currentTimeMillis()
.setContentTitle("New mail from ")//设置标题
.setContentText("111")//设置内容
.setSmallIcon(R.drawable.ic_launcher)//设置状态栏显示时的图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))//设置显示的大图标
.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, new Intent(Settings.ACTION_SETTINGS), 0))//设置点击时的意图
.setDeleteIntent(PendingIntent.getActivity(MainActivity.this, 0, new Intent(Settings.ACTION_SETTINGS), 0))//设置删除时的意图
.setFullScreenIntent(PendingIntent.getActivity(MainActivity.this, 0, new Intent(Settings.ACTION_SETTINGS), 0), true)//这个将直接打开意图,而不经过状态栏显示再按下
.setAutoCancel(false)//设置是否自动按下过后取消
.setOngoing(true)//设置为true时就不能删除 除非使用notificationManager.cancel(1)方法
.build();//创建Notification
notificationManager.notify(1, noti);//管理器通知
三、AndroidManifest.xml
# Intent和IntentFilter
参考:Android的进阶学习(三)--Intent和IntentFilter - 简书
四、常见技术与机制
# RemoteViews
功能:用于跨进程跟新view,主要用在通知栏和小部件的更新
# Callback回调机制
参考:Android开发——回调(Callback) - 广金 - 博客园
# 输出编译log到文件中
参考:如何将编译Log输出到文件中_markvz的博客-CSDN博客_android编译log保存
# pipeline管道
大部分图形系统都可以比作工厂中的装配线(Assemble line)或者称为管道(Pipeline)。前一道的输出作为下道工序的输入。主CPU发出一个绘图指令,然后可能由硬件部件完成坐标变换,裁剪,添加颜色或是材质,最后在屏幕上显示出来。
OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工的工序是固定的,但是可以通过打开或关闭开关来设置参数或者打开关闭某些功能。
OpenGL ES 2.0 允许提供编程来控制一些重要的工序,一些“繁琐”的工序比如栅格化等仍然是固定的。
下图显示了OpenGL ES 1.x 固定管道的结构图:
- 管道“工序”大致可以分为 Transformation Stage 和 Rasterization Stage两大步。
- OpenGL ES 支持的基本图形为 点Point, 线Line, 和三角形Triangle ,其它所有复制图形都是通过这几种基本几何图形组合而成。
- 在发出绘图指令后,会对顶点(Vertices)数组进行指定的坐标变换或光照处理。
- 顶点处理完成后,通过Rasterizer 来生成像素信息,称为”Fragments“ 。
- 对于Fragment 在经过Texture Processing, Color Sum ,Fog 等处理并将最终处理结果存放在内存中(称为FrameBuffer)。
- OpenGL 2.0可以通过编程来修改蓝色的步骤,称为Programmable Shader.
以上管道中工序可以通过设置来打开或关闭某些功能(比如无需雾化Fog处理),并可以为某个工序设置参数,比如设置Vertext Array。
比如如下代码:
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
Android常见问题分析
Android造成ANR的常见问题分析
参考:Android造成ANR的常见原因及示例分析 - 简书