今天在實作在 sdcard裡面建立一個檔案!
其實這沒什麼難度!
File file = new File("/sdcard/tmp/tmp.db");
file.createNewFile();
這樣乍看之下是沒甚麼問題
但如果沒有tmp此目錄的話!
則會出現exception
當然! 要建立一個目錄也很簡單!!只要用mkdir即可!
file.mkdir();
但是!
必須加入一個權限才可以建立目錄!
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
但是建立檔案就不用了!
在實做widget的時候,
要在前景把圖片換掉
發現只有
setImageViewBitmap
setImageViewResource
setImageViewUri
這三個method可以用
但是我的圖片是從sqllite中抓出來的!
只能先存成drawable!!
ByteArrayInputStream stream = new ByteArrayInputStream( cursor.getBlob(1));
Drawable p_pic = Drawable.createFromStream(stream, "p_pic");
//fnCastToBitmap是等等自己撰寫的function..
Bitmap bitmapTmp = fnCastToBitmap(p_pic);
但是這樣的drawable根本沒有id,無法使用setImageViewResource來抓圖!
所以只好把它轉成bitmap..
如下段CODE:
public Bitmap fnCastToBitmap(Drawable drawable){
//先設定一個config給等等要產生的bitmap,先判斷他的透明度,在判斷他的格式
Bitmap.Config config =
drawable.getOpacity() != PixelFormat.OPAQUE
? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
//產生一個bitmap...寬跟高如原來圖的一樣
Bitmap bitmap = Bitmap.createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), config );
//在建立一個canvas,並把圖畫在上面去即可!!!
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}
今天來介紹一下Android tab activity好了!
其實最近實作了不少東西,但一直沒有時間記錄下來
Tab Actity倒是蠻久之前的,拿出來溫習一下吧!
先新增一個class吧!
但要繼承的是TabActivity!
如果要做到Tab變換時,會有所動作時,
要記得implements OnTabChangeListener
如下:
public class main extends TabActivity implements OnTabChangeListener {
}
接著就來部屬Tab的長相了!
這邊先預設兩個Tab(tab1、tab2),其實tab裡的東西可以重複使用,這裡只是為了清楚定義
而宣告兩個!
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
androidrientation="vertical"
android:background="#ffffff"
>
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
androidrientation="vertical"
android:background="#ff0000"
>
</LinearLayout>
</FrameLayout>
接著來撰寫主要的CODE了!
public class main extends TabActivity implements OnTabChangeListener {
private TabHost tabHost; //宣告一個TabHost,主機的意思。所有的TAB都要被加在裡面
private TabSpec tab1, tab2; //先宣告兩個tab
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tabHost = this.getTabHost(); //先取得TabHost
//利用Inflater來渲染版變
LayoutInflater.from(this).inflate(R.layout.main,tabHost.getTabContentView(), true);
//接著就利用newTabSpec新增一個TAB,setIndicator是設定TITLE和背景圖,setContent是設定這個TAB裡面的樣式
tab1 = tabHost.newTabSpec("Id1")
.setIndicator("Tab1",this.getResources().getDrawable(R.drawable.icon2))
.setContent(R.id.tab1);
//加入至tabHost
tabHost.addTab(tab1);
tab2 = tabHost.newTabSpec("Id2")
.setIndicator("Tab2",this.getResources().getDrawable(R.drawable.icon))
.setContent(R.id.tab2);
tabHost.addTab(tab2);
tabHost.setOnTabChangedListener(this);
}
@Override
public void onTabChanged(String tabId) {
new AlertDialog.Builder(this).setTitle("Hint").setMessage(tabId)
.setPositiveButton("OK", null).show();
}
}
基本上這樣就大功告成了!