天天看點

2013年6月20日 10:58:01

該說,下了兩天的雨,這絕對爽死了是吧..今早看來是睡得最惬意最容易讓人懶床的一天呢,課一天休一天,這個肯定會慣壞我們的...

不認真了呢,你看你,好習慣都堅持這麼久了,最近卻要慢慢頹廢不寫部落格了的樣子,,泥煤的,不是按理來說新養2周以上的習慣就已經能讓你成型的麼,我這都兩個月以上了,卻在這陣子還慢慢地拖拉下來,這什麼性格喂讨厭!天蠍座會這樣麼?天蠍座會有點“有新就頹廢舊”麼?奶奶個熊,反正就是有新東西左右我了才會也改變了長久以來的好習慣吧,,

回顧一下從上篇到現在的一周我為什麼沒寫。。13因為老師第一次帶着大家變講邊一起寫,是以那天很興奮才晚上寫了部落格的,14休肯定是玩去了,因為假時感覺寫不了什麼東西,.15到17的周六到周一上課,16号父親節(我那忙碌的為家庭奔波的老爸啊!)...15号竟然沒翻到筆記,好吧忘了課程了,也估計就是這天我U盤壞了讀不起的原因吧(可惡的水貨!)

16号的是講了事件處理,哦對主要寫的是個電腦界面,實作簡單的科學的從左到右依次計算,截取符号的方式:

基于監聽的事件處理和基于回調的事件處理(java是事件委托模型)

事件源,監聽器(處理事件)

安卓特有的回調處理,自己處理

監聽器處理方式:

Activity本身作為事件監聽器

匿名内部類

外部類

内部類

直接綁定到标簽(在xml裡,某要實作事件,有熟悉Click=“click”),再在Activity裡寫個void click(View v){}方法。

MVC模式。C:control,控制器事件處理

回調事件處理:如自定義個元件,裡面可重寫自己想要實作的方法,可包括如點選事件onTouchEvent,xml裡直接用,界面裡可直接實作處理

手勢(Gesture)觸

手勢檢測,需建立類GestureDetector,重寫方法OnGestureListener監聽器對象

onDown;onFling(4參數);onLongPress;onScroll;onShowPress;onSingletapUp;(implements OnGestureListener即可)

onFling要實作,還要重寫onTouchEvent方法,修改傳回為gestureDetector.onTouchEvent(event)

關鍵代碼:

// 擷取數字鍵和計算鍵的值并顯示到文本框裡
	public void input(View v) {
		Button btn = (Button) v;
		String btnStr = btn.getText().toString();
		et = (EditText) findViewById(R.id.editText1);
		String contentText = et.getText().toString();
		contentText += btnStr;
		et.setText(contentText);
		// 設定光标在末尾,即下标的index是字元串的長度
		et.setSelection(contentText.length());

		if ("+".equals(btnStr) || "-".equals(btnStr) || "×".equals(btnStr)
				|| "÷".equals(btnStr)) {
			flagList.add(btnStr);
		}
	}
           
// 等于,計算
	public void dengyu(View v) {
		String text = et.getText().toString();
  
		String[] strs = text.split("(\\+)|[-×÷]");
		// int content = 0;
		// if (text.indexOf("+") != -1) {
		// String[] texts = text.split("\\+");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// + Integer.parseInt(texts[1]);
		// }
		// } else if (text.indexOf("-") != -1) {
		// String[] texts = text.split("\\-");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// - Integer.parseInt(texts[1]);
		// }
		// } else if (text.indexOf("×") != -1) {
		// String[] texts = text.split("\\×");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// * Integer.parseInt(texts[1]);
		// }
		// }
		// //bug:得數怎麼讓其顯示為小數呢?若前面content定義為double,則每次計算都有“.0”什麼的。看着煩
		// else if (text.indexOf("÷") != -1) {
		// String[] texts = text.split("\\÷");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// / Integer.parseInt(texts[1]);
		// }
		// }
		// et.setText(content + "");
		int result = Integer.parseInt(strs[0]);
		for (int i = 0; i < flagList.size(); i++) {
			if ("+".equals(flagList.get(i))) {
				result += Integer.parseInt(strs[i + 1]);
			} else if ("-".equals(flagList.get(i))) {
				result -= Integer.parseInt(strs[i + 1]);
			} else if ("×".equals(flagList.get(i))) {
				result *= Integer.parseInt(strs[i + 1]);
			} else if ("÷".equals(flagList.get(i))) {
				result /= Integer.parseInt(strs[i + 1]);
			}
		}
		 et.setText(result+"");
		et.setSelection(et.length());
		System.out.println(result);

		flagList.clear();
	}
           

