2019年1月18日 星期五

Android ch11 7 FragmentDual元件1



Android ch11 7 FragmentDual元件1

package com.derek.ch30_fragmentdual;



import java.util.ArrayList;



import android.app.ListFragment;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.ListView;



public class MasterFragment extends ListFragment{



@Override

public void onActivityCreated(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onActivityCreated(savedInstanceState);

ArrayList<String> parkName=new ArrayList<String>();

for(Park park:Resot.PARKS){

parkName.add(park.getName());

}

ArrayAdapter<String> AA=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_activated_1,parkName);

setListAdapter(AA);

}



@Override

public void onListItemClick(ListView l, View v, int position, long id) {

showDetail(position);

}

public void showDetail(int position){

Intent intent=new Intent();

intent.setClass(getActivity(), DetailActivity.class);

intent.putExtra("position", position);

startActivity(intent);

}



}



package com.derek.ch30_fragmentdual;
import android.app.Activity;
import android.os.Bundle;


public class DetailActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}

}


package com.derek.ch30_fragmentdual;

import android.R.integer;

public class Park {
String name;
int imageId;
String description;
public Park(String name,int imageId,String description){
this.name=name;
this.imageId=imageId;
this.description=description;
}
public String getName(){
return name;
}
public String getDescription(){
return description;
}
public int getImageId(){
return imageId;
}
}

package com.derek.ch30_fragmentdual;

public final class Resot {
public static final Park PARKS[]={
new Park("陽明山國家公園", R.drawable.yangmingshan,"陽明山國家公園前身為日治時期成立之大屯國立公園,1985年9月16日成立管理處。位於台北市近郊,行政區域包括同市北投區、士林區,新北市的萬里區、金山區、三芝區、淡水區一帶;地理上則屬於大屯火山彙區域。"),
new Park("玉山國家公園", R.drawable.yushan, "玉山國家公園是台灣第2座國家公園,1985年4月10日成立管理處,面積10萬5,490公頃,屬一典型高山國家公園。"),
new Park("太魯閣國家公園", R.drawable.taroko, "太魯閣國家公園前身為日治時期成立之次高太魯閣國立公園,1986年11月28日成立管理處。位於台灣東部,地跨花蓮縣、台中市、南投縣三個行政區。"),
new Park("墾丁國家公園", R.drawable.kenting, "墾丁國家公園是台灣第1座成立的國家公園,1984年1月1日成立管理處,三面臨海,為我國少數同時涵蓋陸域與海域的國家公園之一,海域面積15206.09公頃、陸域面積18083.50公頃,合計共33,289.59公頃。")
};
}

[Android]_ch11.6_Fragment元件2





[Android]_ch11.6_Fragment元件2

package com.derek.ch29_fragment;



import android.app.Activity;

import android.app.Fragment;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

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;





public class MainActivity extends Activity {

Button btn1,btn2,btn3,btn4;

    @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);

        btn3=(Button)findViewById(R.id.button3);

        btn4=(Button)findViewById(R.id.button4);

        FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment==null){

        MyFragment myFragment=new MyFragment("國立交通大學");

        ft.add(R.id.framelayout, myFragment);

        ft.addToBackStack(null);

        ft.commit();

        btn1.setEnabled(false);

        btn2.setEnabled(true);

        }

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment!=null && fragment.isDetached()){        

        MyFragment myFragment=new MyFragment("國立交通大學");

        ft.add(R.id.framelayout, myFragment);

        ft.addToBackStack(null);

        ft.commit();

        btn1.setEnabled(false);

        btn2.setEnabled(true);

        }

}

});

        btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment!=null && !fragment.isDetached()){

        ft.detach(fragment);

        ft.addToBackStack(null);

        ft.commit();

        btn2.setEnabled(false);

        btn1.setEnabled(true);

        }

}

});

        btn3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MainActivity.this.finish();

}

});

        btn4.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment!=null && fragment.isDetached()){        

        MyFragment1 myFragment1=new MyFragment1("元培醫事科技大學", R.drawable.ypu);

        ft.add(R.id.framelayout, myFragment1);

        ft.addToBackStack(null);

        ft.commit();

        btn4.setText("移除");

        }else if(fragment!=null && !fragment.isDetached()){

        ft.detach(fragment);

        ft.addToBackStack(null);

        ft.commit();

        btn4.setText("附加");

        }

}

});

    }





}



