import android.app.Activity; import android.os.Bundle; import android.content.Context; import android.content.res.TypedArray; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class GDD01 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Gallery g =(Gallery)findViewById(R.id.mygallery); g.setAdapter(new ImageAdapter(this)); g.setOnItemClickListener(new Gallery.OnItemClickListener(){ @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(arg1.getContext(), getString(R.string.my_gallery_text_pre) +arg2+getString(R.string.my_gallery_text_post), Toast.LENGTH_SHORT).show(); } }); } public class ImageAdapter extends BaseAdapter { int BackGround; Context m_context; Integer[]imageId={ R.drawable.png001,R.drawable.png002, R.drawable.png003,R.drawable.png004, R.drawable.png005,R.drawable.png006, R.drawable.png007,R.drawable.png008, R.drawable.png009,R.drawable.png010, R.drawable.png011 }; //建構子只有一個參數,即要儲存的Context public ImageAdapter(Context c) { super(); m_context=c; TypedArray array=m_context.obtainStyledAttributes(R.styleable.Gallery); BackGround=array.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0); } //回傳所有已定義的圖片總數量 public int getCount() { return imageId.length; } public Object getItem(int position) { return position; } //取得圖片編號 public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView i = new ImageView(m_context); i.setImageResource(imageId[position]); i.setLayoutParams(new Gallery.LayoutParams(236, 188)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setBackgroundResource(BackGround); return i; } } //使用android.R.drawable裡的圖片當成圖庫來源 }
2012年3月9日 星期五
Android-TQC106畫廊展示
Android-TQC104計算BMI值
主要運用到下列觀念
(1)intent運作
(2)bundle運用
(3)2個activity傳值
main.java
second.java
二個activity設定 從「AndroidManifest.xml」中application新增
(1)intent運作
(2)bundle運用
(3)2個activity傳值
main.java
package COM.TQC.GDD01; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; public class GDD01 extends Activity { private EditText etheight; private EditText etweight; private RadioButton rb1; private RadioButton rb2; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { //從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給 child_Activity 後作計算 etheight=(EditText)findViewById(R.id.input_height); etweight=(EditText)findViewById(R.id.input_weight); double height=Double.parseDouble(etheight.getText().toString()); double weight=Double.parseDouble(etweight.getText().toString()); String Sex=""; rb1=(RadioButton)findViewById(R.id.input_m); //男性按鈕 rb2=(RadioButton)findViewById(R.id.input_w); //女性按鈕 if(rb1.isChecked()) { Sex="M"; } else { Sex="W"; } //這些附加在 Intent 上的訊息都儲存在 Bundle 物件中 Intent intent = new Intent(); intent.setClass(GDD01.this, GDD01_child.class); //透過「intent.putExtras(bundle)」敘述,將「bundle」 物件附加在 Intent 上,隨著 Intent 送出而送出 Bundle bundle=new Bundle(); bundle.putDouble("height", height); //38行的值 bundle.putDouble("weight", weight); //39行的值 bundle.putString("Sex", Sex); intent.putExtras(bundle); //查看GDD01_child.java,26行程式,用extras。 startActivityForResult(intent,0); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { case RESULT_OK: Bundle bundle = data.getExtras(); String Sex = bundle.getString("Sex"); double height = bundle.getDouble("height"); double weight = bundle.getDouble("weight"); etheight.setText("" + height); etweight.setText("" + weight); if(Sex.equals("M")) { rb1.setChecked(true); }else { rb2.setChecked(true); } break; default: break; } } }
second.java
package COM.TQC.GDD01 ; import java.text.DecimalFormat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class GDD01_child extends Activity { Bundle bundle; Intent intent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); intent=this.getIntent(); bundle = intent.getExtras(); String Sex = bundle.getString("Sex"); double height = bundle.getDouble("height"); double weight = bundle.getDouble("weight"); String BMI_result = this.getBMI(height,weight); String BMI_advice = this.getAdvice(Sex,height,weight); TextView tvBMI=(TextView) findViewById(R.id.tvBMI); tvBMI.setText(BMI_result); TextView tvAdvice=(TextView) findViewById(R.id.tvAdvice); tvAdvice.setText(BMI_advice); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { GDD01_child.this.setResult(RESULT_OK, intent); GDD01_child.this.finish(); } }); } //BMI值格式化 private String format(double num) { DecimalFormat nf = new DecimalFormat("0.00");//呈現至小數點第二位 String s=nf.format(num); return s; } //取得BMI值 private String getBMI (double height, double weight) { double BMI_values=weight/(height*height); return getString(R.string.report_result)+format(BMI_values); } //依BMI值取得建議 private String getAdvice (String Sex, double height, double weight) { double BMI_MAX; double BMI_MIN; double BMI=weight/(height*height); if(Sex.equals("M")) { BMI_MAX=25.0; BMI_MIN=20.0; } else { BMI_MAX=22.0; BMI_MIN=18.0; } if (BMI> BMI_MAX) { return getString(R.string.advice_heavy);//體重過重 } else if (BMI< BMI_MIN) { return getString(R.string.advice_light);//體重過輕 } else { return getString(R.string.advice_average);//體重適中 } } }
二個activity設定 從「AndroidManifest.xml」中application新增
2012年3月5日 星期一
Android-TQC102電費計算機
課程學習筆記
關於spinner運用
程式碼參考如下
關於spinner運用
程式碼參考如下
package COM.TQC.GDD01; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.TextView; import android.widget.Toast; public class GDD01 extends Activity { protected TextView MyOutcome; protected int volt; protected int inputv = 110; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spinner(); button(); } private void spinner() { // TODO Auto-generated method stub Spinner Sp=(Spinner)findViewById(R.id.input_v); Sp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub volt=arg0.getSelectedItemPosition(); if(volt ==0) { inputv=110; } else { inputv=220; } } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); } private void button() { // TODO Auto-generated method stub Button btn=(Button)findViewById(R.id.submit); btn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub EditText fill_a=(EditText)findViewById(R.id.input_a); EditText fill_hr=(EditText)findViewById(R.id.input_hr); EditText fill_m=(EditText)findViewById(R.id.input_m); double inputa=Double.parseDouble(fill_a.getText().toString()); double inputhr=Double.parseDouble(fill_hr.getText().toString()); double inputm=Double.parseDouble(fill_m.getText().toString()); double total_w= inputv * inputa; int total_m=(int) Math.round((total_w/1000)*(inputhr*30)*inputm); MyOutcome=(TextView)findViewById(R.id.respond); MyOutcome.setText("$"+total_m); } }); } }
2012年3月3日 星期六
blogger嵌入程式碼以SyntaxHighlighter
當撰寫程式碼要分享的時候,如果單純只是貼在blog上,有可能會造成格式亂碼
或是斷行不乾淨的問題,加上增加容易閱讀性,所以在blog中好的程式碼編排是相當重要的。
因此,耗費一個早上來摸一下,加上對css並不是很熟悉,爬了一下文,做了n次實驗後
把相關的經驗分享給大家。
step1
至「SyntaxHighlighter」網頁,它提供一個
可以將程式碼嵌在blog的技術,樣式也相當美觀
step2
至「SyntaxHighlighter hosting」網頁,提供主要是從官方位址上引用程式碼格式,相關css語法都用好了,省去自已上傳至網路空間的步驟。
step3
複製程式碼如下:
step4
開啟google blogger,「設計」>「修改html」
至(/b:template-skin)和(/head)間貼入step3複製的檔案 or(head)和(/head)之間,我本身是用前者,因為放在前比較容易查,若中間隨便放,反而不容易後續維護
step5
若要寫不同格式的程式碼,則要以不同的「檔案格式」下去寫
參考點我
step6
完成
step7
相關資料如下
http://alexgorbatchev.com/SyntaxHighlighter/
http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html
http://king971119.blogspot.com/2010/05/syntaxhighlighter-bloggerjavascript.html
或是斷行不乾淨的問題,加上增加容易閱讀性,所以在blog中好的程式碼編排是相當重要的。
因此,耗費一個早上來摸一下,加上對css並不是很熟悉,爬了一下文,做了n次實驗後
把相關的經驗分享給大家。
step1
至「SyntaxHighlighter」網頁,它提供一個
可以將程式碼嵌在blog的技術,樣式也相當美觀
step2
至「SyntaxHighlighter hosting」網頁,提供主要是從官方位址上引用程式碼格式,相關css語法都用好了,省去自已上傳至網路空間的步驟。
step3
複製程式碼如下:
資料來源:http://king971119.blogspot.com/2010/05/syntaxhighlighter-bloggerjavascript.html
step4
開啟google blogger,「設計」>「修改html」
至(/b:template-skin)和(/head)間貼入step3複製的檔案 or(head)和(/head)之間,我本身是用前者,因為放在前比較容易查,若中間隨便放,反而不容易後續維護
step5
若要寫不同格式的程式碼,則要以不同的「檔案格式」下去寫
參考點我
程式碼寫在這
step6
完成
step7
相關資料如下
http://alexgorbatchev.com/SyntaxHighlighter/
http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html
http://king971119.blogspot.com/2010/05/syntaxhighlighter-bloggerjavascript.html
2012年3月2日 星期五
雲端運算概念
由於本有在研究opensource search engine相關,找到一些關於雲端概念的軟體
可籍由實作方式更加了解,何謂雲端?
相關資料來源:資策會(http://www.iiiedu.org.tw/ites/CBD.htm)
可籍由實作方式更加了解,何謂雲端?
相關資料來源:資策會(http://www.iiiedu.org.tw/ites/CBD.htm)
訂閱:
文章 (Atom)