該說,下了兩天的雨,這絕對爽死了是吧..今早看來是睡得最惬意最容易讓人懶床的一天呢,課一天休一天,這個肯定會慣壞我們的...
不認真了呢,你看你,好習慣都堅持這麼久了,最近卻要慢慢頹廢不寫部落格了的樣子,,泥煤的,不是按理來說新養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感覺絕對不一樣的!

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