搜尋此網誌

2010年6月21日 星期一

Android開發-UIImageView


在android上顯示圖片 有兩種方法 一種是直接在xml裡面用imageview 或者 用code的方式來顯示 這和iphone是相似的(xib和code)

首先先把要顯示的圖檔丟到專案中的res/drawable資料夾

接著開始寫程式
方法一:在xml加入imageview
main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
//加入ImageView
<ImageView
android:id="@+id/widget27"
android:layout_width="37px"
android:layout_height="wrap_content"
//one為圖檔的名字
android:src="@drawable/one"
android:layout_x="140px"
android:layout_y="162px"
>
</ImageView>
</AbsoluteLayout>

方法二:用code的方式
ImageView.java

package com.demo.android.imageview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.AbsoluteLayout;
import android.widget.Gallery.LayoutParams;

public class Imageview extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AbsoluteLayout mAbsoluteLayout = new AbsoluteLayout(this);
//產生ImageView object
ImageView imageView = new ImageView(this);
//讀取圖檔
imageView.setImageResource(R.drawable.one);
//設定圖片大小和位置
//AbsoluteLayout.LayoutParams (int width, int height, int x, int y)
//
LayoutParams.WRAP_CONTENT 用圖片的原始大小 x,y為圖片的顯示位置
myview.setLayoutParams(new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,130,192));
mAbsoluteLayout.addView(myview);
setContentView(mAbsoluteLayout);
}
}

2010年6月17日 星期四

Android開發-實際應用(一)基礎代謝率


這次程式是撰寫 計算人的基礎代謝率 其實此程式在iphone已經寫過了 這次因為在練習 所以將此程式又寫了另外一個版本在android上 而寫此程式的目的在於 將之前學過的東西再複習一次 增加熟練度

main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<EditText
android:id="@+id/height"
android:layout_width="122px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="130px"
android:layout_y="22px"
>
</EditText>
<TextView
android:id="@+id/widget28"
android:layout_width="wrap_content"
android:layout_height="22px"
android:text="Height(cm)"
android:layout_x="40px"
android:layout_y="32px"
>
</TextView>
<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="23px"
android:text="Weight(kg)"
android:layout_x="40px"
android:layout_y="102px"
>
</TextView>
<EditText
android:id="@+id/weight"
android:layout_width="122px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="130px"
android:layout_y="92px"
>
</EditText>
<TextView
android:id="@+id/widget31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Age"
android:layout_x="60px"
android:layout_y="162px"
>
</TextView>
<EditText
android:id="@+id/age"
android:layout_width="123px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="130px"
android:layout_y="152px"
>
</EditText>
<RadioGroup
android:id="@+id/myradio"
android:layout_width="288px"
android:layout_height="76px"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_x="10px"
android:layout_y="202px"
>
<RadioButton
android:id="@+id/manradio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Man"
>
</RadioButton>
<RadioButton
android:id="@+id/womanradio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Woman"
>
</RadioButton>
</RadioGroup>
<Spinner
android:id="@+id/spinner"
android:layout_width="194px"
android:layout_height="wrap_content"
android:layout_x="120px"
android:layout_y="312px"
>
</Spinner>
<TextView
android:id="@+id/display"
android:layout_width="240px"
android:layout_height="42px"
android:background="#ffff6600"
android:layout_x="40px"
android:layout_y="382px"
>
</TextView>
<Button
android:id="@+id/calculate"
android:layout_width="77px"
android:layout_height="wrap_content"
android:text="calculate"
android:layout_x="30px"
android:layout_y="312px"
android:onClick="Calculate"
>
</Button>
</AbsoluteLayout>

Health.java

package com.android.demo.health;


