【android,1】1.android的基本配置和布局
2013-12-17 19:53
357 查看
1. sdk目录结构
docs -> 帮助文档
platforms -> 最开始是空的 没有内容.
存放的是对应平台模拟器相关的内容
Android-8目录:
images目录是模拟器的镜像文件
Sources 目录: 平台的源代码目录,默认不存在,创建将源文件放在这个目录下。
android.jar 开发framework提供的jar包
platform-tools :存放开发工具。
开发用到的工具
aapt.exe 程序打包 ->apk文件 android application package tools
adb.exe 开发的一个调试桥 android debug bridge
dx.bat class->dex的工具
samples目录:google工程师给我们提供的实例代码.
tools
android开发经常用到的一些工具
android.bat ->创建和启动模拟器
emulator.exe 模拟器对应的进程可执行文件
ddms -> dalvik debug manager system :dalvik调试管理系统集
屏幕的大小:
vga 640*480
hvga 480*320 i5700 G1
qvga 320*240 u880
wvga 800*480
fwvga 854*480
2. adb指令的使用:
1.查看多少个设备连接到了电脑 adb devices2.adb -s :-s 用于指定设备。
3. 查看模拟器日志命令:adb -s 设备名称 logcat
4.adb pull <remote> <local> 将文件从android放到windows上。 adb push <local><remote> 将文件从 windows 放到 android上。
例:从模拟器中将文件放到windows上:
adb -s emulator-5554 pull /sdcard/aa.txt c:\aa.txt
例:将window中的文件放到模拟器中:
adb -s emulator-5554 push aa.txt /mnt/sdcard/aa.txt
5.当控制台报出了红色的错误,connection timeout
connection error
DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接。
[2012-04-13 11:03:51 - Unexpected error while launching logcat.Try reselecting the device.] 远程主机强迫关闭了一个现有的连接。
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
atsun.nio.ch.SocketDispatcher.read0(Native Method)
atsun.nio.ch.SocketDispatcher.read(Unknown Source)
atsun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
atsun.nio.ch.IOUtil.read(Unknown Source)
使用:adb kill-server :关闭连接桥。
再使用:adb start-server:启动连接桥。
3. 生成的安卓项目目录介绍:
assets:资产目录,资产目录特点:不会对文件产生引用。bin目录:eclipse编译的.class文件的目录,并调用dx.bat通过class文件生成.dex
文件存放在bin目录下。
aapt工具完成程序的打包,生成apk文件。放在bin目录下。
res目录:程序的资源文件。
src :java源文件。
AndroidManifest.xml文件介绍:
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hello" //包名
android:versionCode="1"
android:versionName="1.0" > //程序的版本.
<uses-sdk
android:minSdkVersion="8" //指定运行的android平台版本
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher" //指定应用程序显示的图标
android:label="@string/app_name" //应用程序的名称。
android:theme="@style/AppTheme" >
<activity //相当于一个界面
android:name=".MainActivity" //与类名相同。
//指定界面上显示的名字,引用res/values目录下的strings.xml文
件中的string元素name="test"的值。
android:label="@string/test" >
<intent-filter> //作用:当前的activity会在桌面上产生一个图标。
<actionandroid:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
4. R文件的作用:维护一个系统资源的引用,
res目录下的所有文件都会在R文件中生成引用。assets目录下的文件不会在R文件中生成引用,在打apk包时会原封不动的将资源放置到apk的包assets目录里。
5. 类的介绍
public class MainActivity extends Activity{@Override
//onCreate的方法会在MainActivity第一次被创建的时候执行。
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
//将layout目录下的activity_main.xml布局文件引进来。
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
6. 电话拨号器程序
6.1.创建项目:在res/layout/main.xml文件中设计手机界面的布局。
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView //文本显示
android:id="@+id/tv" //tv 是显示文本的id
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/input_number"
android:textAppearance="@android:attr/textAppearanceLarge" //显示状态
/>
<EditText //输入框
android:id="@+id/editText1" //id
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint"//指定输入框中的提示信息
android:inputType="phone"> //指定输入类型,只允许输入电话号码
</EditText>
<Button
android:id="@+id/bt_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/submit"/> //按钮上的字
6.2.在类中编写代码:
MainActivity 类实现了View.OnClickListener接口,说明该类作为点击事件的监听器覆写接口中的onClick方法,当事件被触发时,执行onclick事件。
public
class MainActivityextends Activity
implements View.OnClickListener {
private EditText
et;
public
voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根据id获取文本框组件
et = (EditText)
MainActivity.this.findViewById(R.id.editText1);
//获取按钮组件
Button button = (Button)this.findViewById(R.id.button1);
//增加点击事件监听器 .//让当前的activity实现onclicklistener接口
button.setOnClickListener(this);
}
@Override
public
booleanonCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return
true;
}
//当按钮被点击到的时候 调用的方法。View.OnClickListener接口中的方法
public
void onClick(Viewv) {
//获取文本框中的数据
String number = et.getText().toString().trim();
//输入框为空
if ("".equals(number)) {
//创建一个提示框,方法参数(上下文,提示信息,显示时间)
Toast.makeText(getApplicationContext(), R.string.error,
Toast.LENGTH_LONG).show();
return;
}
// 拨打电话
// intent 意图,
作用:激活组件的.
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
// Uri.parse()
返回Uri对象,"tel:"+number
为固定写法。
intent.setData(Uri.parse("tel:" + number));
// 激活系统的拨打电话的组件(activity)
startActivity(intent);
}
}
6.3.设置权限:在AndroidManifest.xml文件中添加
<uses-permissionandroid:name="android.permission.CALL_PHONE"/>
即可.
如果不设置权限,执行时会抛java.lang.SecurityException 异常。
提示需要: android.permission.CALL_PHONE 权限。
7. Logcat的使用:
日志输出的级别 和输出的方式://verbose 提示信息 ,方法参数tag:日志标记,默认设置为类名。
Log.v(TAG, "verbose");
// debug 调试
Log.d(TAG, "debug");
// info 重要的信息
Log.i(TAG, "info");
// warn 警告
Log.w(TAG, "warn");
// error 错误的提示
Log.e(TAG, "error");
8. 常见布局介绍
在layout目录下的xml文件中,使用 android:orientation指定布局。1、线性布局:xml文件的根元素为:LinearLayout:表示线性布局。
android:orientation="vertical" :组件线性竖直布局,
android:orientation="horizontal":表示组件线性水平布局。
例 :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
2、相对布局:xml根元素节点是RelativeLayout。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF0000"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/sms_number"/>
<EditText
android:id="@+id/et_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tv_number"//指定当前控件在哪个控件下面
android:ems="10"
android:inputType="phone"
/>
android:layout_alignParentRight="true":表示显示在父窗体的最右边。
android:layout_alignParentBottom="true":显示在父窗体的最底部。
android:layout_above="@id/bt_corner" 当前控件在哪个控件的上面
3、帧布局:FrameLayout根元素:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher"
android:scaleType="center" //图片的大小
//水平居中和竖直居中
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="visible" //控制显示
/>
4、绝对布局:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="17dp"
android:layout_y="182dp"
android:text="Button" />
5、表格布局:
<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow //指定表格的每一行
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="textview01" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="textview01"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
</TableRow>
9. Android下的单位:
px (pixels)像素 :不建议使用.一般HVGA代表320x480像素,这个用的比较多。
建议使用:dp /dip 代替px。
dip或dp(device independent pixels)设备独立像素
这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA推荐使用这个,不依赖像素。
字体的单位:
sp (scaled pixels — best for text size)比例像素
主要处理字体的大小,可以根据系统的字体自适应。
十、发送短息:
相关文章推荐
- Android之四种基本布局
- Android上实现一个简单的天气预报APP(二) 配置布局
- Android控件之ListView基本属性配置
- android面试题目大全<第一部分>,android基本的UI控件和布局文件知识
- android基本布局
- Android01--开始学习Android的基本配置
- android基础-基本常用控件-布局篇
- android开发之四种基本布局
- Android开发之基本控件和详解四种布局方式
- Android六大基本布局详解
- android基本布局之LinearLayout
- Android界面基本属性 (布局)
- Android视图篇之一:Android常见基本布局
- Android UI基本测验“.NET研究”:线性布局
- Gradle for Android(二)——build.gradle基本配置
- 【Android】四种基本布局
- Android中WebView的基本配置与填坑记录大全
- 详解Android应用中使用TabHost组件进行布局的基本方法
- Android基本布局
- kotlin配置android基本工程