一、增加第二个页面

二、相对布局

<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=".OtherActivity" >
	
    <RelativeLayout 
        android:id = "@+id/girl1"
        android:layout_width="match_parent"
    	android:layout_height="300dp"
    	android:background="@drawable/girl1"
     ></RelativeLayout>

      <RelativeLayout 
        android:layout_below = "@id/girl1"
        android:layout_width="match_parent"
    	android:layout_height="300dp"
    	android:background="@drawable/girl2"
     ></RelativeLayout>
    
</RelativeLayout>

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  父控件的中央;

三、安卓的基础控件

按键

文本框

输入框

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
     <RelativeLayout 
         
         android:layout_width="300dp"
         android:layout_height="350dp" 
         android:layout_centerInParent="true"
		 android:background="#ff0000" >
		 
         <TextView 
            android:id="@+id/user"  
			android:layout_height="wrap_content" 
			android:layout_width="wrap_content" 
			android:text="用户"
			android:layout_marginTop="20dp"
			android:textColor="#ffffff"
			android:textSize="20dp"/>
         
         <EditText 
            android:id="@+id/ed1"  
			android:layout_height="40dp" 
			android:layout_width="300dp" 
			android:layout_marginTop="20dp"
			android:layout_toRightOf="@id/user"
             />
         
           <TextView 
            android:id="@+id/passwd"  
			android:layout_height="wrap_content" 
			android:layout_width="wrap_content"
			android:layout_below="@id/user" 
			android:text="密码"
			android:layout_marginTop="20dp"
			android:textColor="#ffffff"
			android:textSize="20dp"/>
         
         <EditText 
            android:id="@+id/ed2"  
			android:layout_height="40dp" 
			android:layout_width="300dp" 
			android:layout_marginTop="20dp"
			android:layout_toRightOf="@id/passwd"
			android:layout_below="@id/user"
             />
        <Button 
            android:layout_below="@id/ed2"
            android:layout_height="wrap_content" 
			android:layout_width="wrap_content" 
			android:layout_alignParentRight="true"
			android:text="确定"
			/>

         
     </RelativeLayout>

</RelativeLayout>

四、margin和padding

android dialog 没有横向铺满_xml

三、线性布局

android dialog 没有横向铺满_android_02

<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" >

<LinearLayout 
    android:layout_width="350dp"
    android:layout_height="100dp"
    android:layout_centerInParent="true"
    android:orientation="horizontal">
    <LinearLayout 
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="2"
         android:orientation="vertical"
        >
  		<TextView android:layout_width="match_parent" 
	  		    android:layout_height="0dp"
	 		    android:layout_weight="1" 
	  		    android:gravity="center"
				android:text="账号"/>
		<TextView android:layout_width="match_parent"
	          android:layout_height="0dp"
	          android:layout_weight="1"
	          android:gravity="center"
	          android:text="密码"/>
		<TextView android:layout_width="match_parent"
	          android:layout_height="0dp"
	          android:layout_weight="1"
	          android:gravity="center"
	          android:text="用户ID"/>
    </LinearLayout>
      <LinearLayout 
        android:layout_height="100dp"
        android:layout_width="0dp"
        android:layout_weight="5"
        android:orientation="vertical"
        >
         <EditText android:layout_width="match_parent" 
             	   android:layout_height="0dp"
             	   android:layout_weight="1"/>
         <EditText android:layout_width="match_parent" 
             	   android:layout_height="0dp"
             	   android:layout_weight="1"/>
         <EditText android:layout_width="match_parent" 
             	   android:layout_height="0dp"
             	   android:layout_weight="1"/>
      </LinearLayout>
    
</LinearLayout>

</RelativeLayout>

四、按键接收

4.1方式一:在xml中设置按键的onclink绑定的函数

首先在安卓的xml中写

<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" >
	
    <Button 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text= "yes"
        android:onClick="buttonOnClick"/>
 

</RelativeLayout>

然后在主函数中声明你绑定的函数

package com.example.demoonclick;

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 buttonOnClick(View v) {
	  System.out.println("ok");
  }
  
    
}

注意点:使用ctl+shift+o调入需要的包

