於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:screenOrientation="portrait" (強制縱向)
android:screenOrientation="landscape" (強制橫向)
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
2015年10月13日 星期二
android 寫入檔案 (簡短文字) FileInputStream, FileOutputStream
寫入簡短文字可使用寫入文字檔方法, 如複雜便要用SQLite
版面要加入一個editView, 一個textView 及 兩個 Button (editView1, textView2, btnWrite, btnRead)
輸入字於 editView1, 按下 btnWrite 便會寫入檔案 output 及顯示檔案路徑 (toast), 按下 btnRead 便會讀出檔案及顯示於 textView2
注意: 讀取中文字, 中文字每個要 2 個 Byte.
MainActivity.java
版面要加入一個editView, 一個textView 及 兩個 Button (editView1, textView2, btnWrite, btnRead)
輸入字於 editView1, 按下 btnWrite 便會寫入檔案 output 及顯示檔案路徑 (toast), 按下 btnRead 便會讀出檔案及顯示於 textView2
注意: 讀取中文字, 中文字每個要 2 個 Byte.
MainActivity.java
import android.content.Context; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText txtWrite = (EditText) findViewById(R.id.editText1); final TextView txtRead = (TextView) findViewById(R.id.textView2); Button btnTxtRead = (Button) findViewById(R.id.btnRead); Button btnTxtWrite = (Button) findViewById(R.id.btnWrite); btnTxtWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { try { FileOutputStream fos = openFileOutput("output", Context.MODE_PRIVATE); fos.write(txtWrite.getText().toString().getBytes()); fos.close(); File file = new File(getFilesDir() + "/" + fos); Toast.makeText(getApplicationContext(), file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } }); btnTxtRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { FileInputStream fos = null; BufferedInputStream buffered = null; try { fos = openFileInput("output"); buffered = new BufferedInputStream(fos); byte[] buffbyte = new byte[200]; txtRead.setText(""); do { int flag = buffered.read(buffbyte); if (flag == -1) { break; } else { txtRead.append(new String(buffbyte), 0, flag); } }while (true); buffered.close(); } catch (Exception e) { e.printStackTrace(); } } }); } }
2015年9月24日 星期四
android 日期比較
版面要加入兩個 textView 及 一個 Button (textView1, textView2, ChooseDateBtn)
此例以按選擇日子與現時日子作相減, 日子以微秒計算, 所以用 getTimeInMillis() 取得微秒後相減, 得出結果後再轉為秒, 分, 時, 日.
1000微秒 = 1秒
如要將時分秒設定為 0 用作計算, 可用 clear, 以下面為例, 現時日子可加入以下三句便可將時分秒設定為 0.
rightNow.clear(Calendar.HOUR);
rightNow.clear(Calendar.MINUTE);
rightNow.clear(Calendar.SECOND);
此例以按選擇日子與現時日子作相減, 日子以微秒計算, 所以用 getTimeInMillis() 取得微秒後相減, 得出結果後再轉為秒, 分, 時, 日.
1000微秒 = 1秒
如要將時分秒設定為 0 用作計算, 可用 clear, 以下面為例, 現時日子可加入以下三句便可將時分秒設定為 0.
rightNow.clear(Calendar.HOUR);
rightNow.clear(Calendar.MINUTE);
rightNow.clear(Calendar.SECOND);
import android.app.DatePickerDialog; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; import java.util.Calendar; import java.util.GregorianCalendar; public class MainActivity extends ActionBarActivity { Calendar rightNow = Calendar.getInstance(); TextView DisplayDate1; TextView DisplayDate2; int cmonth, rmonth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button changeDate = (Button) findViewById(R.id.ChooseDateBtn); DisplayDate1 = (TextView) findViewById(R.id.textView1); DisplayDate2 = (TextView) findViewById(R.id.textView2); changeDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { new DatePickerDialog(MainActivity.this, d, rightNow.get(Calendar.YEAR), rightNow.get(Calendar.MONTH), rightNow.get(Calendar.DAY_OF_MONTH)).show(); } }); } DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { cmonth = monthOfYear + 1; rmonth = rightNow.get(Calendar.MONTH) + 1; Calendar c = new GregorianCalendar(year, monthOfYear, dayOfMonth, rightNow.get(Calendar.HOUR_OF_DAY), rightNow.get(Calendar.MINUTE), rightNow.get(Calendar.SECOND)); long diff = c.getTimeInMillis() - rightNow.getTimeInMillis(); long diffSec = diff / 1000; long diffMins = diff / (60 * 1000); long diffHrs = diff / (60 * 60 * 1000); long diffDays = diff / (24 * 60 * 60 * 1000); DisplayDate1.setText("Choosen date is :" + dayOfMonth + "/" + cmonth + "/" + year + " Millisecond is :" + c.getTimeInMillis() + "\n" + "Current date is :" + rightNow.get(Calendar.DAY_OF_MONTH) + "/" + rmonth + "/" + rightNow.get(Calendar.YEAR) + " Millisecond is :" + rightNow.getTimeInMillis()); DisplayDate2.setText("Date difference in seconds: " + diffSec +"\n"+ "Date difference in minutes: "+diffMins+"\n"+ "Date difference in hours: "+ diffHrs +"\n"+"Date difference in days: " + diffDays); } }; }
2015年8月26日 星期三
android DatePickerDialog 彈出日期選擇
注意:
版面要加入一個 textView 及 一個 Button (textView1, ChooseDateBtn)
版面要加入一個 textView 及 一個 Button (textView1, ChooseDateBtn)
import android.app.DatePickerDialog; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; import java.util.Calendar; public class MainActivity extends ActionBarActivity { Calendar c = Calendar.getInstance(); TextView DisplayDate; int cday, cmonth, cyear; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button changeDate = (Button) findViewById(R.id.ChooseDateBtn); DisplayDate = (TextView) findViewById(R.id.textView1); changeDate.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) { new DatePickerDialog(MainActivity.this, d, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show(); } }); } DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() { @Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { cday = dayOfMonth; cmonth = monthOfYear + 1; cyear = year; DisplayDate.setText("Choosen date is :" + cday + "/" + cmonth + "/" + cyear); } }; }
2015年8月22日 星期六
android DatePicker 日期選擇
以下是簡單日期選擇例子
注意:
版面要加入兩個 textView 及 一個 DatePick (textView1, textView2, datePicker1)
因 Bug 關係, DatePick 放置後會顯示 Rendering Problems, 及不會顯示 DatePick, 但 run app 後會在 app 顯示
預設日期
月份係由 0 至 11, 當顯示數字時要加 1, array 係由 0 開始, 所以不須要
加入此兩個可改變日期選擇為轉動選擇
注意:
版面要加入兩個 textView 及 一個 DatePick (textView1, textView2, datePicker1)
因 Bug 關係, DatePick 放置後會顯示 Rendering Problems, 及不會顯示 DatePick, 但 run app 後會在 app 顯示
預設日期
datepick.init(2016,1,4,onDateChanged);
月份係由 0 至 11, 當顯示數字時要加 1, array 係由 0 開始, 所以不須要
Integer.toString(monthOfYear+1)
加入此兩個可改變日期選擇為轉動選擇
datepick.setCalendarViewShown(false); datepick.setSpinnersShown(true);
import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatePicker datepick = (DatePicker) findViewById(R.id.datePicker1); datepick.init(2016,1,4,onDateChanged); // datepick.setCalendarViewShown(false);
// datepick.setSpinnersShown(true); } DatePicker.OnDateChangedListener onDateChanged= new DatePicker.OnDateChangedListener() { @Override
public void onDateChanged( DatePicker view, int year, int monthOfYear, int dayOfMonth) { final String[] MMM = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; TextView tv1 = (TextView)findViewById(R.id.textView1); TextView tv2 = (TextView)findViewById(R.id.textView2); tv1.setText(Integer.toString(dayOfMonth) + "/"+Integer.toString(monthOfYear+1)+ "/"+Integer.toString(year) ); tv2.setText(Integer.toString(dayOfMonth) + "/"+(MMM[monthOfYear])+ "/"+Integer.toString(year) ); } }; }
2015年7月8日 星期三
旅行注意事項, 護照有效期, 旅遊保險, 匯率, 電壓、插頭
近日準備外遊, 為日後方便, 記下以下重要事項, 方便日後使用.
- 護照有效期
- 最少有六個月
- 護照複印本, 以便護照被竊或遺失時, 迅速申請補發.
- 旅遊保險
- 通常在出機票後, 或預訂酒店後, 便會購買, 有甚麼意外去唔到都有保障, 以下有旅遊保險比可作參考
- http://www.moneyhero.com.hk/zh/travel-insurance/get-quote#step1
- 匯率
- 通常都到以下百年網頁作參考
- http://bcel1985.blogspot.hk/
- 注意隨身物品
- 尤其是長途機, 重要物品要隨身攜帶, 小偷會在乘客睡眠及離開坐位, 偷去放於坐位, 前坐椅下, 椅下或坐椅上的行李置物櫃.
2015年6月11日 星期四
設定 blog 所顯示圖片大小
如發現預設圖片顯示有點小, 可從設定中統一圖片大小, 到 "範本" > "自訂"
再到 "進階" > "新增 CSS"
填寫如下:
.post-body img {
width: 500px;
height: auto; }
.post table.tr-caption-container img {
width: 500px;
height: auto;
}
當中 .post-body img 為沒有加標題的圖片, .post table.tr-caption-container 為加有標題的圖片, width 為闊, height 為高.
再到 "進階" > "新增 CSS"
填寫如下:
.post-body img {
width: 500px;
height: auto; }
.post table.tr-caption-container img {
width: 500px;
height: auto;
}
當中 .post-body img 為沒有加標題的圖片, .post table.tr-caption-container 為加有標題的圖片, width 為闊, height 為高.
訂閱:
文章 (Atom)






