1.构建容易,包名不能包含中文
2.模拟器一般用MuMu模拟器,eclipse 和MuMu模拟器建立连接 adb connect 127.0.0.1:7555
3.连接失败要重启 adb adb kill-server adb start-server
4.运行,工程名字上右键,run as android appclication
src: 存放 java 代码的,有包,有文件
gen: 存放自动生成的文件,关心是 R.java
,程序页面,按键,文本等空间的 ID
Android 4.4: 存放安卓开发的一些库,供开发者调用
asserts: 存放一些资源,配置文件,图片
bin: 编译后会生成的一些文件,包括我们关心的 apk
lib: 依赖库
res:
drawable: 存放 app 程序要用到的一些图片
layout: 存放布局文件的文件夹,一般一个 activity
(安卓页面)对应一个布局
values:存放一些参数,或者自定义控件的文件
AndroidMainfirst.xml: APP 的配置
权限:网络访问权限,名片访问权限,相机访问权限
目标机器 SDK 版本
APP 的名字
APP 的图标
配置第一个被加载,启动页面
Laucher -> mainifirst -> lauch 标签的 activity 被加载 -> oncreat 被调用 -> java 关联 xml 布局页面 -> 显示 -> 等待用户触摸等操作
控件的宽度(快捷方式:w然后按Alt+/)
android:layout_width="match_parent"
控件的高度
android:layout_height="match_parent"
RelativeLayout中子控件常用属性:
1、相对于父控件,例如:android:layout_alignParentTop=“true”
android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
android:layout_alignParentRight 控件的右部与父控件的右部对齐;
2、相对给定Id控件,例如:android:layout_above=“@id/**”
android:layout_above 控件的底部置于给定ID的控件之上;
android:layout_below 控件的底部置于给定ID的控件之下;
android:layout_toLeftOf 控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 控件的右边缘与给定ID的右边缘对齐;
3、居中,例如:android:layout_centerInParent=“true”
android:layout_centerHorizontal 水平居中;
android:layout_centerVertical 垂直居中;
android:layout_centerInParent 父控件的中央;
制作一个登陆界面
布局关系:
在Android界面开发时,为了布局更加合理好看,很多时候会用上Padding和Margin,
padding和margin是什么呢?即内边距和外边距;
某个View指定为padding是针对该View里面的子View距离该View距离而言的,或者是里面的内容距离容器的距离。
某个View指定为margin是针对该View本身距离别人或者父View而言的。
例如下图,输入框里面的文字内容,如果不设置内边距,那么就会紧挨左上角,这样看起来,就很不友好,合理的设置padding看起来会舒服很多。
如果,不设置外边距,会充满整个父布局,也不好看,这时候就需要margin属性(外边距)。
padding属性
android:paddingLeft = “10dp”
android:paddingRight = “10dp”
android:paddingTop = “10dp”
android:paddingBottom = “10dp”
margin属性
android:marginLeft = “10dp”
android:marginRight = “10dp”
android:marginTop = “10dp”
android:marginBottom = “10dp”
按键美化
Android 圆角按钮的实现_tracy的博客-CSDN博客_android button 圆角
2.自定义类实现按键监听事件的接口
2.实现接口类,在类中实现onclicked方法,写业务代码
3.为1,2两部做的准备进行绑定。使得按键被按下后执行你写的业务代码
package com.example.lin.learn;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
class MyClieckHandler implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
System.out.println("按键一");
//Toast.makeText(this, "按键一被按下", 0).show();
break;
case R.id.button2:
System.out.println("按键二");
//Toast.makeText(this, "按键二被按下", 0).show();
break;
}
}
}
public class MainActivity extends Activity {
Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button)findViewById(R.id.button2);
btn1.setOnClickListener(new MyClieckHandler());
btn2.setOnClickListener(new MyClieckHandler());
}
}
3.匿名内部类实现按键响应
4.Activity实现了click接口
6.1 如何为安卓添加多个页面
在src目录下New->Other->Android->Android Activity
在bin目录下有个AndroidManifest.xml
以下代码可以设置哪个页面为启动页面
6.2 如何跳转
6.2 跳转如何传参
方式一:
方式二:
实现页面的诺干秒后的自动跳转效果
run方法(函数)是线程要做的”事情”,相当linuxC线程的回调函数
启动线程
package com.example.lin.learn;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("on Create");
}
@Override
protected void onStart() {
System.out.println("on Start");
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
System.out.println("on Resume");
super.onResume();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
System.out.println("on Stop");
super.onStop();
}
public void getSecond(View v){
//去设置要跳转的页面
Intent intent = new Intent(this,SecondActivity.class);
//跳转
startActivity(intent);
}
}
javaSocket服务端开发:
使用线程方式:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class test {
public static void main(String[] args) {
try {
ServerSocket socket = new ServerSocket(8801);
System.out.println("socket套接字创建成功,等待连接");
while(true){
final Socket con = socket.accept();
System.out.println("有客户端接入");
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
byte[] data = new byte[128];
int len = 0;
InputStream in;
try {
in = con.getInputStream();//获取输入流
len = in.read(data);//读取输入流数据数据
System.out.println("读到消息:"+new String(data, 0, len));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
JavaSocket 客户端开发:
安卓Socket客户端开发注意事项:
网络访问不能在主线程(UI线程)中进行,否则程序会崩溃
要创建线程来发起网络访问
安卓客户端代码
package com.example.lin;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void SendMesageHandle()
{
try {
Socket client = new Socket("192.168.100.191", 8081);
OutputStream out = client.getOutputStream();
String message = "hello world!";
out.write(message.getBytes());
InputStream in = client.getInputStream();
int len;
byte[] data = new byte[128];
len = in.read(data);
System.out.println("获得服务端返回数据是:"+new String(data, 0, len));
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void SendMesage(View v)
{
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
SendMesageHandle();
}
}).start();
}
}
安卓的Handler消息处理机制
Android WebView 的使用(超详细用法)_wt-cai的博客-CSDN博客_android webview
自己做个性化浏览器