1、實現Linux下dc的功能,計算後綴表達式的值html
public int evaluate(String expr) { int op1, op2, result = 0; String token; StringTokenizer tokenizer = new StringTokenizer(expr); while (tokenizer.hasMoreTokens()) { token = tokenizer.nextToken(); //若是是運算符,調用isOperator if (isOperator(token)) { //從棧中彈出操做數2 op2 = (stack.pop()).intValue(); //從棧中彈出操做數1 op1 = (stack.pop()).intValue(); //根據運算符和兩個操做數調用evalSingleOp計算result; result = evalSingleOp(token.charAt(0), op1, op2); //計算result入棧; stack.push(new Integer(result)); } else {//若是是操做數 //操做數入棧; stack.push(new Integer(Integer.parseInt(token))); } } return result; }
2、完成Hello World, 要求修改res目錄中的內容,Hello World後要顯示本身的學號android
3、修改代碼讓MainActivity啓動ThirdActivity框架
@Override public boolean onTouch(View arg0, MotionEvent event) { Intent intent = new Intent(this, ThirdActivity.class); intent.putExtra("message", "Message from First Screen"); startActivity(intent); return true; }
爲了觸碰事件,MainActivity類實現OnTouchListener接口。ide
4、修改代碼讓Toast消息中顯示本身的學號信息佈局
在Android開發中,咱們常常會遇到須要給用戶一個提示,可是又不想影響總體的體驗,那麼Toast出現了。Toast是Android中用來顯示顯示信息的一種機制,和Dialog不同的是,Toast是沒有焦點的,並且Toast顯示的時間有限,過必定的時間就會自動消失。並且Toast主要用於向用戶顯示提示消息。測試
Toast.makeText(Context context, CharSequence text, @Duration int duration)this
- contentx : 當前的上下文環境。可用getApplicationContext()或this
- text : 要顯示的字符串。
- duration : 顯示的時間長短,以毫秒爲單位。Toast默認的有兩個LENGTH_LONG(長)和LENGTH_SHORT(短),也可使用毫秒如2000
顯示的幾種方式lua
一、默認
二、自定義位置
三、帶圖片
四、徹底自定義
徹底自定義頁面翻譯
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" android:layout_below="@id/imageView" />
5、修改佈局讓P290頁的界面與教材不一樣code
LinearLayout 線性佈局
FrameLayout 單幀佈局,也有中文翻譯爲幀佈局、框架佈局。
RelativeLayout 相對佈局
AbsoluteLayout 絕對佈局
TableLayout 表格佈局
每種佈局都有一行重要的代碼來設置:
如 LinearLayout
中的 android:orientation="vertical"
詳細使用方法可參考Android 開發之旅:view的幾種佈局方式及實踐
6、監聽器的使用
Android提供的基於事件監聽接口有OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、OnTouchListener、OnCreateContextMenuListener等。
1)OnClickListener接口:該接口處理的是點擊事件。在觸摸模式下,是在某個View上按下並擡起的組合動做,而在鍵盤模式下,是某個View得到焦點後點擊肯定鍵或者按下軌跡球事件。
2)OnLongClickListener接口: OnLongClickListener接口與上述的OnClickListener接口原理基本相同,只是該接口爲View長按事件的捕捉接口,即當長時間按下某個View時觸發的事件。
3)OnFocusChangeListener接口:OnFocusChangeListener接口用來處理控件焦點發生改變的事件。若是註冊了該接口,當某個控件失去焦點或者得到焦點時都會觸發該接口中的回調方法。
4)OnKeyListener接口:是對手機鍵盤進行監聽的接口,經過對某個View註冊並監聽,當View得到焦點並有鍵盤事件時,便會觸發該接口中的回調方法。
5)OnTouchListener接口:是用來處理手機屏幕事件的監聽接口,當爲View的範圍內觸摸按下、擡起或滑動等動做時都會觸發該事件。
6)OnCreateContextMenuListener接口:是用來處理上下文菜單顯示事件的監聽接口。該方法是定義和註冊上下文菜單的另外一種方式。
public class MainActivity extends Activity { int counter = 0; int[] colors = {Color.BLACK, Color.BLUE, Color.CYAN, Color.DKGRAY, Color.GRAY, Color.GREEN, Color.LTGRAY, Color.MAGENTA, Color.RED, Color.WHITE, Color.YELLOW}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it / // / is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } public void changeColor(View view) { if (counter == colors.length) { counter = 0; } view.setBackgroundColor(colors[counter++]); } }
7、簡易計算器
參考了一個android開發視頻編寫計算器。
switch (opt){ case Types.ADD: items.add(new Item(a+b,Types.NUM)); break; case Types.SUB: items.add(new Item(a-b,Types.NUM)); break; case Types.X: items.add(new Item(a*b,Types.NUM)); break; case Types.DIV: items.add(new Item(a/b,Types.NUM)); break; }
一、測試MyDCTest老是出錯,顯示報錯信息是0 test classes found in package 'exp4'
檢查屢次發現測試類的名稱有錯誤,以前寫的是MyDCTest
,須要改爲MyDCTester
二、報錯「no resource identifier found for attribute 'weight' in package 'android'」
代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...... <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:weight="1" android:text="1"/>
解決方法:在android:weight="1"
處應該改成android:layout_weight="1"
,同時,layout_weight
只適用於LinearLayout
。