开始学android开发了,今天应该算是第二天,昨天同学聚餐,晚上就懒得写笔记了,今天补上。
工欲善其事必先利其器,先下个ADT+jdk,安完ADT,配好环境变量,打开SDK Manager.exe,第一步工具栏中tools->options中勾选force https... ,第二步找到你的hosts(我的路径C:\Windows\System32\drivers\etc)
添加
74.125.113.121 developer.android.com
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com
然后通过SDK Manager.exe下载你所需的东西,android 2.3 android 4.2 这是我下的东东。
好久没看java了快2年了,不得不说有些忘了
昨天用的快捷键或一些小方法
alt+/ 提示
Ctrl+1 快速修复
ctrl+/ 注释
ctrl+shift+o 导包
Ctrl+Shift+P 转至匹配的括号
按住ctrl单击方法可以跳走
/**+回车 文档注释
ctrl+T 继承关系
ctrl+D 删除一行
<activity
android:name="com.fs.firstproject.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> 有这个节点表示第一个启动的activity
android程序运行先访问AndroidManifest.xml文件 <uses-permission android:name="android.permission.CALL_PHONE"/> 添加打电话的权限
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" //wrap_content 按内容大小 match_parent 匹配父节点 fill_parent 填充父节点
android:layout_below="@id/phoneNumberEditText"
android:text="@string/call" //ctrl+1
android:onClick="callNumber" // 添加click事件
/>
<EditText
android:id="@+id/phoneNumberEditText" //@表示R文件 在R文件的id中加入phoneNumberEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone" //只能输入手机号
android:layout_below="@id/title"/>
两种响应点击事件的方式
第一种:
android:onClick="callNumber" // 添加click事件
public void callNumber(View v) {
EditText edittext= (EditText) findViewById(R.id.phoneNumberEditText);//通过id找view组件
String number=edittext.getText().toString();
Intent intent=new Intent();// 新建一个意图
intent.setAction(Intent.ACTION_CALL); //做什么
intent.setData(Uri.parse("tel:"+number));//传数据
startActivity(intent);//开始意图
}
(EditText) findViewById(R.id.phoneNumberEditText);//通过id找view组件
findViewById是在当前设置的View中找对象 setContentView(R.layout.activity_main_ui);
所以如果你是在Fragment中写的控件那么
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_ui,
container, false);//把xml装载到程序中
Button btn = (Button) rootView.findViewById(R.id.btn_Call);
if (btn != null) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+10086));
startActivity(intent);
}
});
}
return rootView;
}
}
}
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
一定要到对应的view中寻找。
在真机上调试,如果嫌装驱动麻烦安个豌豆荚自动装驱动, 就可以在手机上调试程序了。
两种sleep方式
SystemClock.sleep(1000); //不用捕获异常
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
使用线程和发短信
new Thread(new Runnable() {
public void run() {
SmsManager sms= SmsManager.getDefault(); //短信管理器
SystemClock.sleep(1000);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sms.sendTextMessage(
"10086", //收件人号码
null, // 短信中心号码
"内容", //内容
null, //发送成功,回调此广播,通知我们
null); //对方接受成功,回调此广播,通知我们
}
}).start();;
C:\Users\Administrator\.android\debug.keystore 传说中的签名
p.s 老师的笔记
工程目录结构:
src: 存放java代码
gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的id
project.properties: 指定当前工程采用的开发工具包的版本
libs: 当前工程所依赖的jar包.
assets: 放置一些程序所需要的媒体文件.
bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件.
res(resources): 资源文件.
drawable: 存放程序所用的图片.
layout: 存放android的布局文件.
menu: 存放android的OptionsMenu菜单的布局.
values (应用程序所需要的数据. 会在R文件中生成id)
strings.xml 存放android字符串.
dimens.xml 存放屏幕适配所用到的尺寸.
style.xml 存放android下显示的样式.
values-sw600dp 7寸平板所对应的值
values-sw720dp-land 10寸平板所对应的值
values-v11 指定3.0版本以上的手机显示的样式.
values-v14 指定4.0版本以上的手机显示的样式.
AndroidManifest.xml: android应用程序的入口文件. 声明了android里边的组件. 和相关配置信息.
proguard-project.txt: 加密当前程序所使用.
打包安装过程(Run as Android Application ) :
1. 生成apk文件.
1). 生成.dex文件.
2). 资源索引表的生成resources.arsc.
3). 准备未编译文件.
4). 清单文件AndroidMenifest.xml文件转换成二进制.
5). 使用debug.keystore对整个应用程序进行打包签名.
2. 加载apk文件到模拟器中.
把apk文件加载到/data/local/tmp/xxx.apk
3. 安装应用程序.
1). 把/data/local/tmp/xxx.apk文件, 剪切/data/app/包名-1.apk
2). 在/data/data/文件夹下以包名创建一个文件夹, 用于存储当前程序的数据.
3). 在packages.xml和packages.list文件中分别添加一条记录.
adb常用命令