参考教程
安卓基础入门
签名
1.签名的作用
- Android APP都需要一个证书对应用进行数字签名,否则无法安装
- 调试时AS自动用默认的密钥和证书来进行签名;
实际发布编译时,则不会自动签名,需要手动签名
为我们的APK签名有以下好处:- 应用程序升级:
如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!
应用程序模块化
Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。
代码或者数据共享
Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。
- 应用程序升级:
【小提示】反编译
View-ViewGroup
Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得,而创建UI布局的方式有两种, 自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解! 也是我们最常用的手段!另外我们一般很少直接用View和ViewGroup来写布局,更多的 时候使用它们的子类控件或容器来构建布局!
- 如textView是控件,而LinearLayout是容器
LinearLayout
weight属性
width=0/height=0
按照比例分<TextView ( android:layout_weight="1" ) android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="one" android:background="#98FB98" /> <TextView android:layout_weight="2" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="two" android:background="#FFFF00" />
width=match_parent
计算得到
step1:minWeight-maxWeight=valWeight
Step2:1+valWeight*(weight[i]/allWeight)=realWeight
ex:代码 2:3:4
4-2=-2
1-2*(2/(2+3+4))=5/9
…
得出5:3:1
分割线
使用LinearLayout的一个divider属性
- android:divider设置作为分割线的图片
- android:showDividers设置分割线的位置,none(无begining(开始),end(结束),middle(每两个组件间)
- dividerPadding设置分割线的Padding
layout-gravity
- 左右布局
- 用两个LinearLayout,且内部的用gravity:right
- 用两个LinearLayout,且内部的用gravity:right
当 android:orientation=”vertical” 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。 即:left,right,center_horizontal 是生效的。 当 android:orientation=”horizontal” 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。 即:top,bottom,center_vertical 是生效的。
TableLayout
- TableLayout里用tablerow包裹每一行
- 居中
stretchColumns(拉伸列)
,让该列填满这一行所有的剩余空间
①调用gravity属性,设置为center_vertical,让布局里面的组件在竖直方向上居中
②将TableLayout中的第一和第四列设置为可拉伸,android:stretchColumns=”0,3” 设置为0.3,是为了让两边都充满,那么中间部分就可以居中了
③在每个TableRow中添加两个TextView,用于拉伸填满该行,这样可以让表格水平居中
FrameLayout
Demo01——Potato
- Bitmap,canvas,paint的用法
- setOnTouchListener
流程
就是自定义一个View类,重写重绘方法,接着在Activity中为他添加一个触摸时间在触摸时间中重写onTouch方法获取点击焦点,另外还需要-150,不然那个坐标是自定义View的左上角,接着调用invalidate( )重绘方法,最后添加到帧布局中而已!
Demo02——RunningGirl(动画)
- handler类对象,timer
- Drawable对象
- Foreground和setForeground
流程
就是定义一个handler对象来刷新帧布局的前景图像,定义一个Timer定时器每隔170毫秒发送定时信息,i++;move(i%8);这里是因为我们使用8个图片作为动画素材!
GridLayout
我们通过:android:layout_rowSpan与android:layout_columnSpan设置了组件横跨 多行或者多列的话,如果你要让组件填满横越过的行或列的话,需要添加下面这个属性: android:layout_gravity = “fill”!!!就像这个计算机显示数字的部分!
用法归纳:
step 1:先定义组件的对其方式 android:orientation 水平或者竖直,设置多少行(rowCount)与多少列(columnCount)
step 2:设置组件所在的行或者列,记得是从0开始算的,不设置默认每个组件占一行一列
step 3:设置组件横跨几行或者几列(columnSpan…);设置完毕后,需要在设置一个填充:android:layout_gravity = “fill”因为GirdLayout是4.0后才推出的,所以minSDK版本要改为14或者以上的版本