import java.text.DecimalFormat;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Health extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview();
spinnercontent();
setlistener();
}
private EditText Height,Weight,Age;
private TextView display;
private Spinner spinner;
private float a;
private RadioGroup Myradiogroup;
boolean man,woman;
private void findview()
{
Myradiogroup=(RadioGroup)findViewById(R.id.myradio);
Height=(EditText)findViewById(R.id.height);
Weight=(EditText)findViewById(R.id.weight);
Age=(EditText)findViewById(R.id.age);
spinner=(Spinner)findViewById(R.id.spinner);
display=(TextView)findViewById(R.id.display);
}
private RadioGroup.OnCheckedChangeListener changeradio=new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
//判斷user是圈選男性或女性
switch(checkedId)
{
case R.id.manradio:
man=true;
break;
case R.id.womanradio:
woman=true;
break;
default:
Toast.makeText(Health.this,"You don't select something else",Toast.LENGTH_LONG).show();
}
}

};
private void setlistener()
{
spinner.setOnItemSelectedListener(spinnerListener);
Myradiogroup.setOnCheckedChangeListener(changeradio);
}
//設定下拉式選單的內容
private void spinnercontent()
{
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,new String[]{"很少運動或完全沒運動","每週運動1到3次","每週運動3到5次","每週運動6到7次","每天非常重度的運動"});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
//監聽user選了下拉式選單的選項
private Spinner.OnItemSelectedListener spinnerListener= new Spinner.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?>adapterView, View v, int position, long id)
{
String string=adapterView.getSelectedItem().toString();
if(string.equals("很少運動或完全沒運動"))
{
a=(float) 1.2;
}
else if (string.equals("每週運動1到3次"))
{
a=(float)1.375;
}
else if (string.equals("每週運動3到5次"))
{
a=(float)1.55;
}
else if (string.equals("每週運動6到7次"))
{
a=(float)1.725;
}
else
{
a=(float)1.9;
}

}
public void onNothingSelected(AdapterView<?>adapterView)
{
Toast.makeText(Health.this, "You don't select something else", Toast.LENGTH_LONG).show();
}
};
//當user按下calculate按鈕 就執行內部的程式
public void Calculate(View v)
{
//取得user所填入的數字
float height = Float.parseFloat(Height.getText().toString());
float weight = Float.parseFloat(Weight.getText().toString());
int age=Integer.parseInt(Age.getText().toString());
//設定計算數字的格式
DecimalFormat nf = new DecimalFormat("0.00");
//如果user是男性 就以此公式計算
if(man)
{
double manresulta=(double)66+(13.8*weight)+(5.0*height)-(6.8*age);
double manresultb=a*manresulta;
//先將計算後的數字對應我設定的格式 接著將double轉成string 最後顯示出來
display.setText(String.valueOf(nf.format(manresultb)));
}
//如果user是女性 就以此公式計算
if(woman)
{
double womanresulta=(double)655+(9.6*weight)+(1.8*height)-(4.7*age);
double womanresultb=a*womanresulta;
display.setText(String.valueOf(nf.format(womanresultb)));
}

}
}

2010年6月14日 星期一

Android開發-RadioButton


此次程式主要是練習RadioButton的使用方法 並且同樣的使用Toast來顯示 來方便驗證是否正確的監聽到使用者的圈選
此次用RadioGroup將同性質的按鈕歸類為同一類 來達到兩個按鈕互斥(也就是二選一)

main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="320px"
android:layout_height="430px"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_x="0px"
android:layout_y="2px"
>
<RadioButton
android:id="@+id/maleradio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Man"
>
</RadioButton>
<RadioButton
android:id="@+id/femaleradio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Woman"
>
</RadioButton>
</RadioGroup>
</AbsoluteLayout>

Radiobutton.java

package com.android.demo.radiobutton;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.Toast;