17号(對了,觀摩反編譯代碼的memo的編譯文本界面,我還沒實作換行線..是以就不貼代碼了..):

昨天的事件,事件監聽器,接觸的比較多的是onclicklistener,還有其他的課官網去查,利用java提供是委托事件模型,自創;回調機制,不會實作監聽器,誰發出誰處理,可自定義元件,寫方法,一般要重寫3個構造方法

手勢:implements OnGestureListener,onfling方法(4參數:開始,結束,橫縱向速率)

左右切換歡迎界面,首先int數組各圖檔位置,交給手勢管理器去處理,new OnGestureDetector,setImageDrawable是傳對象,xxxresource是傳ID。有方法linearLayout.getChildAt(index),擷取幾。

今天,繼續讀幾下備忘錄程式代碼。今天主要實作從右到左實作跳出删除按鈕,并寫編輯界面,包括劃行線。

MemoEdited,

右上,Hierarchy View看布局。

ui裡新包(視窗元件)widget,IphoneEditText extends EditText(3構造方法),IphoneMemoLinedEditText extends IphoneEditText (3構造方法); 【一大波。。看代碼吧】

又講怎麼擷取系統資訊。安卓又限制不能再子線程裡改元件狀态等

(第六章ppt)

響應系統設定 Configuration類

消息傳送機制 Handle:再新啟動線程中發送消息void sendMessage,再主線程煮擷取并處理消息void

作業:1.memo程式的按鈕删除,隻一行

2.某圖檔(元件)的移動,如點選某按鈕後,自動移動(改變margingleft和top):

/**
 * Configuration 的一些些
 * @author Administrator
 *
 */
public class An0617Activity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		TextView tv = (TextView) findViewById(R.id.main_textview_1);
		String configStr = "";
		Configuration config = getResources().getConfiguration();
		configStr +="fontScale字型縮放因子"+ config.fontScale + "\n";
		configStr +="keyboard鍵盤類型"+ config.keyboard + "\n";
		configStr +="地區"+ config.locale + "\n";
		configStr +="導航"+ config.navigation + "\n";
		configStr +="111"+ config.orientation+ "\n";
		configStr +="222"+ config.touchscreen + "\n";

	}
}
           

講了Handler:

/**
 * 自寫Handler類
 * 
 * @author Administrator
 * 
 */
public class ChangeImageHandle extends Handler {
	private int[] images = new int[] { R.drawable.whatsnew_fornew_01,
			R.drawable.whatsnew_fornew_02, R.drawable.whatsnew_fornew_03,
			R.drawable.whatsnew_fornew_04, R.drawable.whatsnew_fornew_05 };
	private ChangeImageActivity activity;

	public ChangeImageHandle(ChangeImageActivity activity) {
		// 構造方法
		this.activity = activity;
	}

	/**
	 * 這是些什麼?!
	 */
	@Override
	public void handleMessage(Message msg) {
		// TODO Auto-generated method stub
		super.handleMessage(msg);
		if (msg.what == ChangeImageActivity.CHANGE_IMAGE) {
			ImageView imageView = (ImageView)activity.findViewById(R.id.change_image_main_image1);
			Log.i("imgsadfdsfsdf", imageView+"");
			imageView.setImageResource(images[msg.getData().getInt("index")]);
		}

	}
}
           
/**
 * 關于Handel,切換圖檔的類
 * 
 * @author Administrator
 * 
 */
public class ChangeImageActivity extends Activity {

	public static final int CHANGE_IMAGE = 1;

	private Handler handler;// 導os包

	private int index = 0;
	private boolean isRun = true;

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

		// handler = new Handler() {
		// @Override
		// public void handleMessage(Message msg) {
		// super.handleMessage(msg);
		// if (msg.what == CHANGE_IMAGE) {
		// ImageView imageView = (ImageView)
		// findViewById(R.id.change_image_main_image1);
		// imageView.setImageResource(images[index]);// 這個images是哪來的?
		// }
		// }
		// };

		handler = new ChangeImageHandle(this);
		Button btn1 = (Button) findViewById(R.id.change_image_main_btn1);

		// 實作事件
		btn1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				new Thread() {
					@Override
					public void run() {
						isRun = true;
						for (index = 0; index < 5; index++) {
							
							Message msg = new Message();
							msg.what = CHANGE_IMAGE;
							// 建立存放資料的map對象
							Bundle bundle = new Bundle();
							bundle.putInt("index", index);
							msg.setData(bundle);
							handler.sendMessage(msg);
							if (isRun ==false) {
								return;
							}
							try {
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							if (index == 4) {
								index = 0;
							}
						}

					}
				}.start();
			}
		});

		Button btn2 = (Button) findViewById(R.id.change_image_main_btn2);
		btn2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				isRun = false;
			}
		});

	}
}
           

