android第一天(小有成就,散分)
1.将sdk复制到android-sdk-windows\platforms下.如果有网络的话就android-sdk-windows可以自动下,如果已经手动单独把sdk下好了,那么要手动复制到android-sdk-windows下.
2.安装Eclipse插件ADT.
3.新建android项目.
4.建立配置ADT(ctrl+F11调屏幕方向)
由于官方的下载页面被和谐了...
(SDK等我是在这里下载的:http://www.android123.com.cn/android_kit.html)
Activity就相当于一个页面,所以我们每个类都要去继承它.
在onCreate中可以创建组件视图.
创建完毕后要setContentView(组件视图);让它显示在屏幕中.
如果有多个组件的话,就可以使用XML来创建组件视图以及布局.
我们创建的组件视图都是在布局中的.
默认布局是LinearLayout.
创建视图的id表示 例:@+id/btnOk
如果在XML中要引用已建立的组件视图id那么就直接用如@id/btnOk表示.
如果是字符串那么就使用@string/strings来表示.
其中的strings是在string.xml中定义的.
例:
<string name="strings">TestHello</string>
这个strings就表示TestHello.
表示颜色等都是这样
例颜色:<string name="red">#ff0000</string>
如果显示图像的话就使用@drawable/icon1
例:<ImageButton android:src="@drawable/icon1" .../>
在xml中创建的组件在Java中调用例:
Button btn=(Button) findViewById(R.id.btn);
每当我们改动XML的时候系统就会自动重新生成R.Java
事件一定要在setContentView(R.layout.main)之后写,要不然会报错.
创建完才能find到组件视图.
添加事件:
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {...}
}
参数arg0是所触发事件的视图.
AndroidManifest.xml相当于全局配置文件.
如果要改程序的显示图标,那么就改
<application android:icon="@drawable/icon1" .../>
布局:
LinearLayout:按照水平或垂直进行排列.android:orientation="vertical"(或horizontal)
FrameLayout:左上区,如果添加多个子元素,那么重叠显示在一个元素上.
RelativeLayout:关系布局,添加的时候指定与某个元素的位置;比如之上\之右;出于性能考虑该布局的精确位置只会计算一次.
TableLayout:表格式布局.没什么好说的...
TableRow标签标示布局里面的一行.
布局可以在XML中创建,一般为根元素.
也可以在类中创建;例:
LinearLayout layoutMain=new LinearLayout(this);//创建布局
layoutMain.setOrientition(LinearLayout.HORIZONTAL);//设置为竖直方向
setContentView(layoutMain);//将我们建立的布局与activity关联.
//LayoutInflater对象可以解析XML中的布局.
LayoutInflater inflate=(LayoutInflater)getSystemService(Content.LAYOUT_INFLATER_SERVICE);
RelativeLayout layoutLeft=inflate.inflate(R.layout.left,null);//解析并生成一个RelativeLayout布局.
RelativeLayout.LayoutParams relParam=
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WARP_CONTENT,
RelativeLayout.LayoutParams.WARP_CONTENT );
生成relationlayout的布局参数.
layoutMain.addView(layoutLeft,100,100);//加入布局视图,高度,宽度
layoutMain.addView(layoutRight,relParam);//加入布局视图,布局参数
参数值:
FILL_PARENT:和父容器一样大.
WARP_CONTENT:和内容一样大.
Activity跳转:
在相应事件中:
Intent intent=new Intent();
intent.setClass(TestHello.this, Hello.class);//从第一个参数的页面跳转到第二个参数的页面.
startActivity(intent);//启动这个跳转
在AndroidManifest.xml中的<application>内加入<activity android:name="类"></activity>
结束当前activity,方法为:finish();
activity间跳转传值:
intent.putExtra("key",value);
startActivityForResult(intent,REQUEST_CODE);
//startActivityForResult()这个方法启动Intent,并且当新的activity运行结束的时候,还必须执行原Activity的回调函数onActivityResult().
//startActivity()这个方法在新的activity执行完后不会执行回调函数,也不用返回任何值.
接传来的值:
Bundle extras=getIntent().getExtras();
String key=extras.getString("key");
Bundle类型是一个类型安全的容器,它的实现是HashMap.它只能存放基本类型或基本类型的数组(有String);
setResult(RESULT_OK,intent);
setResult()方法第一个参数是返回结果码,第二个参数是返回调用此activity的intent.
onActivityResult(int requestCode,int resultCode,Intent data);
第一个参数原始Intent中requestCode,
第二个参数暗示了在心的activity中操作是否合法正确.如果一切是正确的,那么就返回0,如果返回值不是0,那就说明程序运行出现了问题.android提供了一些标准的值,但也可以自己设置.
第三个参数要返回的Intent
数据库:
SharedPreferences:存储方式非常方便,但只适合存储比较简单的数据.
文件存储:以文件的方式存放/读取
SQLite:
内容提供器(Content provider):可多程序共享
SharedPreferences:
SharedPreferences sp=getSharedPreferences("story", 0);
String txt=sp.getString("txt", "");//取数据,default值
sp.edit().putString("txt",edt.getText().toString()).commit();//存数据,最后提交.