《AndroidStudio实用指南》是老毕的新书,从2015年5月初开始在百度阅读上陆续更新.
AndroidStudio实用指南中所有的建议和问题请大家在这里提BUG给我,我会及时修正. 多谢各位支持.
- 5月14号: 完成第12章更新及校对 √ DONE
- 5月16号: 完成第13章更新及校对 √ DONE
- 5月18号: 完成第14章更新及校对 √ DONE
- 5月20号: 完成第16章更新及校对 √ DONE
- 5月22号: 完成第11章更新及校对 √ DONE
- 5月24号: 完成第09章更新及校对 √ DONE
- 5月26号: 完成第02章更新及校对 √ DONE
- 5月28号: 完成第10章更新及校对 √ DONE
- 6月01号: 完成所有重要章节更新及校对 √ DONE
- 6月15号: 完成第二次校对和代码Review √ DONE
- 6月20号: 完成附录
- 6月25号: 完成前言、序、推荐语 √ 80%
- 6月30号: 交稿 √ DONE
- 10月1号之前出版.
本书针对最新版本的Review的时间表和进度表.
在7月之前已经全部更新完。
| 章节 | 进度 | 时间 |
|---|---|---|
| 第1章 | 100% | 2016.06.23 |
| 第2章 | 100% | 2016.05.23 |
| 第3章 | 100% | 2016.05.23 |
| 第4章 | 100% | 2016.05.23 |
| 第5章 | 100% | 2016.05.23 |
| 第6章 | 100% | 2016.05.23 |
| 第7章 | 100% | 2016.05.23 |
| 第8章 | 100% | 2016.05.23 |
| 第9章 | 100% | 2016.05.23 |
| 第10章 | 100% | 2016.05.23 |
| 第11章 | 100% | 2016.05.23 |
| 第12章 | 100% | 2016.05.23 |
| 第13章 | 100% | 2016.05.27 |
| 第14章 | 100% | 2016.05.27 |
| 第15章 | 100% | 2016.05.27 |
| 第16章 | 100% | 2016.05.27 |
已全部更新完毕..
之前有很多很多的更新,但没在这里记录下来. 一些更新内容大家可以在issues列表里看到.
目前本书已经成型,细节和缺失的部分会陆续完善和补充.多谢支持我的朋友们.
BUG有很多,请大家多多指出. 提BUG给我哈. (现在都是我自己给自己提BUG)
--------------------------------------------------- 我是分割线 ---------------------------------------------------
第14章新增了20个设置技巧,并重新编排了目录,看起来更加清晰,一眼就能找到你想要的设置.
这里漏了很多更新日志......
--------------------------------------------------- 我是分割线 ---------------------------------------------------
新增 11章第1节 配置JIRA、Github、Gitlab任务(task)
新增10.8节 恢复程序运行、暂停程序运行、停止进程、查看断点等
新增 10.8节 禁用断点、 获取线程堆栈、恢复布局、设置、固定标签等
新增 10.9 单步调试工具栏
新增 10.10 计算表达式
import android.graphics.Paint import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.* import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.drawscope.drawIntoCanvas import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun RiskLevelIndicator( productRiskLevel: Int = 3, userRiskTolerance: Int = 4 ){val boxWidth = 60f val boxHeight = 60f val boxGap = 8f Column(horizontalAlignment = Alignment.CenterHorizontally){Text("Product risk level", fontSize = 14.sp) Canvas( modifier = Modifier .fillMaxWidth() .height(120.dp) .padding(horizontal = 16.dp) ){val totalBoxes = 6 val startX = (size.width - (boxWidth * totalBoxes + boxGap * (totalBoxes - 1))) / 2f val centerY = size.height / 2f for (i in 0 until totalBoxes){val x = startX + i * (boxWidth + boxGap) val color = when (i){productRiskLevel -> Color(0xFF2B4A78) // 深蓝色 userRiskTolerance -> Color(0xFF4CAF50) // 绿色 else -> Color(0xFFD3D3D3) // 浅灰色 } drawRoundRect( color = color, topLeft = Offset(x, centerY - boxHeight / 2), size = Size(boxWidth, boxHeight), cornerRadius = CornerRadius(8f, 8f) ) // 绘制数字 drawIntoCanvas{it.nativeCanvas.apply{val textPaint = Paint().apply{color = android.graphics.Color.BLACK textAlign = Paint.Align.CENTER textSize = 36f isAntiAlias = true } drawText( "$i", x + boxWidth / 2, centerY + 12f, textPaint ) } } } // 绘制上方箭头(产品风险) val px = startX + productRiskLevel * (boxWidth + boxGap) + boxWidth / 2 drawPath( path = Path().apply{moveTo(px, centerY - boxHeight / 2 - 10) lineTo(px - 10, centerY - boxHeight / 2 - 30) lineTo(px + 10, centerY - boxHeight / 2 - 30) close() }, color = Color.Black ) // 绘制下方箭头(用户容忍度) val ux = startX + userRiskTolerance * (boxWidth + boxGap) + boxWidth / 2 drawPath( path = Path().apply{moveTo(ux, centerY + boxHeight / 2 + 10) lineTo(ux - 10, centerY + boxHeight / 2 + 30) lineTo(ux + 10, centerY + boxHeight / 2 + 30) close() }, color = Color.Black ) } Text("Your risk tolerance", fontSize = 14.sp) } }