package com.derek.ch29_fragment;

import android.R.integer;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class MyFragment1 extends Fragment{
String title;
ImageView iv;
TextView tv;
int resId;
public MyFragment1(String title,int resId){
this.title=title;
this.resId=resId;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.myfragment1, container,false);
tv=(TextView)view.findViewById(R.id.textView1);
iv=(ImageView)view.findViewById(R.id.imageView1);
tv.setText(title);
iv.setImageResource(resId);
return view;
}
}


[Android]_ch11.5_Fragment元件1



[Android]_ch11.5_Fragment元件1



package com.derek.ch29_fragment;



import android.app.Activity;

import android.app.Fragment;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

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;





public class MainActivity extends Activity {

Button btn1,btn2,btn3;

    @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);

        btn3=(Button)findViewById(R.id.button3);

        FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment==null){

        MyFragment myFragment=new MyFragment("國立交通大學");

        ft.add(R.id.framelayout, myFragment);

        ft.addToBackStack(null);

        ft.commit();

        btn1.setEnabled(false);

        btn2.setEnabled(true);

        }

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment!=null && fragment.isDetached()){        

        ft.attach(fragment);

        ft.addToBackStack(null);

        ft.commit();

        btn1.setEnabled(false);

        btn2.setEnabled(true);

        }

}

});

        btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fm=getFragmentManager();

        FragmentTransaction ft=fm.beginTransaction();

        Fragment fragment=fm.findFragmentById(R.id.framelayout);

        if(fragment!=null && !fragment.isDetached()){

        ft.detach(fragment);

        ft.addToBackStack(null);

        ft.commit();

        btn2.setEnabled(false);

        btn1.setEnabled(true);

        }

}

});

        btn3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MainActivity.this.finish();

}

});

    }



}



package com.derek.ch29_fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFragment extends Fragment{
String title;
TextView tv;
public MyFragment(String title){
this.title=title;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.myfragment, container,false);
tv=(TextView)view.findViewById(R.id.textView1);
tv.setText(title);
return view;
}
}

Android ch4 5 單選訊息元件介紹



[Android]_ch4.5_單選訊息元件介紹

case 3:

String items[]={"紅色","綠色","藍色","紫色"};

DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

switch(which){

case 0:

layout.setBackgroundColor(Color.RED);

break;

case 1:

layout.setBackgroundColor(Color.GREEN);

break;

case 2:

layout.setBackgroundColor(Color.BLUE);

break;

case 3:

layout.setBackgroundColor(new Color().rgb(255, 0, 255));

break;

}

}

};

return new AlertDialog.Builder(MainActivity.this)

.setIcon(R.drawable.ic_launcher)

.setTitle("設定背景顏色")

.setItems(items, listener)

.setPositiveButton("確定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

finish();

}

})

.setNegativeButton("取消", new DialogInterface.OnClickListener() {



@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}

})

.setCancelable(false)

.show();

Android ch4 4 DatePicker元件介紹



[Android]_ch4.4_DatePicker元件介紹

btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

showDialog(DateId);

}

});



protected Dialog onCreateDialog(int id) {

switch(id){

case 2:

return new DatePickerDialog(MainActivity.this, new OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

Y=year;

M=monthOfYear;

D=dayOfMonth;

tv1.setText("挑選日期:"+Y+"-"+(M+1)+"-"+D);

}

}, Y, M, D);

}

return super.onCreateDialog(id);

}

2019年1月11日 星期五

[Android]_ch4.3_AlertDialog訊息元件介紹





[Android]_ch4.3_AlertDialog訊息元件介紹



package com.derek.ch11_dialog;



import android.app.Activity;

import android.app.AlertDialog;

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;





public class MainActivity extends Activity {

Button btn1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        btn1=(Button)findViewById(R.id.button1);

        btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

AlertDialog.Builder AB=new AlertDialog.Builder(MainActivity.this);

AB.setTitle("結束程式");

AB.setIcon(R.drawable.ic_launcher);

AB.setMessage("按下確定即可結束程式");

AB.setPositiveButton("確定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

finish();

}

});

AB.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}

});

AB.setCancelable(false);

AB.show();

}

});

    }





}


