git clone https://code.google.com/p/androiddemoformini6410/
git clone https://code.google.com/p/androiddemoformini6410/
PWMActivity.java
[java] package com.mini6410.PWM;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ToggleButton;
import com.friendlyarm.AndroidSDK.HardwareControler;
import com.mini6410.R;
/**
*
* ClassName:PWMActivity
* Reason: PWM Demo
*
* @author snowdream
* @version
* @since Ver 1.1
* @Date 2011 2012-03-11 17:21
*
* @see
*/
public class PWMActivity extends Activity implements Button.OnClickListener,ToggleButton.OnCheckedChangeListener{
public static final String TAG = "PWMActivity";
/*PWM頻率*/
public static final int PWM_FREQUENCY_1 = 1;
public static final int PWM_FREQUENCY_100 = 100;
public static final int PWM_FREQUENCY_200 = 200;
public static final int PWM_FREQUENCY_500 = 500;
public static final int PWM_FREQUENCY_1000 = 1000;
public static final int PWM_FREQUENCY_2000 = 2000;
public static final int PWM_FREQUENCY_5000 = 5000;
public static final int PWM_FREQUENCY_10000 = 10000;
/*PWM播放時長*/
public static final int PWM_PLAY_PERIOD_FOR_EVER = -1;
public static final int PWM_PLAY_PERIOD_100 = 100;
public static final int PWM_PLAY_PERIOD_200 = 200;
public static final int PWM_PLAY_PERIOD_300 = 300;
public static final int PWM_PLAY_PERIOD_500 = 500;
public static final int PWM_PLAY_PERIOD_1000 = 1000;
/*PWM播放間隔*/
public static final int PWM_WAIT_PERIOD_100 = 100;
public static final int PWM_WAIT_PERIOD_200 = 200;
public static final int PWM_WAIT_PERIOD_300 = 300;
public static final int PWM_WAIT_PERIOD_500 = 500;
public static final int PWM_WAIT_PERIOD_1000 = 1000;
/*播放頻率*/
public int mfrequency = PWM_FREQUENCY_1000;
/*頻率改變步長Step*/
public int mfrequencystep = 100;
/*播放時長*/
public int mplayperiod = PWM_PLAY_PERIOD_1000;
/*播放間隔*/
public int mwaitperiod = PWM_WAIT_PERIOD_1000;
/*播放次數*/
public int mplaynum = 20;
private boolean mStop = false;
private Button mButtonSub = null;
private Button mButtonAdd = null;
private ToggleButton mToggleButtonStartForEver= null;
private ToggleButton mToggleButtonStartForTimes = null;
private EditText mEditTextFrequency = null;
private EditText mEditTextPlayPeriod = null;
private EditText mTextViewWaitPeriod = null;
private EditText mEditTextPlayNum = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pwmdemo);
initUI();
initData();
}
@Override
protected void onDestroy() {
mStop = true;
super.onDestroy();
}
/**
*
* initUI: 初始化UI
*
* @param
* @return
* @throws
*/
public void initUI(){
mButtonSub = (Button)findViewById(R.id.ButtonSUB);
mButtonAdd = (Button)findViewById(R.id.ButtonADD);
/*按鈕監聽器,具體實現參考下面的函數:onClick*/
mButtonSub.setOnClickListener(this);
mButtonAdd.setOnClickListener(this);
mToggleButtonStartForEver= (ToggleButton)findViewById(R.id.ToggleButtonStartForEver);
mToggleButtonStartForTimes = (ToggleButton)findViewById(R.id.ToggleButtonStartForTimes);
/*開關按鈕監聽器,具體實現參考下面的函數:onCheckedChanged*/
mToggleButtonStartForEver.setOnCheckedChangeListener(this);
mToggleButtonStartForTimes.setOnCheckedChangeListener(this);
mEditTextFrequency = (EditText)findViewById(R.id.EditTextFrequency);
mEditTextPlayPeriod = (EditText)findViewById(R.id.EditTextPlayPeriod);
mTextViewWaitPeriod = (EditText)findViewById(R.id.EditTextWaitPeriod);
mEditTextPlayNum = (EditText)findViewById(R.id.EditTextPlayNum);
/*EditText監聽器,具體實現參考下面的函數:onTextChanged
* 主要用於獲取更改後最新的數值,下同。
* */
mEditTextFrequency.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mfrequency = Integer.parseInt(mEditTextFrequency.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mEditTextPlayPeriod.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mplayperiod = Integer.parseInt(mEditTextPlayPeriod.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mTextViewWaitPeriod.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mwaitperiod = Integer.parseInt(mTextViewWaitPeriod.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mEditTextPlayNum.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mplaynum = Integer.parseInt(mEditTextPlayNum.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
/**
*
* initData: 初始化各個控件的數值
*
* @param
* @return
* @throws
*/
public void initData(){
mEditTextFrequency.setText(String.valueOf(mfrequency));
mEditTextPlayPeriod.setText(String.valueOf(mplayperiod));
mTextViewWaitPeriod.setText(String.valueOf(mwaitperiod));
mEditTextPlayNum.setText(String.valueOf(mplaynum));
}
/**
*
* onCheckedChanged: 開關按鈕監聽器。當有開關按鈕的狀態改變時,響應點擊。
*
* @param buttonView 改變狀態的開關按鈕對象;
* @param isChecked 該開關按鈕是否被選中;
* @return
* @throws
*/
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ToggleButton mToggleButton = (ToggleButton)buttonView;
switch (mToggleButton.getId()) {
case R.id.ToggleButtonStartForEver:
if(isChecked){
PWMPlay(mfrequency);
}else{
mStop = true;
PWMStop();
}
break;
case R.id.ToggleButtonStartForTimes:
if(isChecked){
mStop = false;
PWMThread mPWMThread = new PWMThread();
mPWMThread.start();
}else{
mStop = true;
}
break;
default:
break;
}
}
/**
*
* onClick: 按鈕監聽器。當有按鈕被點擊時,響應點擊。
*
* @param v 被點擊的按鈕對象;
* @return
* @throws
*/
public void onClick(View v) {
Button mButton = (Button)v;
switch (mButton.getId()) {
case R.id.ButtonSUB:
if(mfrequency <= 1)
mfrequency = PWM_FREQUENCY_1;
else if(mfrequency == PWM_FREQUENCY_100)
mfrequency = PWM_FREQUENCY_1;
else
mfrequency -= mfrequencystep;
mEditTextFrequency.setText(String.valueOf(mfrequency));
break;
case R.id.ButtonADD:
if(mfrequency <= 1)
mfrequency = PWM_FREQUENCY_100;
else
mfrequency += mfrequencystep;
mEditTextFrequency.setText(String.valueOf(mfrequency));
break;
default:
break;
}
}
/**
*
* PWMPlay: 啟動蜂鳴器 ,並播放。
*
* @param frequency 播放頻率
* @return true 表示播放成功;否則,表示播放失敗。
* @throws
*/
public boolean PWMPlay(int frequency)
{
boolean ret = false;
int result = -1;
result = HardwareControler.PWMPlay(frequency);
if(result == 0)
ret = true;
else
ret = false;
return ret;
}
/**
*
* PWMStop: 停止並關閉蜂鳴器。
*
* @param
* @return true 表示停止成功;否則,表示停止失敗。
* @throws
*/
public boolean PWMStop(){
boolean ret = false;
int result = -1;
result = HardwareControler.PWMStop();
if(result == 0)
ret = true;
else
ret = false;
return ret;
}
/**
*
* PWMThread: PWM播放線程
*
* @param
* @return
* @throws
*/
public class PWMThread extends Thread{
@Override
public void run() {
Log.i(TAG, "PWMThread Start");
for(int i = 0 ; i < mplaynum; i++ )
{
Log.i(TAG, String.valueOf(i));
if(mStop)
{
PWMStop();
break;
}
/*啟動蜂鳴器,並使用頻率 mfrequency 進行播放*/
PWMPlay(mfrequency);
/*等待播放時長 mplayperiod 結束*/
try {
sleep(mplayperiod);
} catch (InterruptedException e) {
e.printStackTrace();
}
/*停止蜂鳴器*/
PWMStop();
if(mStop)
break;
/*等待播放間隔 mwaitperiod 結束*/
try {
sleep(mwaitperiod);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.i(TAG, "PWMThread Stop");
}
}
}
package com.mini6410.PWM;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ToggleButton;
import com.friendlyarm.AndroidSDK.HardwareControler;
import com.mini6410.R;
/**
*
* ClassName:PWMActivity
* Reason: PWM Demo
*
* @author snowdream
* @version
* @since Ver 1.1
* @Date 2011 2012-03-11 17:21
*
* @see
*/
public class PWMActivity extends Activity implements Button.OnClickListener,ToggleButton.OnCheckedChangeListener{
public static final String TAG = "PWMActivity";
/*PWM頻率*/
public static final int PWM_FREQUENCY_1 = 1;
public static final int PWM_FREQUENCY_100 = 100;
public static final int PWM_FREQUENCY_200 = 200;
public static final int PWM_FREQUENCY_500 = 500;
public static final int PWM_FREQUENCY_1000 = 1000;
public static final int PWM_FREQUENCY_2000 = 2000;
public static final int PWM_FREQUENCY_5000 = 5000;
public static final int PWM_FREQUENCY_10000 = 10000;
/*PWM播放時長*/
public static final int PWM_PLAY_PERIOD_FOR_EVER = -1;
public static final int PWM_PLAY_PERIOD_100 = 100;
public static final int PWM_PLAY_PERIOD_200 = 200;
public static final int PWM_PLAY_PERIOD_300 = 300;
public static final int PWM_PLAY_PERIOD_500 = 500;
public static final int PWM_PLAY_PERIOD_1000 = 1000;
/*PWM播放間隔*/
public static final int PWM_WAIT_PERIOD_100 = 100;
public static final int PWM_WAIT_PERIOD_200 = 200;
public static final int PWM_WAIT_PERIOD_300 = 300;
public static final int PWM_WAIT_PERIOD_500 = 500;
public static final int PWM_WAIT_PERIOD_1000 = 1000;
/*播放頻率*/
public int mfrequency = PWM_FREQUENCY_1000;
/*頻率改變步長Step*/
public int mfrequencystep = 100;
/*播放時長*/
public int mplayperiod = PWM_PLAY_PERIOD_1000;
/*播放間隔*/
public int mwaitperiod = PWM_WAIT_PERIOD_1000;
/*播放次數*/
public int mplaynum = 20;
private boolean mStop = false;
private Button mButtonSub = null;
private Button mButtonAdd = null;
private ToggleButton mToggleButtonStartForEver= null;
private ToggleButton mToggleButtonStartForTimes = null;
private EditText mEditTextFrequency = null;
private EditText mEditTextPlayPeriod = null;
private EditText mTextViewWaitPeriod = null;
private EditText mEditTextPlayNum = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pwmdemo);
initUI();
initData();
}
@Override
protected void onDestroy() {
mStop = true;
super.onDestroy();
}
/**
*
* initUI: 初始化UI
*
* @param
* @return
* @throws
*/
public void initUI(){
mButtonSub = (Button)findViewById(R.id.ButtonSUB);
mButtonAdd = (Button)findViewById(R.id.ButtonADD);
/*按鈕監聽器,具體實現參考下面的函數:onClick*/
mButtonSub.setOnClickListener(this);
mButtonAdd.setOnClickListener(this);
mToggleButtonStartForEver= (ToggleButton)findViewById(R.id.ToggleButtonStartForEver);
mToggleButtonStartForTimes = (ToggleButton)findViewById(R.id.ToggleButtonStartForTimes);
/*開關按鈕監聽器,具體實現參考下面的函數:onCheckedChanged*/
mToggleButtonStartForEver.setOnCheckedChangeListener(this);
mToggleButtonStartForTimes.setOnCheckedChangeListener(this);
mEditTextFrequency = (EditText)findViewById(R.id.EditTextFrequency);
mEditTextPlayPeriod = (EditText)findViewById(R.id.EditTextPlayPeriod);
mTextViewWaitPeriod = (EditText)findViewById(R.id.EditTextWaitPeriod);
mEditTextPlayNum = (EditText)findViewById(R.id.EditTextPlayNum);
/*EditText監聽器,具體實現參考下面的函數:onTextChanged
* 主要用於獲取更改後最新的數值,下同。
* */
mEditTextFrequency.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mfrequency = Integer.parseInt(mEditTextFrequency.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mEditTextPlayPeriod.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mplayperiod = Integer.parseInt(mEditTextPlayPeriod.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mTextViewWaitPeriod.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mwaitperiod = Integer.parseInt(mTextViewWaitPeriod.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
mEditTextPlayNum.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
try {
mplaynum = Integer.parseInt(mEditTextPlayNum.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
/**
*
* initData: 初始化各個控件的數值
*
* @param
* @return
* @throws
*/
public void initData(){
mEditTextFrequency.setText(String.valueOf(mfrequency));
mEditTextPlayPeriod.setText(String.valueOf(mplayperiod));
mTextViewWaitPeriod.setText(String.valueOf(mwaitperiod));
mEditTextPlayNum.setText(String.valueOf(mplaynum));
}
/**
*
* onCheckedChanged: 開關按鈕監聽器。當有開關按鈕的狀態改變時,響應點擊。
*
* @param buttonView 改變狀態的開關按鈕對象;
* @param isChecked 該開關按鈕是否被選中;
* @return
* @throws
*/
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ToggleButton mToggleButton = (ToggleButton)buttonView;
switch (mToggleButton.getId()) {
case R.id.ToggleButtonStartForEver:
if(isChecked){
PWMPlay(mfrequency);
}else{
mStop = true;
PWMStop();
}
break;
case R.id.ToggleButtonStartForTimes:
if(isChecked){
mStop = false;
PWMThread mPWMThread = new PWMThread();
mPWMThread.start();
}else{
mStop = true;
}
break;
default:
break;
}
}
/**
*
* onClick: 按鈕監聽器。當有按鈕被點擊時,響應點擊。
*
* @param v 被點擊的按鈕對象;
* @return
* @throws
*/
public void onClick(View v) {
Button mButton = (Button)v;
switch (mButton.getId()) {
case R.id.ButtonSUB:
if(mfrequency <= 1)
mfrequency = PWM_FREQUENCY_1;
else if(mfrequency == PWM_FREQUENCY_100)
mfrequency = PWM_FREQUENCY_1;
else
mfrequency -= mfrequencystep;
mEditTextFrequency.setText(String.valueOf(mfrequency));
break;
case R.id.ButtonADD:
if(mfrequency <= 1)
mfrequency = PWM_FREQUENCY_100;
else
mfrequency += mfrequencystep;
mEditTextFrequency.setText(String.valueOf(mfrequency));
break;
default:
break;
}
}
/**
*
* PWMPlay: 啟動蜂鳴器 ,並播放。
*
* @param frequency 播放頻率
* @return true 表示播放成功;否則,表示播放失敗。
* @throws
*/
public boolean PWMPlay(int frequency)
{
boolean ret = false;
int result = -1;
result = HardwareControler.PWMPlay(frequency);
if(result == 0)
ret = true;
else
ret = false;
return ret;
}
/**
*
* PWMStop: 停止並關閉蜂鳴器。
*
* @param
* @return true 表示停止成功;否則,表示停止失敗。
* @throws
*/
public boolean PWMStop(){
boolean ret = false;
int result = -1;
result = HardwareControler.PWMStop();
if(result == 0)
ret = true;
else
ret = false;
return ret;
}
/**
*
* PWMThread: PWM播放線程
*
* @param
* @return
* @throws
*/
public class PWMThread extends Thread{
@Override
public void run() {
Log.i(TAG, "PWMThread Start");
for(int i = 0 ; i < mplaynum; i++ )
{
Log.i(TAG, String.valueOf(i));
if(mStop)
{
PWMStop();
break;
}
/*啟動蜂鳴器,並使用頻率 mfrequency 進行播放*/
PWMPlay(mfrequency);
/*等待播放時長 mplayperiod 結束*/
try {
sleep(mplayperiod);
} catch (InterruptedException e) {
e.printStackTrace();
}
/*停止蜂鳴器*/
PWMStop();
if(mStop)
break;
/*等待播放間隔 mwaitperiod 結束*/
try {
sleep(mwaitperiod);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.i(TAG, "PWMThread Stop");
}
}
}
pwmdemo.xml
[html] <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewFrequency"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/frequency" />
<Button
android:id="@+id/ButtonSUB"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/sub" />
<EditText
android:id="@+id/EditTextFrequency"
android:layout_width="120dip"
android:layout_height="40dip"
android:gravity="center"
android:inputType="number" />
<Button
android:id="@+id/ButtonADD"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/add" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewPlayPeriod"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playperiod" />
<EditText
android:id="@+id/EditTextPlayPeriod"
android:layout_width="200dip"
android:layout_height="40dip"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewWaitPeriod"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/waitperiod" />
<EditText
android:id="@+id/EditTextWaitPeriod"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_gravity="center"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewPlayNum"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playnum" />
<EditText
android:id="@+id/EditTextPlayNum"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_gravity="center"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewStartForEver"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playforever" />
<ToggleButton
android:id="@+id/ToggleButtonStartForEver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<LinearLayout
android:layout_width="10dip"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
<TextView
android:id="@+id/TextViewStartForTimes"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playfortimes" />
<ToggleButton
android:id="@+id/ToggleButtonStartForTimes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewFrequency"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/frequency" />
<Button
android:id="@+id/ButtonSUB"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/sub" />
<EditText
android:id="@+id/EditTextFrequency"
android:layout_width="120dip"
android:layout_height="40dip"
android:gravity="center"
android:inputType="number" />
<Button
android:id="@+id/ButtonADD"
android:layout_width="40dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/add" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewPlayPeriod"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playperiod" />
<EditText
android:id="@+id/EditTextPlayPeriod"
android:layout_width="200dip"
android:layout_height="40dip"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewWaitPeriod"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/waitperiod" />
<EditText
android:id="@+id/EditTextWaitPeriod"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_gravity="center"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewPlayNum"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playnum" />
<EditText
android:id="@+id/EditTextPlayNum"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_gravity="center"
android:gravity="center"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextViewStartForEver"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playforever" />
<ToggleButton
android:id="@+id/ToggleButtonStartForEver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<LinearLayout
android:layout_width="10dip"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
<TextView
android:id="@+id/TextViewStartForTimes"
android:layout_width="80dip"
android:layout_height="40dip"
android:gravity="center"
android:text="@string/playfortimes" />
<ToggleButton
android:id="@+id/ToggleButtonStartForTimes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
預覽效果:
摘自 snowdream