public class Radiobutton extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview();
setlistener();

}
private RadioGroup myradiogroup;
private void findview()
{
myradiogroup=(RadioGroup)findViewById(R.id.radiogroup);
}
private void setlistener()
{
myradiogroup.setOnCheckedChangeListener(changeradio);
}
//監聽radiogroup裡面的radiobutton是否有被使用者圈選
private RadioGroup.OnCheckedChangeListener changeradio=new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
//透過id來辨認不同的radiobutton
switch(checkedId)
{
case R.id.maleradio:
Toast.makeText(Radiobutton.this,"You are a Man",Toast.LENGTH_LONG).show();
break;
case R.id.femaleradio:
Toast.makeText(Radiobutton.this,"You are a Woman",Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(Radiobutton.this,"Someting error",Toast.LENGTH_LONG).show();
}
}

};
}

2010年6月13日 星期日

Android開發-Checkbox


這次的程式主要是練習Checkbox的使用方法 並且同樣和上篇一樣 搭配Toast來顯示

main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<CheckBox
android:id="@+id/male"
android:layout_width="88px"
android:layout_height="wrap_content"
android:text="Man"
android:layout_x="50px"
android:layout_y="252px"
>
</CheckBox>
<CheckBox
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Woman"
android:layout_x="190px"
android:layout_y="252px"
>
</CheckBox>
</AbsoluteLayout>

Checkbox.java

package com.android.demo.checkbox;

import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class Checkbox extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview();
checkboxlistener();
}
private CheckBox malecheckbox;
private CheckBox femalecheckbox;
private void findview()
{
malecheckbox=(CheckBox)findViewById(R.id.male);
femalecheckbox=(CheckBox)findViewById(R.id.female);
}
//設定checkbox的listener
private void checkboxlistener()
{
malecheckbox.setOnCheckedChangeListener(listener);
femalecheckbox.setOnCheckedChangeListener(listener);
}
//監聽user 是否有選取
private CheckBox.OnCheckedChangeListener listener=new CheckBox.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
{
//如果user按下Man
if(malecheckbox.isChecked()==true)
{
//則顯示字串You are Man
Toast.makeText(Checkbox.this,"You are a Man",Toast.LENGTH_LONG).show();
}
//如果user按下Woman
if(femalecheckbox.isChecked()==true)
{
//則顯示字串You are Woman
Toast.makeText(Checkbox.this,"You are a Woman",Toast.LENGTH_LONG).show();
}
}
};
}

Android開發-Spinner應用


此次的程式 主要是練習下拉式選單 並且搭配Toast來顯示
Toast 介面元件的作用是彈出一個訊息框,快速在螢幕上顯示一小段訊息
這次的程式會學習到
1.Spinner的用法
2.Toast

main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget29"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="120px"
android:layout_y="112px"
>
</Spinner>
</AbsoluteLayout>

Spinnertest.java

package com.demo.android.spinnertest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;


public class Spinnertest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview();
//建立一個ArrayAdapter物件,並且存放下拉式選單的內容
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,new String[]{"Screen","Keyboard","Mouse"});
//設定Spinner的樣式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//設定adapter 將剛剛的下拉式選單內容 給這個widget
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(spinnerListener);

}

private void findview() {
spinner = (Spinner) findViewById(R.id.spinner);
}

private Spinner spinner;
//監聽下拉式選單 是否被選擇
private Spinner.OnItemSelectedListener spinnerListener= new Spinner.OnItemSelectedListener()
{
//如果被選擇
public void onItemSelected(AdapterView<?>adapterView, View v, int position, long id)
{
//利用Toast來顯示 Toast.LENGTH_LONG則表示 顯示時間長
//Spinnertest.this 則代表指向Spinnertest這個實例 若是寫成this則是指向OnItemSelectedListener這個實例
//最後用show()將Toast 元件顯示在螢幕上
Toast.makeText(Spinnertest.this, "You select"+adapterView.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
}

//若是沒有選擇任何項目
public void onNothingSelected(AdapterView<?>adapterView)
{
Toast.makeText(Spinnertest.this, "You don't select anything", Toast.LENGTH_LONG).show();
}
};


}