Android学习(三)

学号 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节省资源。

位图压缩

代码托管

Android学习(三)

上周考试错题总结

问题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小时

参考资料

上一篇:关于ThreadAbortExcption异常处理


下一篇:Scala知识点汇总