18号修回學校,作業要做的寫出删除按鈕的彈出效果都沒寫..主要是回去弄個蓋章和關于校内英語四級沒過情況的申述處理..哎呀這實在是讓人揪心得很,這麼簡單的英語都考不過,我的英語白學了(你就沒怎麼學過英語好吧?)..這件事必定又是我人生幾大後悔事之一了!(沒有學位證泥煤啊!即使後面自考英語四級那多難啊,再說以後有那個心或者時間看英語麼,早知道校内的這個這麼簡單的看一陣子書絕對能過的好吧,沒前人指教個人的覺悟也不夠啊),泥煤..再說吧.

19号昨天了,Activity的話,之前有看視訊過的知識點,是以心理上在課上輕松了很多(話說這個瘋狂安卓的pdf文檔知識點順序,我找的2種視訊的知識點有些還沒有,比較糾結;我是那種有預習上課才有成效的娃,沒有能預習的感覺非常難受)

Activity 基本程式單元

應用程式元件簡介

建立

生命周期

啟動另外個activity

之間的資料傳遞

android應用程式元件簡介:活動元件(Activity),服務元件(Service,基本和Activity一樣,無界面,背景應用),廣播接受者元件(Broadcast receivers),内容提供者(Content Providers,實作不同應用程式之間擷取資料)

Activity基本的建立和配置,可視化互動界面,可繼承ListActivity、MapActivity等,複寫onCreate()方法,需在清單檔案中聲明。

AndroidManifest.xml:配4大元件

<manifest>根元素,屬性*包是R的、xmlns、sharedUserId、*versionCode版本、*versionName名稱、installLocation安裝參數

第二層:Uses-sdk,<application>裡才是activity

第三層Activity,各應用各自有Task任務棧

第四層intent-filter:android:priority優先級、action 、category

第五層service

activity的生命周期:

活動,棧頂,有焦點并可見,

暫停,失去焦點但可見

停止,

銷毀

onCreate第一次啟動時調用,可以進行元件的初始化,onStart,onResume焦點,恢複時也調,onRestart,onPause被其他打斷,onStop,onDestroy銷毀。

啟動另外個Activity:startActivity和startActivityForResult

Intent,将資料封裝到Bundle對象中傳遞

Intent intent=new Intent(ac.this,other.class);

Bundle bundle=new Bundle();

bundle.putSting("a111",資訊);

intent.putExtra(bundle);//或者不需要Bundle,直接intent.putExtra("a111",資訊);

startActivity(intent);

(若在第二界面有事件finish(),則自身銷毀傳回上個界面)

第二界面擷取資料:Intent intent=getIntent();

intent.getStringExtra("a111");

作業:登陸(多使用者,bean) 存款 取款 查詢 推出 ATM機

用Intent傳資料和打開新的Activity,就上面簡單代碼,明天會深入講更多的吧.好吧今天得完成好作業了先

......說好的分析為啥沒寫部落格呢?

嗯,其中一點應該有:入手同學剛買卻不想要的平闆,感興趣的裡面裝了有3款音樂遊戲,下歌并且試玩都搞了估計有一整下午時間,然後現在覺得那個OSU的歌比較不大衆,還準備下點耳熟能詳的(今天一定要作業做好了再弄),前幾天玩OSU稍難的都很苦手呢,是以課間就可以成為戴耳機聽歌提神的替代品了...然後前天發現機子裡已有的彈鋼琴的個應用,玩了下,哇塞,有1000多首歌,經典、流行、兒時、影視、動漫、遊戲、紅歌各種有,經典至貝多芬的,最新至今年4月的新動畫OP紅蓮の弓矢,我擦咧看起來果斷碉堡。。18号彈了一下午昨晚彈了大半夜有木有!

我知道玩久了是不好的事情,但是有個歌,比如很感傷的那種,自己譜出的效果震撼人心啊,那種感覺,雖不能達到人家那麼身臨其境般,也有能讓人在這炎熱酷暑裡找到心中的涼意呢。比如彈的《團子大家族》,因為知道是經典動漫某某的,且看過了的頂尖催淚作,在曲中自然能回憶起當初看時可能流下個感人淚水吧。。。并且鋼琴曲和一般我們聽到的MP3感覺絕對不一樣的!

2013年6月20日 10:58:01

看完第一季就不敢看後面的了...