因为这周占用3天时间毕业答辩,所以总结不全面,请谅解。
首先说明一下我是一个电气专业的学生,没有计算机方面的基础。根据我前一个月的经验,我个人觉得如果你没有一点的计算机经验,那么Android的基础就更加的无从谈起,所以我觉得只有一个办法了。一个字,背!!!
读书百遍,其义自现!!!如果你把老师课上讲的资料总结并记住之后,开始重复的练习,我觉得经过很多次的练习,你会发现老师在课上没有讲的经过你的多次的练习,你会有所领悟,你会在自己练习的过程中总结出一套属于你自己的学习方法。
下面我就把我这两天的总结叙述如下:
Day01
RelativeLayout:对viewgroup中的元素进行精确定位;对屏幕中的元素进行
android:layout_toRightOf="@id/btn01" 谁在谁的右边
android:layout_toLeftOf="@+id/btn03" 谁在谁的左边
android:layout_toStartOf="@+id/btn03"
android:layout_toEndOf="@id/btn01"
android:layout_alignParentRight="true" 与父类容器右端对齐
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:text="@string/btn03" 文本内容为。。。
Text中的内容转换为res-->values-->strings.xml中的@string/btn03的步骤:鼠标放置此上,ctrl+1,弹出对话框点击ok。
可在工程目录中的res-->values-->strings.xml,点击另一个框可见(下面)。
android:layout_alignBaseline="" 文本内容基线对齐
android:gravity="center" 文本内容居中
android:layout_gravity=”right/top” 只有帧布局和线性布局使用
android:layout_centerHorizontal="true" 最上面一行的中间
android:layout_centerVertical="true"
android:hint="" 字体灰色,上面能写字。提示语句。
android:text="" 文本内容
android:typeface="" 设置字体
android:textColor="" 字体颜色(RGB:红绿黄 f最深0最浅 例如:#ffff0000红色)
android:textSize="" 字体大小
android:layout_centerInParent="" 水平垂直都居中
android:layout_centerHorizontal="" 水平居中
android:layout_centerVertical="true" 垂直居中
android:layout_below="" 在谁的下面
android:layout_above="" 在谁的上面
容器之间的距离:外边距
android:layout_margin=""
android:layout_marginLeft=""
android:layout_marginRight=""
android:layout_marginBottom=""
android:layout_marginTop=""
内边距
android:padding=""
android:paddingLeft=""
android:paddingRight=""
android:paddingTop=""
android:paddingBottom=""
底端对齐gravity(指内容与边框的对齐)
android:gravity="bottom"
android:gravity="center" 文本内容居中
android:layout_gravity=”right/top” 只有帧布局和线性布局使用
LinearLayout:线性布局。对容器中的元素进行线性方式布局,水平和垂直。不能精确布局。
只有垂直方向(整体)才能水平居中(局部)。
只有水平方向(整体)才能垂直居中(局部)。
水平方向不能右对齐。
垂直方向不能下对齐。
android:layout_width="0dp" 权重(比重)-----水平(整体)
android:layout_weight="1"
android:layout_height="0dp" 权重(比重)----垂直(整体)
android:layout_weight="1"
View是所有类的父类
线性布局右对齐加view,比重为1.
GridLayout:以网格的布局。自动换行。
版本要求API为14:
修改:AndroidManifest.xml
android:columnCount="5" 列的数量,说几就几
android:rowCount="5" 行的数量,说几就几
横跨和填满,结合使用。
android:layout_gravity="fill_vertical" 垂直填满
android:layout_gravity="fill_horizontal" 水平填满
android:layout_columnSpan="2" 横跨几列
android:layout_rowSpan="2" 横跨几行
元素放置在几列(行数系统自动设置)
android:layout_column="" 从0开始
FrameLayout:帧布局
按照一定的层次结构,对元素进行布局。(从左上角展开进行布局)
一层一层进行布局。
放图片<Imageview>
android:src="@drawable/ic_launcher" 获取图片资源
图片复制到res-->drawable。 图片名字只能用小写字母和数字和下划线。
android:scaleType="fitCenter" 拉伸模式
layout_gravity=”right/top” 图片放到右上角。只有帧布局和线性布局使用
安卓官方图片@android:drawable
android:background="@drawable/ic_launcher" 背景图片
组件的大小最好写16dp的整数倍。dp是像素的值。
字体的大小最好是12sp的整数倍。
Common Layout布局优化:
1、优化层次结构(越浅越好,例如:借助merge标签合并相同元素)
继承体系:Window-->Perspective-->openperspective-->other-->Hierarchy View
DDMS中的adb 安卓设备调试桥。
继承体系树状图没有反应,可以重启DDMS的adb。
2、优化对象个数(越少越好)
merge合并:此布局和上一层的布局都是一样的布局。那么此布局的外围布局设置就可以设置为<merge></merge>。并且在上一层的布局中可以写:
<includelayout="@layout/btn_main_01"/>连接此布局。
3、优化布局的可重用性(借助include标签)
引入: <include layout=”layout/@布局文件”/>
4、优化对象的加载时机(延迟加载,借助viewstub)
android:inflatedId="@+id/pbarId"
类加载:类只加载一次。
<!-- 延迟加载layout属性指定的布局 -->
<ViewStub
android:layout="@layout/progressvar_layout_01"
android:inflatedId="@+id/pbarId" //progressbar的id
android:layout_centerHorizontal="true" //加载的图片放在最上面的中间
/>
private ViewStub vStub;
private ProgressBar progressBar;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vStub=(ViewStub)findViewById(R.id.vsId);
progressBar=(ProgressBar)findViewById(R.id.pbarId);
}
public voidonClick(View v){
//加载布局文件(vStub中使用的layout属性此时会加载)
vStub.inflate();
//加载完成以后就可以获得加载的对象了
Log.i("TAG", "onClick.progressBar="+progressBar);
}
//1.借助Context获得布局资源(activity_main.xml)
//2.底层借助pull解析xml资源
//3.底层借助反射构建元素对象
//4.将元素对象添加到activity对应的window窗口上
setContentView(R.layout.activity_main);
去掉app的标题:
AndroidManifest.xml-->
<activity
//无标题API至少需要13
android:theme="@android:style/Theme.Holo.Light.NoActionBar">
</activity>
新建布局Layout:鼠标放在layout-->ctrl+N-->选择xml-->xml file-->layout---
新建android工程:鼠标放置在空地-->Ctrl+N-->选择android
Day02
滚动视图(垂直滚动和水平滚动):
1、ScrollView:默认垂直滚动
2、HorizontalScrollView:水平滚动
说明无论使用哪种布局,在内部都需要嵌套一个LinearLayout对象。
滚动布局里面放线性布局,线性布局里面放内容。
private TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayoutlinearlayout=(LinearLayout)findViewById(R.id.ll);
tv2=(TextView)findViewById(R.id.tv2);
//动态布局,只有java里面有TextView。
for(int i=0;i<20;i++){
//实例化LinearLayout中的TextView
TextView tv=new TextView(this);
//tv.append("Text:"+i);
tv.setOnTouchListener(this);
tv.setText("Text:"+i);
tv.setTextColor(Color.WHITE);
//给LinearLayout中添加部件TextView
linearlayout.addView(tv);
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
CharSequence text=((TextView)v).getText();
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
tv2.setText(text);
}
return true;
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<