2011年5月27日 星期五

2011/05/27 Android tutorial and change ed1 color


===================================================================



/*
 * ed1 = 匯率
 * ed2 = 台幣
 * 計算公式: 美金 = 台幣/匯率  => ed2/ed1
 * 
 * 學習重點:
 * 0) context.findViewById 即 EX203.this (ClassName.this)
 * 1) setOn XXX Listener(),建立按鈕事件處理
 * 2) new Widget.OnClickListener(){} (口訣:小括號 大括號,最末小括號後分號)
 * 3) 滑鼠游標移置紅色文字線上 Add unimplemented methods
 * 4) 數學換算,與資料型別轉換 in Java
 * 5) 覆寫 Activity 的 onPause() 或 onStop(),將 匯率 儲存下來 (SharePreference物件)
 * 6) 覆寫 Activity 的 onResume(),將  匯率 讀取出來 (SharePreference物件)
*/
package irdc.ex203;

import java.text.NumberFormat;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class EX203 extends Activity
{
  private EditText ed1, ed2;
  private Button btn1;
  private TextView tv1;
  public static final String MY_PREFS = "mSharedPreferences01";
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    ed1 = (EditText)EX203.this.findViewById(R.id.editText1);  // 匯率
    ed2 = (EditText)EX203.this.findViewById(R.id.editText2);  // 台幣
    btn1 = (Button)EX203.this.findViewById(R.id.button1);
    tv1 = (TextView)EX203.this.findViewById(R.id.textView3);
    
    ed1.setText("33.5");
    ed2.setText("10000");
    
    btn1.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // 按鈕事件,處理數學換算的語法
        NumberFormat nf = NumberFormat.getInstance();
        nf.setMaximumFractionDigits( 2 );
        
        double d = Double.parseDouble(ed2.getText().toString()) / Double.parseDouble(ed1.getText().toString());
        
        tv1.setText( EX203.this.getResources().getString(R.string.str3) + ":" + nf.format(d) );
        
      }
    });
    
  }/*End: onCreate()*/

  @Override
  protected void onResume()
  {
    // TODO Auto-generated method stub
    
    SharedPreferences mySharedPreferences = getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE);
    // 第二個參數為 假若 "rate" 不存在,程式為第一次執行的話,要以什麼值取代
    String previousInputRate = mySharedPreferences.getString("rate", "");
    ed1.setText(previousInputRate);
    super.onResume();
  }

  @Override
  protected void onStop()
  {
    // TODO Auto-generated method stub
    SharedPreferences mySharedPreferences = getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE);
    SharedPreferences.Editor ed = mySharedPreferences.edit();
    ed.putString("rate", ed1.getText().toString() );
    ed.commit();
    
    super.onStop();
  }
  }

===================================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="hello">Hello World, EX203!</string>
  <string name="app_name">EX203</string>
  
  <string name="str1">匯率換算</string>
  <string name="str2">匯率</string>
  <string name="str3">臺幣</string>
  
  <string name="str_btn1">可兌換美金</string>
</resources>


===================================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/str1">
    </TextView>
    
    <EditText
      android:id="@+id/editText1"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"
      android:text="EditText" >
    </EditText>
    
    <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/str2">
    </TextView>
    
    <EditText
      android:id="@+id/editText2"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"
      android:text="EditText" >
    </EditText>
    
    <Button
      android:id="@+id/button1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/str_btn1">
    </Button>
    
    <TextView
      android:id="@+id/textView3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/str3" >
    </TextView>
</LinearLayout>
===================================================================

===================================================================
package edu.fcu.sean;
import java.text.NumberFormat;
import android.app.Activity;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Change extends Activity {

  private EditText ed1, ed2;
  private Button btn1;
  private TextView tv1;
 protected ColorStateList color;
  public static final String MY_PREFS = "mSharedPreferences01";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ed1 = (EditText)Change.this.findViewById(R.id.editText1);  // 匯率
        ed2 = (EditText)Change.this.findViewById(R.id.editText2);  // 台幣
        btn1 = (Button)Change.this.findViewById(R.id.button1);
        tv1 = (TextView)Change.this.findViewById(R.id.textView3);
        ed1.setText("33.5");
        ed2.setText("10000");
       
        btn1.setOnClickListener(new Button.OnClickListener()
        {
       
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    ed1.setTextColor(Color.RED);
   }

   


        });
       
       
    }/*End: onCreate()*/
   

}

===================================================================

2011年5月5日 星期四

2011/05/06 ImageJ Turtorial & extends JFrame

ImageJ Turtorial


download ip-demo2
http://rsb.info.nih.gov/ij/download/examples/

===================================================================
extends JFrame 把時間加入文字方塊內




import javax.swing.Timer;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class TimerDemo extends JFrame implements ActionListener {
   static JTextField tbx1=new JTextField(10);


   Timer t = new Timer(1000,this);


  TimerDemo() {
    t.start();
    }


  public static void main(String args[]) {
    TimerDemo td = new TimerDemo();
    GridLayout grid33= new GridLayout(3,3);
    JPanel p1 = new JPanel(grid33); //實作  panel 1
    td.setLayout(grid33);
    td.setSize(450,450);
    td.add(p1); // 在視窗myfrm 內加入 panel 1
    p1.add(tbx1); // 在 panel 1內加入文字方塊    
    td.setVisible(true);
    // create a dummy frame to keep the JVM running
    //  (for demonstation purpose)
    //java.awt.Frame dummy = new java.awt.Frame();
    //dummy.setVisible(true);
    }







  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == t) 
    {
      //System.out.println 
        //("Being ticked " + Calendar.getInstance().getTime());
    tbx1.setText("Being ticked " + Calendar.getInstance().getTime());


    }




  }
}
===================================================================


















===================================================================

Use google protocol buffers + QT +CMAKE

Protocol Buffers https://developers.google.com/protocol-buffers/ Serialize and ParseFrom https://www.jianshu....