学号 20189214 《Android程序开发》第八周学习总结
教材学习内容总结
GridView
GridView和ListView一样是AbsListView的子类;
都需要一个Adapter来适配数据。
下面是GridView中的一些属性:
- android:columnWidth:设置列的宽度
- android:gravity:组件对其方式
- android:horizontalSpacing:水平方向每个单元格的间距
- android:verticalSpacing:垂直方向每个单元格的间距
- android:numColumns:设置列数
- android:stretchMode:设置拉伸模式,可选值如下: none:不拉伸;spacingWidth:拉伸元素间的间隔空隙 columnWidth:仅仅拉伸表格元素自身 spacingWidthUniform:既拉元素间距又拉伸他们之间的间隔空袭
样式和主题
样式
使用style属性可以很方便的抽取一些属性,不用重复写很多相同的属性。
定义:
<style name="TextViewStyle">
<item name="android:textColor">#000</item>
<item name="android:textSize">20sp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:background">#8f00</item>
<item name="android:gravity">center_horizontal</item>
</style>
<style name="TextViewStyle1" parent="TextViewStyle">
<item name="android:textSize">40sp</item>
<item name="android:background">#8ff0</item>
</style>
主题####
主题一般解决Activity切换黑屏、白屏问题:
//1、设置背景图Theme
<style name="Theme.AppStartLoad" parent="android:Theme">
<item name="android:windowBackground">@drawable/ipod_bg</item>
<item name="android:windowNoTitle">true</item>
</style>
//2、设置透明Theme
<style name="Theme.AppStartLoadTranslucent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
1.透明度设置
WindowManager.LayoutParams lp=getWindo().getAttributes();
lp.alpha=0.5f;
getWindow().setAttributes(lp);
alpha在0.0f到1.0f之间。
2.昏暗度
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.dimAmount=0.5f;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dimAmount在0.0f和1.0f之间。
3.背景模糊
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
View设置View view=...
view.getBackground().setAlpha(100);//0~255透明度值 ,0为完全透明,255为不透明
位图处理
加载位图
BitmapFactory类可以从一个文件、一个字节数组、一个Android资源或一个InputStream来构建一个Bitmap。
1、通过Bitmap的静态方法static Bitmap createBitmap()系
方法名(只列出部分方法) | 用法说明 |
---|---|
createBitmap(Bitmap src) | 复制位图 |
createBitmap(Bitmap src,int x ,int y,int w,int h) | 从源位图src的指定坐标(x,y)开始,截取宽w,高h的部分,用于创建新的位图对象 |
createScaledBitmap(Bitmap src,int w ,int h,boolean filter) | 对源位图src缩放成宽为w,高为h的新位图 |
createBitmap(int w ,int h,Bitmap.Config config) | 创建一个宽w,高h的新位图(config为位图的内部配置枚举类) |
createBitmap(Bitmap src,int x ,int y,int w,int h,Matrix m,boolean filter) | 从源位图src的指定坐标(x,y)开始,截取宽w,高h的部分,按照Matrix变换创建新的位图对象 |
2、通过BitmapFactory工厂类的static Bitmap decodeXxx()系
方法名(只列出部分方法) | 用法说明 |
---|---|
decodeByteArray(byte[] data, int offset, int length) | 从指定字节数组的offset位置开始,将长度为length的数据解析成位图 |
decodeFile(String pathName) | 从pathName对应的文件解析成的位图对象 |
decodeFileDescriptor(FileDescriptor fd) | 从FileDescriptor中解析成的位图对象 |
decodeResource(Resource res,int id) | 根据给定的资源Id解析成位图 |
decodeStream(InputStream in) | 把输入流解析成位图 |
教材学习中的问题和解决过程
问题1:位图处理中压缩
问题1解决方案:压缩方法有以下质量压缩、采样率压缩、缩放法压缩、RGB_565法、createScaledBitmap等方法,也可使用新的图片格式webP节省资源。
位图压缩
代码托管
上周考试错题总结
问题1:Android中所有的意图都可以用来启动活动.
问题1解决方案:并不是所有的意图都可以用来启动活动。
要确保一个 Intent 能够启动一个活动,需要在将其传递给
startActivity 之前,调用其 resolveActivity 方法:
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
不能解析为一个动作的意图,如果传递给了 startActivity,将会抛出一个异常。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 150/200 | 2/2 | 20/20 | |
第二周 | 200/400 | 1/3 | 20/40 | |
第三周 | 100/500 | 1/4 | 10/50 | |
第四周 | 200/700 | 1/5 | 15/65 | |
第五周 | 1486/2186 | 1/6 | 15/80 | |
第六周 | 1400/3586 | 1/7 | 18/98 | |
第七周 | 1400/5000 | 1/8 | 18/116 | |
第八周 | 1200/6200 | 1/9 | 15/131 |
计划学习时间:15小时
实际学习时间:15小时