[Android]_ch4.1_OptionMenu元件介紹





[Android]_ch4.1_OptionMenu元件介紹

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater menuInflater=getMenuInflater();

menuInflater.inflate(R.menu.option_menu, menu);

return super.onCreateOptionsMenu(menu);

}



@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id=item.getItemId();

Resources resources=getResources();

String msg="選擇:";

switch(id){

case R.id.item1:

msg=msg+resources.getString(R.string.s1);

break;

case R.id.item2:

msg=msg+resources.getString(R.string.s2);

break;

case R.id.item3:

msg=msg+resources.getString(R.string.s3);

break;

case R.id.item4:

msg=msg+resources.getString(R.string.s4);

finish();

break;

}

Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();

return super.onOptionsItemSelected(item);

}

2019年1月9日 星期三

[Android]_ch3.6_Touch元件介紹


[Android]_ch3.6_Touch元件介紹
歡迎訂閱頻道:杜仲教學YouTube https://www.youtube.com/channel/UCElw... 杜仲教學部落格: https://derekcctu.blogspot.com/





package com.derek.ch8_touch;



import android.R.integer;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.LinearLayout;

import android.widget.TextView;





public class MainActivity extends Activity {

TextView tv1;

LinearLayout layout;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        layout=(LinearLayout)findViewById(R.id.LinearLayout1);

        tv1=(TextView)findViewById(R.id.textView1);

        layout.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

StringBuilder sb=new StringBuilder("Touch結果如下:\n");

sb.append(String.format("目前位置:( %.2f,%.1f )%n", event.getX(),event.getY()));

if(event.getAction()==MotionEvent.ACTION_DOWN)

sb.append("狀態:Touch開始\n");

else if(event.getAction()==MotionEvent.ACTION_MOVE)

sb.append(String.format("狀態:Touch移動中,( %.2f,%.1f )%n", event.getX(),event.getY()));

else if (event.getAction()==MotionEvent.ACTION_UP)

sb.append("狀態:Touch結束\n");

int n=event.getPointerCount();

sb.append("Touch點個數:"+n+"個\n");

for(int i=0;i<n;i++){

sb.append(String.format("第 %d 個點:( %.2f,%.3f )%n",event.getPointerId(i),event.getX(),event.getY()));

}

tv1.setText(sb);

return true;

}

});

    }



}


2019年1月7日 星期一

[Android]_ch3.5_GestureOverlayView元件介紹2



[Android]_ch3.5_GestureOverlayView元件介紹2



package com.derek.ch7_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 {

GestureOverlayView gv;

TextView tv1;

GestureLibrary gl;

    @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);

        gl=GestureLibraries.fromRawResource(MainActivity.this, R.raw.gestures);

        if(!gl.load())

        finish();

        gv.addOnGesturePerformedListener(new OnGesturePerformedListener() {

@Override

public void onGesturePerformed(GestureOverlayView overlay, Gesture usr) {

ArrayList<Prediction> list=gl.recognize(usr);

if(list.size()>0){

StringBuilder sb=new StringBuilder("共"+list.size()+"筆--比對結果如下:\n");

for(int i=0;i<list.size();i++){

Prediction p=list.get(i);

String name=p.name;

double score=p.score;

sb.append(String.format("第%d筆:名稱:%s 分數:%.2f%n",(i+1),name,score));

}

if(list.get(0).score>2.0)

sb.append(String.format("比對結果: %s%n分數:%.2f",list.get(0).name,list.get(0).score));

else

sb.append("找不到相符資料...");

tv1.setText(sb);

}else{

Toast.makeText(MainActivity.this, "沒有任何比對資料!",Toast.LENGTH_SHORT).show();

}



}

});

    }

}


[Android]_ch3.4_GestureOverlayView元件介紹1


[Android]_ch3.4_GestureOverlayView元件介紹
歡迎訂閱頻道:杜仲教學YouTube https://www.youtube.com/channel/UCElw... 杜仲教學部落格: https://derekcctu.blogspot.com/






n建立手勢資料庫
n在模擬器上執行Gestures Builder應用程式
n建立手勢並命名會產生手勢資料庫檔案(檔名為gestures),儲存在SD卡內
n使用DDMS將手勢資料庫檔案拷貝至指定應用程式的res/raw目錄即可用來比對使用者手勢
n新增GestureOverlayView元件之後使用者會在上畫出手勢
nGestureOverlayView元件呼叫addOnGesturePerformedListener()OnGesturePerformedListener註冊並實作onGesturePerformed()
n當使用者畫出手勢時, onGesturePerformed()會自動被呼叫並執行