4.2方式二 自定义类实现接口

MainActivity.java

package com.example.twoonclick;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


class MyClicnk implements View.OnClickListener {
	Button btn1;
	Button btn2;
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1 :
			System.out.println("this 1");
			break;
		case R.id.button2:
			System.out.println("this 1");
			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 MyClicnk());
        btn2.setOnClickListener(new MyClicnk());
    }
  
    
}

activity_main.xml

<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" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="107dp"
        android:text="1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_centerVertical="true"
        android:text="2" />

</RelativeLayout>

4.3方式三 匿名内部类的实现

package com.example.twoonclick;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


class MyClicnk implements View.OnClickListener {
	Button btn1;
	Button btn2;
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1 :
			System.out.println("this 1");
			break;
		case R.id.button2:
			System.out.println("this 1");
			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 View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				System.out.println("this 1");
				Toast.makeText(MainActivity.this, "butn1 press", 0).show();
			}
		});
        btn2.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				System.out.println("this 2");
				Toast.makeText(MainActivity.this, "butn2 press", 0).show();
			}
		});
    }
  
    
}

4.4方式四 Activity

package com.example.threeonclick;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {
	
	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(this);
        btn2.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1 :
			System.out.println("this 1");
			break;
		case R.id.button2:
			System.out.println("this 2");
			break;
		}
	}


}

五、页面跳转

主要使用的是Intent 进行页面的跳转,我们这边的话再通过我们的按键完成我们达到按下就跳转到其他页面的效果。

public void goSencond(View v) {
	   Intent intent = new Intent(this,SencondActivity.class);
	   startActivity(intent);
   }

MainActivity.java

package com.example.page1;

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);
    }


   public void goSencond(View v) {
	   Intent intent = new Intent(this,SencondActivity.class);
	   startActivity(intent);
   }
    
}

activity_main.xml

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是第一个页面" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="72dp"
        android:onClick="goSencond"
        android:text="跳转到第二个页面" />

</RelativeLayout>

六、页面传递参数

方式一:还是要借助Intent这个函数

package com.example.page1;

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);
    }


   public void goSencond(View v) {
	   Intent intent = new Intent(this,SencondActivity.class);
	   intent.putExtra("Mydate", "love");
	   startActivity(intent);
   }
    
}
package com.example.page1;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;

public class SencondActivity extends Activity {
	public String date;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sencond);
		
		   Intent i = this.getIntent();
		  date = i.getStringExtra("Mydate");
		  Toast.makeText(this, "date : "+date, 0).show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.sencond, menu);
		return true;
	}

}

方式二:使用Bundle

java

package com.example.page1;

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);
    }


   public void goSencond(View v) {
	   Intent intent = new Intent(this,SencondActivity.class);
	   Bundle bundle = new Bundle();
	   bundle.putString("Mydate", "love u");
	   bundle.putInt("ID", 100);
	   intent.putExtras(bundle);
	
	   startActivity(intent);
   }
    
}

xml:

package com.example.page1;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.Toast;

public class SencondActivity extends Activity {
	public String date;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sencond);
		
		Intent i = this.getIntent();
		Bundle b = i.getExtras();
		String date  = b.getString("Mydate");
		int id = b.getInt("ID");
		
	    Toast.makeText(this, "Mydate : "+date+ "id :" +id, 0).show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.sencond, menu);
		return true;
	}

}

七、自动跳转的效果

package com.example.page2;

import com.example.page2.MainActivity;
import com.example.page2.SeMainActivity;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
	   Thread th1 = new Thread(new Runnable() {
	    		
	    		@Override
	    		public void run() {
	    			// TODO Auto-generated method stub
	    				try {
	    					Thread.sleep(3000);
	    				} catch (Exception e) {
	    					// TODO: handle exception
	    					e.printStackTrace();
	    				}
	    			
	    			
	    			   Intent intent = new Intent(MainActivity.this,SeMainActivity.class);
	    			   
	    			   startActivity(intent);
	    		}
	    	});
	         
	        th1.start();
        
        
        
    }


 
    
}

八、页面的生命周期

