參考資訊
http://blog.jeremyhuang.com/2014/03/android_29.html
http://magiclen.org/android-push-notification/
2014年12月11日 星期四
2014年11月17日 星期一
連線網頁,並取得網頁資訊範例
public class MainActivity extends Activity
{
private LinearLayout ll;
private Button btngo;
private TextView tv;
private ScrollView sv ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ll = (LinearLayout) findViewById(R.id.LinearLayout1);
sv = new ScrollView(this);
tv = new TextView(this);
sv.addView(tv);
ll.addView(sv);
btngo = new Button(this);
ll.addView(btngo);
// ------------------------------------------
btngo.setText("go");
btngo.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//需使用Thread來執行網頁的存取需求,否則會產生錯誤
new Thread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
connectHttp();
}
}).start();
}
});
// ------------------------------------------
}
private void connectHttp()
{
String url = "https://tw.stock.yahoo.com/q/q?s=2330"; //欲存取的網頁路徑
String output = null;
HttpPost request = new HttpPost(url);
Bundle b = new Bundle();
Message msg = new Message();
// 欺騙網站是pc傳送訊息
request.addHeader("User-Agent",
"Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1 Chrome/17.0.963.56");
List<NameValuePair> params = new ArrayList<NameValuePair>(); // 放參數
params.add(new BasicNameValuePair("s", "2330"));// 放參數
try
{
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient()
.execute(request);
if (httpResponse.getStatusLine().getStatusCode() == 200)
{
output = EntityUtils.toString(httpResponse.getEntity());
b.putString("value", output);
msg.setData(b);
// tv.setText(output);
handlerGS.sendMessage(msg);
}
} catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Handler handlerGS = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle b = msg.getData() ;
tv.setText(b.getString("value"));
}
};
說明:關鍵在存取網路資訊時需使用Thread發送需求,否則會產生錯誤
2014年10月30日 星期四
Android實作webView元件
Android實作webView元件
程式碼:
public class
MainActivity extends Activity {
@Override
public void onBackPressed()
{
// TODO Auto-generated method
stub
// mwv.goBack(); //回上一頁
// super.onBackPressed(); //離開
if (mwv.canGoBack())
mwv.goBack();
else
System.exit(0);
}
private WebView mwv;
private ProgressDialog pd;
private Button mbtn;
private Button mbtn2;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mwv = (WebView) findViewById(R.id.webView1);
// 瀏覽網路需要權限
android.permission.INTERNET
// String url =
"http://www.tcfst.org.tw";
// mwv.loadUrl(url);
mwv.setWebViewClient(new myvebviewclient());
// 設定 web client
pd = new ProgressDialog(this);//
設定progress bar
mbtn = (Button) findViewById(R.id.button1);
mbtn.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View
v) {
// TODO Auto-generated
method stub
Log.e("but1",
"onClick");
pd.setMessage("Loading...");
pd.setCanceledOnTouchOutside(false);
// 設定 使用者無法 按到旁邊而關掉
pd.show();
String url = "http://tw.yahoo.com";
// String url =
"file:///android_asset/demo.html";
// //瀏覽使用設定的html檔案
mwv.loadUrl(url);
}
});
mbtn2 = (Button) findViewById(R.id.button2);
mbtn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View
v) {
// TODO Auto-generated
method stub
Log.e("but2",
"onClick");
pd.setMessage("Loading...");
pd.setCanceledOnTouchOutside(false);
// 設定 使用者無法 按到旁邊而關掉
pd.show();
// String url =
"http://tw.yahoo.com";
String url = "file:///android_asset/demo.html";
// 瀏覽使用設定的html檔案
mwv.loadUrl(url);
}
});
}
private class
myvebviewclient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView
view, String url) {
// TODO Auto-generated
method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView
view, String url) {
// TODO Auto-generated
method stub
// super.onPageFinished(view, url);
if (pd.isShowing())
pd.dismiss();
}
}
}
說明:
1. 需開啟網路使用權限; <uses-permission android:name="android.permission.INTERNET"/>
2.
需建立一個繼承WebViewClient的類別,使用該類別來當使用者存取網址及webView的中介
3.
點選Button1及Button2會各自開啟兩個不同的網頁,並將其呈現於webView上
4.
若不使用WebViewClient則系統會詢問使用者,要使用目前系統上的哪一個瀏覽器來開啟網頁
利用intent呼叫Activity及傳送資料
利用intent呼叫Activity及傳送資料
Activity1程式碼
public class Activity1 extends Activity
{
private
Button bt1;
@Override
protected
void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity1);
bt1 =
(Button) findViewById(R.id.button1);
bt1.setOnClickListener(new
Button.OnClickListener()
{
@Override
public
void onClick(View v)
{
//
TODO Auto-generated method stub
Intent
it = new Intent();
it.setClass(Activity1.this,
Activity2.class);
it.putExtra("pass",
"ispassword");
it.putExtra("user",
"ZCFang");
startActivity(it);
}
});
}
}
說明:
1.使用intent.setClass設定欲開啟的Activity
2.使用intent.putExtra 放入欲傳送的資訊,若資料量很大也可以選擇使用Bundle物件加入資訊,再藉由intent傳送
3.使用startActivity傳送intent並開啟指定的Activity
Activity2程式碼
public class
Activity2 extends Activity
{
private Button bt2;
@Override
protected void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity2);
Bundle b = getIntent().getExtras();
String str = b.getString("user")
+ " : " + b.getString("pass");
Toast.makeText(this, str,
Toast.LENGTH_LONG).show();
bt2 = (Button) findViewById(R.id.button2);
bt2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View
v)
{
// TODO Auto-generated
method stub
Intent it = new
Intent();
it.setClass(Activity2.this,
Activity1.class);
startActivity(it);
}
});
}
}
說明:
1.使用Bundle接收使用者傳送過來的資訊
2.再依資料型別從Bundle物件中取出資料
2014年10月6日 星期一
Android程式設計-繪圖(9個小圈圈)
Android 繪圖(9個小圈圈)程式碼範例(20141007)
public viewDrawDot(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int h, w;
h = getHeight();
w = getWidth();
Paint p = new Paint();
p.setStyle(Style.FILL);
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 4; j++) {
p.setColor(Color.GREEN); //設定畫筆顏色(綠色)
canvas.drawCircle(w / 4 * i, h / 4 * j, w / 20, p);//依迴圈次數繪製9個大圓
p.setColor(Color.WHITE);//設定畫筆顏色(白色)
canvas.drawCircle(w / 4 * i, h / 4 * j, w / 30, p);//在9個大圓上在繪製9個小圓
}
}
}
}
1.新增專案後建立一個繼承 View 的 viewDrawDot 類別,程式碼如下
public class viewDrawDot extends View {public viewDrawDot(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int h, w;
h = getHeight();
w = getWidth();
Paint p = new Paint();
p.setStyle(Style.FILL);
for (int i = 1; i < 4; i++) {
for (int j = 1; j < 4; j++) {
p.setColor(Color.GREEN); //設定畫筆顏色(綠色)
canvas.drawCircle(w / 4 * i, h / 4 * j, w / 20, p);//依迴圈次數繪製9個大圓
p.setColor(Color.WHITE);//設定畫筆顏色(白色)
canvas.drawCircle(w / 4 * i, h / 4 * j, w / 30, p);//在9個大圓上在繪製9個小圓
}
}
}
}
2.在程式入口的主程式onCreate方法內 new 一個 viewDrawDet 類別,並將該類別指定給setContentView方法,程式碼如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使用匿名方式創建myView並引入setContentView的方法內
setContentView(new viewDrawDot(this));
}
}
Android程式設計-繪圖(畫線成網)
Android 繪圖(畫線成網)程式碼範例(20141007)
1.新增專案後建立一個繼承 View 的 viewDrawNet 類別,程式碼如下
public class viewDrawNet extends View {
// 建構子
public viewDrawNet(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int h, w;
w=getWidth();
h=getHeight();
Paint p = new Paint(); //設定畫筆
p.setColor(Color.BLUE);//設定畫筆顏色(藍色)
p.setStyle(Style.FILL);//設定畫筆繪圖樣式(填滿)
for (int i = 0 ; i<w ; i +=10) //使用畫線的方式繪製網圖
canvas.drawLine(0, h-w+i, i, h, p);
}
}
2.在程式入口的主程式onCreate方法內 new 一個 viewDrawNet 類別,並將該類別指定給setContentView方法,程式碼如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使用匿名方式創建myView並引入setContentView的方法內
setContentView(new viewDrawNet(this));
}
}
Android程式設計-繪圖(畫圓)
Android 繪圖(畫圓)程式碼範例(20141007)
1.新增專案後建立一個繼承 View 的 myView 類別,程式碼如下
public class myView extends View {
//建構子
public myView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int h, w, r;
// 取得螢幕資訊
h = getHeight();// 取得螢幕高度資訊
w = getWidth();// 取得螢幕寬度資訊
// 設定畫筆
Paint p = new Paint(); // 建立Paint物件
p.setColor(Color.RED);// 設定畫筆顏色(紅色)
p.setStyle(Style.FILL);// 設定畫筆繪圖樣式(填滿)
// 畫圓
r = w / 2;// 設定半徑
canvas.drawCircle(w / 2, h / 2, r, p);// 畫圓
}
}
2.在程式入口的主程式onCreate方法內 new 一個 myView 類別,並將該類別指定給setContentView方法,程式碼如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使用匿名方式創建myView並引入setContentView的方法內
setContentView(new myView(this));
}
}
訂閱:
文章 (Atom)






