編輯:關於Android編程
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText content; //聲明一個輸入文本內容的編輯框對象
private Button button; //聲明一個發表按鈕對象
private Handler handler; // 聲明一個Handler對象
private String result = ""; //聲明一個代表顯示內容的字符串
private TextView resultTV; //聲明一個顯示結果的文本框對象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content = (EditText) findViewById(R.id.content); //獲取輸入文本內容的EditText組件
resultTV = (TextView) findViewById(R.id.result); //獲取顯示結果的TextView組件
button = (Button) findViewById(R.id.button); //獲取“發表”按鈕組件
//為按鈕添加單擊事件監聽器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if ("".equals(content.getText().toString())) {
Toast.makeText(MainActivity.this, "請輸入要發表的內容!",
Toast.LENGTH_SHORT).show(); //顯示消息提示
return;
}
// 創建一個新線程,用於發送並讀取微博信息
new Thread(new Runnable() {
public void run() {
send(); //發送文本內容到Web服務器
Message m = handler.obtainMessage(); // 獲取一個Message
handler.sendMessage(m); // 發送消息
}
}).start(); // 開啟線程
}
});
//創建一個Handler對象
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (result != null) {
resultTV.setText(result); // 顯示獲得的結果
content.setText(""); //清空文本框
}
super.handleMessage(msg);
}
};
}
public void send() {
String target="";
target = "http://192.168.1.66:8081/blog/index.jsp?content="
+base64(content.getText().toString().trim()); //要訪問的URL地址
URL url;
try {
url = new URL(target);
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection(); //創建一個HTTP連接
InputStreamReader in = new InputStreamReader(
urlConn.getInputStream()); // 獲得讀取的內容
BufferedReader buffer = new BufferedReader(in); // 獲取輸入流對象
String inputLine = null;
//通過循環逐行讀取輸入流中的內容
while ((inputLine = buffer.readLine()) != null) {
result += inputLine + "\n";
}
in.close(); //關閉字符輸入流對象
urlConn.disconnect(); //斷開連接
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//對字符串進行Base64編碼
public String base64(String content){
try {
content=Base64.encodeToString(content.getBytes("utf-8"), Base64.DEFAULT); //對字符串進行Base64編碼
content=URLEncoder.encode(content); //對字符串進行URL編碼
} catch (UnsupportedEncodingException e) {
e.printStackTrace(); //輸出異常信息
}
return content;
}
}
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText nickname; // 聲明一個輸入昵稱的編輯框對象
private EditText content; // 聲明一個輸入文本內容的編輯框對象
private Button button; // 聲明一個發表按鈕對象
private Handler handler; // 聲明一個Handler對象
private String result = ""; // 聲明一個代表顯示內容的字符串
private TextView resultTV; // 聲明一個顯示結果的文本框對象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content = (EditText) findViewById(R.id.content); // 獲取輸入文本內容的EditText組件
resultTV = (TextView) findViewById(R.id.result); // 獲取顯示結果的TextView組件
nickname = (EditText) findViewById(R.id.nickname); // 獲取輸入昵稱的EditText組件
button = (Button) findViewById(R.id.button); // 獲取“發表”按鈕組件
// 為按鈕添加單擊事件監聽器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if ("".equals(nickname.getText().toString())
|| "".equals(content.getText().toString())) {
Toast.makeText(MainActivity.this, "請將內容輸入完整!",
Toast.LENGTH_SHORT).show();
return;
}
// 創建一個新線程,用於從網絡上獲取文件
new Thread(new Runnable() {
public void run() {
send();
Message m = handler.obtainMessage(); // 獲取一個Message
handler.sendMessage(m); // 發送消息
}
}).start(); // 開啟線程
}
});
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (result != null) {
resultTV.setText(result); // 顯示獲得的結果
content.setText(""); // 清空內容編輯框
nickname.setText(""); // 清空昵稱編輯框
}
super.handleMessage(msg);
}
};
}
public void send() {
String target = "http://192.168.1.66:8081/blog/dealPost.jsp"; //要提交的目標地址
URL url;
try {
url = new URL(target);
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection(); // 創建一個HTTP連接
urlConn.setRequestMethod("POST"); // 指定使用POST請求方式
urlConn.setDoInput(true); // 向連接中寫入數據
urlConn.setDoOutput(true); // 從連接中讀取數據
urlConn.setUseCaches(false); // 禁止緩存
urlConn.setInstanceFollowRedirects(true); //自動執行HTTP重定向
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded"); // 設置內容類型
DataOutputStream out = new DataOutputStream(
urlConn.getOutputStream()); // 獲取輸出流
String param = "nickname="
+ URLEncoder.encode(nickname.getText().toString(), "utf-8")
+ "&content="
+ URLEncoder.encode(content.getText().toString(), "utf-8"); //連接要提交的數據
out.writeBytes(param);//將要傳遞的數據寫入數據輸出流
out.flush(); //輸出緩存
out.close(); //關閉數據輸出流
// 判斷是否響應成功
if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStreamReader in = new InputStreamReader(
urlConn.getInputStream()); // 獲得讀取的內容
BufferedReader buffer = new BufferedReader(in); // 獲取輸入流對象
String inputLine = null;
while ((inputLine = buffer.readLine()) != null) {
result += inputLine + "\n";
}
in.close(); //關閉字符輸入流
}
urlConn.disconnect(); //斷開連接
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
和HttpURLConnection中的Get上述代碼中唯一不同的是send方法;
public void send() {
String target = "http://192.168.1.66:8081/blog/deal_httpclient.jsp?param=get"; //要提交的目標地址
HttpClient httpclient = new DefaultHttpClient();//創建HttpClient對象
HttpGet httpRequest = new HttpGet(target); //創建HttpGet連接對象
HttpResponse httpResponse;
try {
httpResponse = httpclient.execute(httpRequest); //執行HttpClient請求
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
result = EntityUtils.toString(httpResponse.getEntity()); //獲取返回的字符串
}else{
result="請求失敗!";
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
同樣的和HttpURLConnection中的Post不同的是send方法:
public void send() {
String target = "http://192.168.1.66:8081/blog/deal_httpclient.jsp"; //要提交的目標地址
HttpClient httpclient = new DefaultHttpClient(); //創建HttpClient對象
HttpPost httpRequest = new HttpPost(target); //創建HttpPost對象
//將要傳遞的參數保存到List集合中
List params = new ArrayList();
params.add(new BasicNameValuePair("param", "post")); //標記參數
params.add(new BasicNameValuePair("nickname", nickname.getText().toString())); //昵稱
params.add(new BasicNameValuePair("content", content.getText().toString())); //內容
try {
httpRequest.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //設置編碼方式
HttpResponse httpResponse = httpclient.execute(httpRequest); //執行HttpClient請求
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //如果請求成功
result += EntityUtils.toString(httpResponse.getEntity()); //獲取返回的字符串
}else{
result = "請求失敗!";
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace(); //輸出異常信息
} catch (ClientProtocolException e) {
e.printStackTrace(); //輸出異常信息
} catch (IOException e) {
e.printStackTrace(); //輸出異常信息
}
}
日常生活中我們隨處可見對話框,上面有很多提示信息,更加方便提示用戶進行不同的操作。一、對話框的兩個特點和一些常見的對話框1.當彈出對話框是會結束UI線程(即主線程);2.
在這裡我們要使用Android ListView來實現顯示股票行情,效果圖如下,紅色表示股票價格上漲,綠色表示股票價格下跌。第一步、定義color.xml如下:復制代碼
第1節 選擇Arduino開發板1.1 Arduino是什麼對Arduino,官方有一堆解釋。作為一個軟件程序猿,在我眼裡,Arduino是學習“可怕硬件&r
先來看下效果:控件內容比較簡單,就是一個普通的折線圖,上下分別帶有數字,點擊的時候顯示當天溫度的差值。 創建一個類繼承自View,並添加兩個構造方法:publi