android dialog 没有横向铺满_控件_03

九、socket编程

服务端代码编写:

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {
	public static void main(String[] args) {
		byte [] date = new byte[128];
		int len = 0;
		
		try {
			ServerSocket socket = new ServerSocket(8801);
			System.out.println("Socket create success!");
			Socket con = socket.accept();
			System.out.println("client connected!\r\n");
			
			InputStream in = con.getInputStream();
			len = in.read(date);
			System.out.println("接收到 消息"+new String(date,0,len));
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}
}

多次连接

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class demo {
	public static void main(String[] args) {
	
		
		try {
			ServerSocket socket = new ServerSocket(8801);
			System.out.println("Socket create success!");
			
			while(true){
				final Socket con = socket.accept();
				System.out.println("client connected!\r\n");
				
				new Thread(new Runnable() {
				
					public void run() {
						// TODO Auto-generated method stub
						InputStream in;
						
						try {
							byte [] date = new byte[128];
							int len = 0;
							in = con.getInputStream();
							len = in.read(date);
							System.out.println("接收到 消息"+new String(date,0,len));
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
					}
				}).start();
			
			}
			
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}
}

客户端

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;


public class demo {
	public static void main(String[] args) {
		
		try {
			Socket client  = new Socket("192.168.1.13",8086);
			OutputStream out = client.getOutputStream();
			Scanner sc = new Scanner(System.in);
			String message = sc.next();
			out.write(message.getBytes());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

十、页面刷新

package com.example.shuaxing;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	public TextView textView; 
	public Handler h;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView = (TextView)findViewById(R.id.textView1);
        
        h = new Handler(){
        	
        	@Override
        	public void handleMessage(Message msg) {
        		// TODO Auto-generated method stub
        		super.handleMessage(msg);
        		textView.setText("qi"+msg.what);
        	}
        };
    }
    
    public void myClick(View v){
    	new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println("qi");
			    	for (int j = 0; j <10; j++) {
			    		Message msg = new Message();
			    		msg.what = j;
			    		h.sendMessage(msg);
			    		try {
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
					}
		    	
		    	
			}
		}).start();
    	
    	
    	
    }

    
}

十一、综合页面

MainActivity.java

package com.example.smartjhiemian;

import com.example.smartjhiemian.net.NetUtils;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	Handler handler;
	TextView tx;
	
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        handler = new Handler() {
        	@Override
        	public void handleMessage(Message msg) {
        		// TODO Auto-generated method stub
        		
        		tx = (TextView) findViewById(R.id.tx);
        		super.handleMessage(msg);
        		Bundle b = msg.getData();
        		String str1 = b.getString("msg");
        		
        		tx.setText(str1);
        	}
        };
    
    }
  
    public void sendMessage(View v) {
    	switch(v.getId()){
    	case  R.id.button1:
    		NetUtils.sendMessage("GOFORWARD", handler);
    		break;
    	}
    	
    }
}

NetUtils.java

package com.example.smartjhiemian.net;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class NetUtils {

	  public static void sendMessage(final String command,final Handler h) {
			new Thread(new Runnable() {
				
				@Override
				public void run() {
				    	
				
					try {
						int len = 0;
						Socket client = new Socket("192.168.1.13",8087);
						OutputStream out = client.getOutputStream();
						out.write(command.getBytes());
						
						InputStream in =client.getInputStream();
						byte[] date = new byte[128];
					
						
						len = in.read(date);
						String str = new String(date,0,len);
						Message msg = new Message();
						
						Bundle b = new Bundle();
						b.putString("msg", str);
						msg.setData(b);
						
						h.sendMessage(msg);
						
					} catch (UnknownHostException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
			    	

			}).start();
	    	
	    }
	
	
}

activity_main.xml

<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"
     android:background="#000000"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发起网络请求"
        android:onClick="sendMessage"
        android:background="#000000"
        android:textColor="#ffffff" />
    
    <TextView 
        android:id="@+id/tx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="35dp"
        android:layout_centerInParent="true"
        android:textColor="#ffffff"
        />

</RelativeLayout>

android dialog 没有横向铺满_控件_04