package com.derek.ch7_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 {

GestureOverlayView gv;

TextView tv1;

GestureLibrary gl;

    @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);

        gl=GestureLibraries.fromRawResource(MainActivity.this, R.raw.gestures);

        if(!gl.load())

        finish();

        gv.addOnGesturePerformedListener(new OnGesturePerformedListener() {

@Override

public void onGesturePerformed(GestureOverlayView overlay, Gesture usr) {

ArrayList<Prediction> list=gl.recognize(usr);

if(list.size()>0){

StringBuilder sb=new StringBuilder("共"+list.size()+"筆--比對結果如下:\n");

for(int i=0;i<list.size();i++){

Prediction p=list.get(i);

String name=p.name;

double score=p.score;

sb.append("第"+(i+1)+"筆:name="+name+" score="+score+"\n");

}

tv1.setText(sb);

}else{

Toast.makeText(MainActivity.this, "沒有任何比對資料!",Toast.LENGTH_SHORT).show();

}



}

});

    }

}


2019年1月4日 星期五

[Android]_ch11.4_Tab導覽列元件2





[Android]_ch11.4_Tab導覽列元件2

package com.derek.ch28_tab;



import android.app.ActionBar;

import android.app.ActionBar.TabListener;

import android.app.Activity;

import android.app.ActionBar.Tab;

import android.app.Fragment;

import android.app.FragmentTransaction;

import android.content.Context;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;





public class MainActivity extends Activity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        //setContentView(R.layout.activity_main);

       

        ActionBar actionBar=getActionBar();

        actionBar.setDisplayShowHomeEnabled(false);

        actionBar.setDisplayShowTitleEnabled(false);

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        Tab Tab1=actionBar.newTab();

        Tab1.setText("郵件");

        Tab1.setIcon(R.drawable.icon1);

        Tab1.setTabListener(new MyTabListener<Tab1>(MainActivity.this,"Tab1",Tab1.class));

        Tab Tab2=actionBar.newTab();

        Tab2.setText("購物");

        Tab2.setIcon(R.drawable.icon2);

        Tab2.setTabListener(new MyTabListener<Tab2>(MainActivity.this,"Tab2",Tab2.class));

        Tab Tab3=actionBar.newTab();

        Tab3.setText("主頁");

        Tab3.setIcon(R.drawable.icon3);

        Tab3.setTabListener(new MyTabListener<Tab3>(MainActivity.this,"Tab3",Tab3.class));

        Tab Tab4=actionBar.newTab();

        Tab4.setText("Q&A");

        Tab4.setIcon(R.drawable.icon4);

        Tab4.setTabListener(new MyTabListener<Tab4>(MainActivity.this,"Tab4",Tab4.class));

        actionBar.addTab(Tab1);

        actionBar.addTab(Tab2);

        actionBar.addTab(Tab3);

        actionBar.addTab(Tab4);

    }

   

    public class MyTabListener<T extends Fragment> implements TabListener{

    Fragment fragment;

    String name;

    Class<T> clz;

    Context context;

   

    public MyTabListener(Context context,String name, Class<T> clz){

    this.context=context;

    this.name=name;

    this.clz=clz;

    }

@Override

public void onTabSelected(Tab tab, FragmentTransaction ft) {

if(fragment==null){

fragment=Fragment.instantiate(context, clz.getName());

ft.add(android.R.id.content, fragment, name);

}else{

ft.attach(fragment);

}

}



@Override

public void onTabUnselected(Tab tab, FragmentTransaction ft) {

if(fragment!=null){

ft.detach(fragment);

}

}



@Override

public void onTabReselected(Tab tab, FragmentTransaction ft) {

Toast.makeText(MainActivity.this, "釋放回收...", Toast.LENGTH_SHORT).show();



}

   

    }

}


Ether.fi Cash Card 一張所有人必備的加密貨幣信用卡   [Ether.fi Cash Card] : https://www.ether.fi/app/cash/sign-up?ref_code=d27f8523 ------國際交易所------ [Bitg...