跳到主要內容

發表文章

目前顯示的是 十二月, 2011的文章

Canvas與drawable的使用-彈跳小球

這程式是練習drawable與canvas的應用
會需要用到timer與random seed.
小球碰到螢幕邊緣會自動彈跳.

Handler, Message 與 thread的練習

今天完成了Handler, Message,與thread的應用,研究其運作原理.
android還真是深奧,這項機制可說是很重要的技術.
• android 的 GUI 元件是 thread safe的 (GUI元件的使用,無法multi-thread執行)
•Activity 的畫面顯示是由 UI Thread所負責的,若寫了 mutlti-thread 程式時
又想更新畫面,就必須要將 Thread 內部的一段程式碼,交由 UI Thread 來執行才行。
此時handler就派上用場了.
之前去春水堂面試時他有考這題,但是我當時還寫不出來.
現在搞懂了.


OpenGL ES API~ 一個最簡單的 GLSurfaceView 彩色立方體example

相對於windows的directX, Android 的3d是使用opengl es來對高性能3D圖形的support
OpenGL ES是一套為手持和嵌入式系統設計的3D引擎API
Android支持OpenGL ES1.0,即相當於OpenGL 1.3

OpenGL有自己的Surface --> GLSurfaceView
GLSurfaceView需要你註冊一個Renderder,它是GLSurfaceView.Renderer接口

在Android Sample Code > graphics - API Demos有範例程式
匯入 4個檔案:
GLSurfaceViewActivity.java
Cube.java
CubeRenderer.java
layout下的hello_world.xml
再修改AndroidManifest.xml
就可以run起來了,但run起來是簡單,要研究裡面的原理跟 api用法就是之後複雜的功夫了.


ANR (Application Not Responding) issue

ANR問題是每一個Android 工程師都會遇到的.
要解決的方法很多,但AsyncTask是最佳的方法.
如下圖,activity 1要轉換到activity2,如果中間有 loading很大量的資料,就會發生ANR問題.

public class DrawActivity extends Activity{ //implements OnClickListener {     /** Called when the activity is first created. */

    private ImageView img1;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Toast toast=Toast.makeText(DrawActivity.this, "Welcome to 小米app...", Toast.LENGTH_LONG);
        toast.show();

        new Loading().execute();

    }



    private class Loading extends AsyncTask<Void,Void,Void>
    {
        @Override
        protected Void doInBackground(Void... arg0)
        {

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Intent intent=new Intent();
 …

andorid 動畫RotateAnimation的使用...

android textview中文亂碼變框框 問題

Eclipse對中文字還是不友善,仍會變框框.
如果直接寫:

<TextView

android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="你做不了決定嗎"
android:textSize="32sp" />
改成不要在text裡面直接賦值,把text的值放到string裡面,那麼在layout裡
面配置則是: android:text="@string/text1",然後在你的res/values/strings.xml裡面添加一條string: <string name="text"> 中文字 </string>
但在eclipse中還是框框,
但執行後就正常了......
目前只能說先忽略框框....

EPSON 5900L + Windows 7 x64 driver安裝方法

epson 5900L...十年前的老機器了
但是怎麼用都用不壞,非常耐操,
然後網路上有賣填充碳粉250元可印6000張
經濟又大碗....
在XP, WIN7 32bit下使用,有驅動程式可用,
但如果是Windows 7 x64就沒辦法
(現在記憶體便宜,很多電腦都是8GB, 16GB DRAM,只有64 bit OS可支援這麼多的Memory)
官網有說5900L 不支援Win7 x64, vista x64,
於是我們總不能因為沒driver就把5900L丟了吧?
網路上找都說沒有辦法的
但我有發現其實要解決的方法其實很簡單...
準備工具:

1. VMware workstation+ 安裝好xp x86 的image.(可請人幫忙製作), 大約花8G 空間的XP IMAGE.
2.在Vmware下的XP 安裝 epson 5900L XP Driver.
3.之後只要使用vmware player就可以了,vmware會幫忙把印表機抓到guest xp內.把文件拖曳到xp桌面下就可印了.....很方便.