歡迎訂閱杜仲教學頻道: https://www.youtube.com/channel/UCElwt6s8Ea_V-gnu9sZZT5g?sub_confirmation=1 杜仲教學部落格: https://derekcctu.blogspot.com/
2018年12月28日 星期五
[Android]_ch10.9_掃描多媒體檔案至相簿
[Android]_ch10.9_掃描多媒體檔案至相簿
public void callMediaScan(String paths[]){
MediaScannerConnection.scanFile(MainActivity.this, paths, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.i("Uri=", "uri="+uri);
Log.i("path=", path);
}
});
}
[Android]_ch10.8_相機錄影整合存檔功能
[Android]_ch10.8_相機錄影整合存檔功能
public void saveVideo(Uri uri){
if(!isSDCARDExit())
Toast.makeText(MainActivity.this, "找不到SD CARD!", Toast.LENGTH_SHORT).show();
File videoDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
if(!videoDir.exists())
videoDir.mkdirs();
File videoFile=new File(videoDir, "video01.3gp");
String path=getPath(uri);
try {
FileInputStream fis=new FileInputStream(path);
FileOutputStream fos=new FileOutputStream(videoFile);
byte data[]=new byte[fis.available()];
int num;
while((num=fis.read(data))!=-1){
fos.write(data, 0, num);
}
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "存檔完畢!", Toast.LENGTH_SHORT).show();
tv.setText("檔案位置---"+videoFile.toString());
String paths[]={videoFile.toString()};
callMediaScan(paths);
}
public String getPath(Uri uri){
String colums[]={MediaStore.Images.Media.DATA};
ContentResolver contentResolver=getContentResolver();
Cursor cursor=contentResolver.query(uri, colums, null, null, null);
cursor.moveToFirst();
int index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
return cursor.getString(index);
}
[Android]_ch10.7_調用相機錄影功能
[Android]_ch10.7_調用相機錄影功能
package com.gjun.ch26_takephoto;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
public class MainActivity extends Activity {
TextView tv;
ImageView iv;
VideoView vv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.textView1);
iv=(ImageView)findViewById(R.id.imageView1);
vv=(VideoView)findViewById(R.id.videoView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.item1:
if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_IMAGE_CAPTURE)){
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 100);
}else{
Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();
}
break;
case R.id.item2:
if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_VIDEO_CAPTURE)){
Intent intent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 200);
}else{
Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();
}
case R.id.item3:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public void saveImage(Bitmap bitmap){
if(!isSDCARDExit())
Toast.makeText(MainActivity.this, "找不到SD CARD!", Toast.LENGTH_SHORT).show();
File imageDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
if(!imageDir.exists())
imageDir.mkdirs();
File imageFile=new File(imageDir,"pic01.jpg");
FileOutputStream fis;
try {
fis = new FileOutputStream(imageFile);
BufferedOutputStream bos=new BufferedOutputStream(fis);
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);
bos.flush();
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "存檔完畢!", Toast.LENGTH_SHORT).show();
tv.setText("檔案位置---"+imageFile.toString());
}
public boolean isSDCARDExit(){
String state=Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED))
return true;
else
return false;
}
public boolean isIntentAvailable(Context context,String action){
PackageManager pm=context.getPackageManager();
Intent intent=new Intent(action);
List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(list.size()>0)
return true;
else
return false;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode==RESULT_OK){
switch(requestCode){
case 100:
Bundle bundle=intent.getExtras();
Bitmap bitmap=(Bitmap)bundle.get("data");
iv.setImageBitmap(bitmap);
saveImage(bitmap);
break;
case 200:
Uri uri=intent.getData();
MediaController controller=new MediaController(MainActivity.this);
vv.setMediaController(controller);
vv.setVideoURI(uri);
vv.start();
}
}
}
}
[Android]_ch10.6_相機拍照整合存檔功能
[Android]_ch10.6_相機拍照整合存檔功能
package com.gjun.ch26_takephoto;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView tv;
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.textView1);
iv=(ImageView)findViewById(R.id.imageView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.item1:
if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_IMAGE_CAPTURE)){
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 100);
}else{
Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();
}
break;
case R.id.item2:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public void saveImage(Bitmap bitmap){
if(!isSDCARDExit())
Toast.makeText(MainActivity.this, "找不到SD CARD!", Toast.LENGTH_SHORT).show();
File imageDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
if(!imageDir.exists())
imageDir.mkdirs();
File imageFile=new File(imageDir,"pic01.jpg");
FileOutputStream fis;
try {
fis = new FileOutputStream(imageFile);
BufferedOutputStream bos=new BufferedOutputStream(fis);
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);
bos.flush();
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "存檔完畢!", Toast.LENGTH_SHORT).show();
tv.setText("檔案位置---"+imageFile.toString());
}
public boolean isSDCARDExit(){
String state=Environment.getExternalStorageState();
if(state.equals(Environment.MEDIA_MOUNTED))
return true;
else
return false;
}
public boolean isIntentAvailable(Context context,String action){
PackageManager pm=context.getPackageManager();
Intent intent=new Intent(action);
List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(list.size()>0)
return true;
else
return false;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode==RESULT_OK){
switch(requestCode){
case 100:
Bundle bundle=intent.getExtras();
Bitmap bitmap=(Bitmap)bundle.get("data");
iv.setImageBitmap(bitmap);
saveImage(bitmap);
break;
}
}
}
}
[Android]_ch10.5_調用相機拍照功能
[Android]_ch10.5_調用相機拍照功能
package com.gjun.ch26_takephoto;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView tv;
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.textView1);
iv=(ImageView)findViewById(R.id.imageView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.item1:
if(isIntentAvailable(MainActivity.this, MediaStore.ACTION_IMAGE_CAPTURE)){
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 100);
}else{
Toast.makeText(MainActivity.this,"找不到內建應用程式" , Toast.LENGTH_SHORT).show();
}
break;
case R.id.item2:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public boolean isIntentAvailable(Context context,String action){
PackageManager pm=context.getPackageManager();
Intent intent=new Intent(action);
List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(list.size()>0)
return true;
else
return false;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode==RESULT_OK){
switch(requestCode){
case 100:
Bundle bundle=intent.getExtras();
Bitmap bitmap=(Bitmap)bundle.get("data");
iv.setImageBitmap(bitmap);
break;
}
}
}
}
[Android]_ch2.6_購買課程OnClick事件處理
[Android]_ch2.6_購買課程OnClick事件處理
歡迎訂閱頻道:杜仲教學YouTube
[Android]_ch2.6_購買課程OnClick事件處理
tv1=(TextView)findViewById(R.id.textView1);
btn1=(Button)findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StringBuilder sb=new StringBuilder("購買清單如下:\n");
int n1=0,n2=0,n3=0;
if(cb1.isChecked()){
n1=Integer.parseInt(et1.getText().toString());
sb.append(cb1.getText()+":"+n1+"元\n");
}
if(cb2.isChecked()){
n2=Integer.parseInt(et2.getText().toString());
sb.append(cb2.getText()+":"+n2+"元\n");
}
if(cb3.isChecked()){
n3=Integer.parseInt(et3.getText().toString());
sb.append(cb3.getText()+":"+n3+"元\n");
}
int sum=n1+n2+n3;
sb.append("原始金額:"+sum+"元\n");
double dSum=0;
if(rb1.isChecked()){
dSum=sum*0.9;
sb.append("折扣:"+rb1.getText()+"\n折扣後金額:"+dSum+"元\n");
}else if(rb2.isChecked()){
dSum=sum*0.8;
sb.append("折扣:"+rb2.getText()+"\n折扣後金額:"+dSum+"元\n");
}else if(rb3.isChecked()){
dSum=sum*0.7;
sb.append("折扣:"+rb3.getText()+"\n折扣後金額:"+dSum+"元\n");
}
tv1.setText(sb);
}
});
[Android]_ch2.5_RadioButton元件事件處理
歡迎訂閱頻道:杜仲教學YouTube
[Android]_ch2.5_RadioButton元件事件處理
OnClickListener rbOCL=new OnClickListener() {
@Override
public void onClick(View v) {
String msg="折扣數: ";
// if(rb1.isChecked())
// msg=msg+rb1.getText();
// else if(rb2.isChecked())
// msg=msg+rb2.getText();
// else if(rb3.isChecked())
// msg=msg+rb3.getText();
if(((RadioButton)v).isChecked())
msg=msg+((RadioButton)v).getText();
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
};
rb1.setOnClickListener(rbOCL);
rb2.setOnClickListener(rbOCL);
rb3.setOnClickListener(rbOCL);
2018年12月27日 星期四
[Java]_A3.WindowBuilder視窗程式設計
[Java]_A3.WindowBuilder視窗程式設計
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Button;
import java.awt.Label;
import java.awt.TextField;
import java.awt.TextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class A3 extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
A3 frame = new A3();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public A3() {
setTitle("\u5DE8\u5320\u96FB\u8166");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 226, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
Label lb1 = new Label("\u570B\u6587 : ");
lb1.setBounds(10, 10, 47, 23);
contentPane.add(lb1);
Label lb2 = new Label("\u82F1\u6587 : ");
lb2.setBounds(10, 39, 47, 23);
contentPane.add(lb2);
Label lb3 = new Label("\u6578\u5B78 : ");
lb3.setBounds(10, 69, 47, 23);
contentPane.add(lb3);
final TextField tf1 = new TextField();
tf1.setBounds(63, 10, 54, 23);
contentPane.add(tf1);
final TextField tf2 = new TextField();
tf2.setBounds(63, 39, 54, 23);
contentPane.add(tf2);
final TextField tf3 = new TextField();
tf3.setBounds(63, 69, 54, 23);
contentPane.add(tf3);
final TextArea ta = new TextArea();
ta.setBounds(10, 98, 189, 154);
ta.setText("\u6210\u7E3E\u8A08\u7B97\u7D50\u679C\u5982\u4E0B:");
contentPane.add(ta);
Button btn1 = new Button("\u8A08\u7B97");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String s1=tf1.getText().toString();
String s2=tf2.getText().toString();
String s3=tf3.getText().toString();
double n1=Double.parseDouble(s1);
double n2=Double.parseDouble(s2);
double n3=Double.parseDouble(s3);
double sum=n1+n2+n3;
double avg=sum/3;
ta.append("\n國文:"+s1+" 英文:"+s2+" 數學:"+s3+"\n");
ta.append("總分:"+sum+"\n");
ta.append("平均:"+avg+"\n");
}
});
btn1.setBounds(123, 10, 76, 37);
contentPane.add(btn1);
Button btn2 = new Button("\u6E05\u9664");
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
tf1.setText("");
tf2.setText("");
tf3.setText("");
ta.setText("");
}
});
btn2.setBounds(123, 53, 76, 39);
contentPane.add(btn2);
}
}
2018年12月26日 星期三
[Android]_ch2.4_CheckBox事件處理OnCheckChangeListener
[Android]_ch2.4_CheckBox事件處理OnCheckChangeListener
OnCheckedChangeListener OCCL=new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id=((CheckBox)buttonView).getId();
switch(id){
case R.id.checkBox1:
if(isChecked)
et1.setText("55000");
else
et1.setText(R.string.p4);
break;
case R.id.checkBox2:
if(isChecked)
et2.setText(R.string.p2);
else
et2.setText(R.string.p4);
break;
case R.id.checkBox3:
if(isChecked)
et3.setText("65000");
else
et3.setText("0");
break;
}
}
};
cb1.setOnCheckedChangeListener(OCCL);
cb2.setOnCheckedChangeListener(OCCL);
cb3.setOnCheckedChangeListener(OCCL);
[Android]_ch2.3_CheckBox事件處理OnClickListener
[Android]_ch2.3_CheckBox事件處理OnClickListener
package com.gjun.ch3_ckeckbox;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.Toast;
public class MainActivity extends Activity {
CheckBox cb1,cb2,cb3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb1=(CheckBox)findViewById(R.id.checkBox1);
cb2=(CheckBox)findViewById(R.id.checkBox2);
cb3=(CheckBox)findViewById(R.id.checkBox3);
OnClickListener cbOCL=new OnClickListener() {
@Override
public void onClick(View v) {
// boolean state=((CheckBox)v).isChecked();
// StringBuilder sb=new StringBuilder("選擇課程:\n");
// Resources resources=getResources();
// if(state==true){
// sb.append(resources.getString(R.string.s1)+((CheckBox)v).getText().toString());
// }else{
// sb.append(resources.getString(R.string.s2)+((CheckBox)v).getText().toString());
// }
// Toast.makeText(MainActivity.this, sb, Toast.LENGTH_LONG).show();
int id=((CheckBox)v).getId();
StringBuilder sb=new StringBuilder("選擇課程:\n");
Resources resources=getResources();
switch(id){
case R.id.checkBox1:
if(cb1.isChecked()){
sb.append(resources.getString(R.string.s1)+cb1.getText().toString());
}else{
sb.append(resources.getString(R.string.s2)+cb1.getText().toString());
}
break;
case R.id.checkBox2:
if(cb2.isChecked()){
sb.append(resources.getString(R.string.s1)+cb2.getText().toString());
}else{
sb.append(resources.getString(R.string.s2)+cb2.getText().toString());
}
break;
case R.id.checkBox3:
if(cb3.isChecked()){
sb.append(resources.getString(R.string.s1)+cb3.getText().toString());
}else{
sb.append(resources.getString(R.string.s2)+cb3.getText().toString());
}
break;
}
Toast.makeText(MainActivity.this, sb, Toast.LENGTH_LONG).show();
}
};
cb1.setOnClickListener(cbOCL);
cb2.setOnClickListener(cbOCL);
cb3.setOnClickListener(cbOCL);
}
}
2018年12月25日 星期二
[Android]_ch5.10_手勢資料庫
[Android]_ch5.10_手勢資料庫
package com.example.ch5_gesture;
import java.util.ArrayList;
import android.R.integer;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView tv1;
GestureOverlayView gv;
GestureLibrary gestureLibrary;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
gv=(GestureOverlayView)findViewById(R.id.gestureOverlayView1);
gestureLibrary=GestureLibraries.fromRawResource(MainActivity.this, R.raw.gestures);
if(!gestureLibrary.load())
finish();
gv.addOnGesturePerformedListener(new OnGesturePerformedListener() {
@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture usr) {
ArrayList<Prediction> list=gestureLibrary.recognize(usr);
if(list.size()>0){
StringBuilder sb=new StringBuilder("手勢資料庫比對結果如下:\n");
for(int i=0;i<list.size();i++){
String name=list.get(i).name;
double score=list.get(i).score;
sb.append("第"+(i+1)+"個手勢:"+name+" 分數:"+score+"\n");
}
if(list.get(0).score>2.0){
sb.append("電腦判斷手勢符號為:\n");
sb.append("手勢:"+list.get(0).name+" 分數:"+list.get(0).score+"\n");
}else{
sb.append("電腦無法判斷此手勢符號...");
}
tv1.setText(sb);
}else{
Toast.makeText(MainActivity.this, "找不到資料", Toast.LENGTH_SHORT).show();
}
}
});
}
}
2018年12月24日 星期一
[Android]_ch2.2_EditText事件處理OnKeyListener
[Android]_ch2.2_EditText事件處理OnKeyListener
et3=(EditText)findViewById(R.id.editText3);
tv4=(TextView)findViewById(R.id.textView4);
et3.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode==KeyEvent.KEYCODE_ENTER){
String msg=et3.getText().toString();
tv4.setText(msg);
// Toast toast=new Toast(MainActivity.this);
// toast.setText(msg);
// toast.setDuration(Toast.LENGTH_SHORT);
// toast.show();
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
return false;
}});
[Android]_ch2.1_EditText元件設計
[Android]_ch2.1_EditText元件設計
- android:password
定義成密碼輸入型式 - android:hint
提示文字 - android:maxLength
字數長度 - android:phoneNumber
只能輸入電話號碼 - android:numeric
只能輸入數字 - integer–只能輸入正整數
- signed–可以輸入正、負整數
- decimal–可以輸入整數或小數
package com.gjun.ch2_edittext;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
EditText et1,et2,et3;
Button btn1,btn2;
TextView tv4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.editText1);
et2=(EditText)findViewById(R.id.editText2);
et3=(EditText)findViewById(R.id.editText3);
btn1=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
tv4=(TextView)findViewById(R.id.textView4);
OnClickListener OCL=new OnClickListener(){
@Override
public void onClick(View v) {
int id=((Button)v).getId();
switch(id){
case R.id.button1:
String s1=et1.getText().toString();
int n1=Integer.parseInt(s1);
String s2=et2.getText().toString();
double n2=Double.parseDouble(s2);
String s3=et3.getText().toString();
int n3=Integer.parseInt(s3);
double sum=n1+n2+n3;
double avg=(n1+n2+n3)/3;
StringBuilder sb=new StringBuilder("成績計算如下:\n");
sb.append("國文:"+s1+" 英文:"+s2+" 數學:"+s3+"\n");
sb.append("總分:"+sum+"\n"); // int+double+int --> double
sb.append("平均:"+avg+"\n"); // double/int --> double
sb.append((avg>=60)?"恭喜及格\n":"抱歉不及格!\n");
int level=(int)(avg/10);
switch(level){
case 10:
case 9:
sb.append("A級\n");
break;
case 8:
sb.append("B級\n");
break;
case 7:
sb.append("C級\n");
break;
case 6:
sb.append("D級\n");
break;
default:
sb.append("E級\n");
}
tv4.setText(sb);
break;
case R.id.button2:
et1.setText("0");
et2.setText("0");
et3.setText("0");
tv4.setText("");
break;
}
}};
btn1.setOnClickListener(OCL);
btn2.setOnClickListener(OCL);
}
}
2018年12月23日 星期日
[Java]_ch8.8_大樂透物件導向設計2
[Java]_ch8.8_大樂透物件導向設計2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Loto {
int A[]=new int[6];
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader buf=new BufferedReader(isr);
int num;
public Loto(int n) {
num=n;
}
public int userIn() throws IOException {
System.out.print("[Loto遊戲]\n請輸入1.自選、2.隨機: ");
String s=buf.readLine();
int usr=Integer.parseInt(s);
return usr;
}
public void platForm(int usr) throws IOException {
switch(usr) {
case 1:
selfLoto();
break;
case 2:
randomLoto(userInput());
break;
default:
System.out.println("很抱歉~~沒有此遊戲選項!");
}
}
public void selfLoto() throws IOException {
int n=userInput();
for(int i=1;i<=n;i++) {
System.out.println("第"+i+"組樂透號碼輸入:");
for(int j=0;j<A.length;j++) {
System.out.print("請輸入第"+(j+1)+"個號碼: ");
String s=buf.readLine();
A[j]=Integer.parseInt(s);
}
Arrays.sort(A);
for(int k=0;k<A.length;k++) {
System.out.print(A[k]+"\t");
}
System.out.println();
}
}
public int userInput() throws IOException {
System.out.print("請輸入組數: ");
String s=buf.readLine();
int n=Integer.parseInt(s);
return n;
}
public void randomLoto(int n){
for(int i=1;i<=n;i++) {
System.out.print("第"+i+"組:\t");
A[0]=(int)(Math.random()*num+1);
do {
A[1]=(int)(Math.random()*num+1);
}while(A[1]==A[0]);
do {
A[2]=(int)(Math.random()*num+1);
}while(A[2]==A[1] || A[2]==A[0]);
do {
A[3]=(int)(Math.random()*num+1);
}while(A[3]==A[2] || A[3]==A[1] || A[3]==A[0]);
do {
A[4]=(int)(Math.random()*num+1);
}while(A[4]==A[3] || A[4]==A[2] || A[4]==A[1] || A[4]==A[0]);
do {
A[5]=(int)(Math.random()*num+1);
}while(A[5]==A[4] || A[5]==A[3] || A[5]==A[2] || A[5]==A[1] || A[5]==A[0]);
for(int j=0;j<A.length;j++) {
System.out.print(A[j]+"\t");
}
System.out.print("\n排序後:\t");
Arrays.sort(A);
for(int j=0;j<A.length;j++) {
System.out.print(A[j]+"\t");
}
System.out.println();
}
}
}
2018年12月22日 星期六
[Java]_ch8.7_大樂透物件導向設計1
[Java]_ch8.7_大樂透物件導向設計1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Loto {
int A[]=new int[6];
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader buf=new BufferedReader(isr);
int num;
public Loto(int n) {
num=n;
}
public int UserInput() throws IOException {
System.out.print("請輸入隨機組數: ");
String s=buf.readLine();
int n=Integer.parseInt(s);
return n;
}
public void randomLoto(int n){
for(int i=1;i<=n;i++) {
System.out.print("第"+i+"組:\t");
A[0]=(int)(Math.random()*num+1);
do {
A[1]=(int)(Math.random()*num+1);
}while(A[1]==A[0]);
do {
A[2]=(int)(Math.random()*num+1);
}while(A[2]==A[1] || A[2]==A[0]);
do {
A[3]=(int)(Math.random()*num+1);
}while(A[3]==A[2] || A[3]==A[1] || A[3]==A[0]);
do {
A[4]=(int)(Math.random()*num+1);
}while(A[4]==A[3] || A[4]==A[2] || A[4]==A[1] || A[4]==A[0]);
do {
A[5]=(int)(Math.random()*num+1);
}while(A[5]==A[4] || A[5]==A[3] || A[5]==A[2] || A[5]==A[1] || A[5]==A[0]);
for(int j=0;j<A.length;j++) {
System.out.print(A[j]+"\t");
}
System.out.print("\n排序後:\t");
Arrays.sort(A);
for(int j=0;j<A.length;j++) {
System.out.print(A[j]+"\t");
}
System.out.println();
}
}
}
2018年12月21日 星期五
[Android]_ch1.5_Button元件共用監聽器
[Android]_ch1.5_Button元件共用監聽器
package com.gjun.ch1_buttonclick;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Act01 extends Activity {
TextView tv1;
Button btn1,btn2,btn3,btn4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1=(TextView)findViewById(R.id.textView1);
btn1=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
btn3=(Button)findViewById(R.id.button3);
btn4=(Button)findViewById(R.id.button4);
OnClickListener OCL=new OnClickListener(){
@Override
public void onClick(View v) {
int id=((Button)v).getId();
String name="";
switch(id){
case R.id.button1:
name=btn1.getText().toString();
tv1.setText(name);
tv1.setBackgroundColor(Color.RED);
tv1.setTextSize(16);
break;
case R.id.button2:
name=btn2.getText().toString();
tv1.setText(name);
tv1.setBackgroundColor(Color.GREEN);
tv1.setTextSize(26);
break;
case R.id.button3:
Resources r=getResources();
name=r.getString(R.string.b3);
tv1.setText(name);
tv1.setBackgroundColor(Color.BLUE);
tv1.setTextSize(36);
break;
case R.id.button4:
tv1.setText("離開");
finish();
break;
}
}};
btn1.setOnClickListener(OCL);
btn2.setOnClickListener(OCL);
btn3.setOnClickListener(OCL);
btn4.setOnClickListener(OCL);
}
}
[Android]_ch1.4_Button元件與事件處理
[Android]_ch1.4_Button元件與事件處理
package com.gjun.ch1_buttonclick;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Act01 extends Activity {
TextView tv1;
Button btn1,btn2,btn3,btn4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1=(TextView)findViewById(R.id.textView1);
btn1=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
btn3=(Button)findViewById(R.id.button3);
btn4=(Button)findViewById(R.id.button4);
btn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String name=btn1.getText().toString();
tv1.setText(name);
tv1.setBackgroundColor(Color.RED);
tv1.setTextSize(16);
}});
btn2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String name=btn2.getText().toString();
tv1.setText(name);
tv1.setBackgroundColor(Color.GREEN);
tv1.setTextSize(26);
}});
btn3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Resources r=getResources();
String name=r.getString(R.string.b3);
tv1.setText(name);
tv1.setBackgroundColor(Color.BLUE);
tv1.setTextSize(36);
}});
btn4.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
tv1.setText("離開");
finish();
}});
}
}
2018年12月20日 星期四
2018年12月19日 星期三
[Android]_ch1.3_Android專案架構
[Android]_ch1.3_Android專案架構
package com.derek.ch0_demo;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
btn2=(Button)findViewById(R.id.button2);
}
public void btn1_click(View view){
Resources resources=getResources();
String name=resources.getString(R.string.b1);
tv1.setText(name);
tv1.setBackgroundColor(Color.RED);
}
public void btn2_click(View view){
String name=btn2.getText().toString();
tv1.setText(name);
tv1.setTextColor(new Color().rgb(255, 111, 88));
tv1.setTextSize(20.5f);
tv1.setBackgroundColor(Color.GREEN);
}
public void btn3_click(View view){
tv1.setText("藍色");
tv1.setBackgroundColor(Color.BLUE);
}
public void btn4_click(View view){
tv1.setText("離開");
finish();
}
}
[Android]_ch1.2_按鈕元件onClicl屬性設定
[Android]_ch1.2_按鈕元件onClicl屬性設定
package com.derek.ch0_demo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
}
public void btn1_click(View view){
tv1.setText("紅色");
tv1.setBackgroundColor(Color.RED);
}
public void btn2_click(View view){
tv1.setText("綠色");
tv1.setBackgroundColor(Color.GREEN);
}
public void btn3_click(View view){
tv1.setText("藍色");
tv1.setBackgroundColor(Color.BLUE);
}
public void btn4_click(View view){
tv1.setText("離開");
finish();
}
}
2018年12月18日 星期二
[Android]_ch5.6_AlertDialog複選方塊元件
[Android]_ch5.6_AlertDialog複選方塊元件
package com.example.ch5_dialog;
import org.w3c.dom.Text;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btn1,btn2;
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
tv1=(TextView)findViewById(R.id.textView1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(1);
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(2);
}
});
}
@Override
@Deprecated
protected Dialog onCreateDialog(int id, Bundle args) {
switch(id){
case 1:
final String items[]={"Android","Java","CCNA","Linux"};
final boolean checkedItems[]=new boolean[items.length];
return new AlertDialog.Builder(MainActivity.this)
.setTitle("購買課程")
.setCancelable(false)
.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(MainActivity.this, items[which]+(isChecked?"勾選":"取消"), Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.setPositiveButton("確定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder sb=new StringBuilder("購買課程如下:\n");
for(int i=0;i<items.length;i++){
if(checkedItems[i])
sb.append(items[i]+"\n");
}
tv1.setText(sb);
}
})
.show();
case 2:
return new AlertDialog.Builder(MainActivity.this)
.setTitle("結束程式嗎?")
.setCancelable(false)
.setMessage("您存檔了嗎?確定結束程式?")
.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.setPositiveButton("確定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.show();
}
return super.onCreateDialog(id, args);
}
}
訂閱:
文章 (Atom)
Ether.fi Cash Card 一張所有人必備的加密貨幣信用卡 [Ether.fi Cash Card] : https://www.ether.fi/app/cash/sign-up?ref_code=d27f8523 ------國際交易所------ [Bitg...
-
22.Hamster Kombat Daily Combo倉鼠戰鬥_DailyCombo0620 ------國際交易所------ [Bitget 交易所]: https://partner.bitget.com/bg/DCA888 邀請碼:DCA888 [Bybit交...
-
[CATS coin每日任務(Ton區塊鏈游戲伏擊百倍幣)] https://t.me/catsgang_bot/join?startapp=FXvTt0OIdo7NJ4jxDutEV ------國際交易所------ [Bitget 交易所]: https://partn...