Time of Update: 2013-12-11
這回要介紹的是Android的Tab控制項,Tab控制項可以達到分頁的效果,讓一個螢幕的內容盡量豐富,當然也會增加開發的複雜程度,在有必要的時候再使用。Android的Tab控制項使用起來有點奇怪,必須包含和按照以下的順序:TabHost控制項->TabWidget(必須命名為tabs)->FrameLayout(必須命名為tabcontent)。接下來貼出本例啟動並執行: main.xml的源碼: view plaincopy to
Time of Update: 2013-12-11
一、前言:大家好,今天給大家分享一下Android中的拿來主義,我們時常會碰到一個自己覺得很漂亮很帥氣的應用(apk),所以我們會嘗試用WinRAR等之類工具查看,而一般的應用程式打包後的目錄通常是這樣的如:當然res裡的圖片是可以拿來就用的(筆者的好多應用的圖片都是從別人的apk裡扣出來的),而諸如layout裡的布局及許可權檔案(AndroidManifest.xml)已經是一堆亂碼了,完全看不懂,想看看別人是怎麼布局的都不容易。還有原始碼都被編譯成了classes.dex,完全
Time of Update: 2013-12-11
#059 #060 get_hardware_name();這段代碼是擷取當前android系統啟動並執行硬體資訊,比如硬體的CPU名稱。主要從/proc/cpuinfo裡讀到相關的資訊。 #061 snprintf(tmp, sizeof(tmp), "/init.%s.rc",
Time of Update: 2013-12-11
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 在init.rc檔案裡第一個初始化的服務是sh服務,如下:## Daemon processes to be run by init. ## service console /system/bin/sh
Time of Update: 2013-12-11
本例對應的例子為DrawPoints.java,介紹如何使用Canvas來繪製點。Canvas 提供3個重載函數來繪製點(單個點或是一組點)public void drawPoint(float x, float y, Paint paint)public void drawPoints(float[] pts, Paint paint)public void drawPoints(float[] pts, int offset, int count, Paint
Time of Update: 2013-12-11
本例著重點是介紹使用SensorManager.SENSOR_ACCELEROMETER 如何來判斷裝置的移動方向:使用Log的方式而非圖形的方式顯示結果,所以運行本例顯示的箭頭始終向上。本例歸在Hardware比較合理。如何使用SENSOR_ACCELEROMETER判斷裝置移動方向的代碼如下:[java] public void onSensorChanged(int sensor, float[] values) { boolean show =
Time of Update: 2013-12-11
首先我們先看一個效果:
Time of Update: 2013-12-11
1、為什麼要用緩衝緩衝是存取資料的臨時地,因為取未經處理資料代價太大了,加了緩衝,可以取得快些。緩衝可以認為是未經處理資料的子集,它是從未經處理資料裡複製出來的,並且為了能被取回,被加上了標誌。在android開發中,經常要訪問網路資料比如大量網狀圖片,如果每次需要同一張圖片都去網路擷取,這代價顯然太大了。可以考慮設定本地檔案快取和記憶體緩衝,儲存從網路取得的資料;本地檔案快取空間並非是無限大的,容量越大讀取效率越低,可設定一個折中緩衝容量比如10M,如果緩衝已滿,我們需要採用合適的替換策略換掉
Time of Update: 2013-12-11
效能提升有兩個編寫有效代碼的基本規則:1:不要做你不需要做的。2:不分配沒必要分配的記憶體。 應該盡量避免建立多餘的對象,比如:1:在一組輸入資料中抽取字串時,嘗試返回來源資料的子串,而非建立一個副本2:如果你有一個返回String的方法,而且你知道它的結果將會一直被追加到StringBuffer,改變你的簽名和實現,在這個函數裡面直接追加,避免建立臨時對象。3:將多維陣列切成與之平行的一維數組4:一個int數組比Integer數組要好,一個公認的事實就是兩個平行的int數組要比一個(
Time of Update: 2013-12-11
貌似到了4.0開始,ui線程就不可以用httpclient執行網路相關的操作,都會報異常,而在2.2和2.3上是不會發生的。所以這段時間遇到很多怪異的問題,在My Phone上可以執行,而在客戶的手機上就不行。特別是一些新三方SDK,你得鑽進去才能發現問題所在。如果代碼嵌得太深而無法再抽得出來用handler的話,那有一個暫時的解決方案,就是所有在ui線程操作網路的代碼都放進一個線程裡執行,然後讓這個線程join到ui線程上,這樣就可以了。下面是代碼: 1Thread thread =
Time of Update: 2013-12-11
BUTTON類結構圖: 由類結構圖,可以看出Button是繼承於TextView的,所以TextView的一些屬性也適用於Button控制項。ImageButton類結構圖: ImageButton就是用一個表徵圖代表了一些文字,它沒Android:text屬性。它由Android:src指定表徵圖的位置android:src="@drawable/back_48"其他屬性都和Button差不多 1、 如何設定按鈕的樣式?
Time of Update: 2013-12-11
雖然大家應該都聽說過那些能幫你開發出完美應用的注意事項,但卻很少有人從負面角度提醒我們避開常見陷阱。作為對自己的警示,同時給大家提供借鑒,本文列出這份五大失誤清單,希望大家能夠在為客戶設計應用程式時加以規避。對於這份清單的含金量我有充分的信心,因為身邊的朋友都對它的積極意義讚賞有加。好啦,閑話少敘,咱們這就進入正題。希望大家能夠抱著平和的心態認真閱讀,並在評論中與其他朋友交換意見。1. 不要以設計網站的思路規劃行動裝置
Time of Update: 2013-12-11
本例介紹了UI組件Chronometer的用法,Chronometer實現了一個簡單的計時器。可以為計時器設定基準時間,Chronometer 的父類為一TextView,顯示時間的格式為”MM:SS” 或”H:MM:SS” ,也允許使用setFormat 設定自訂的時間顯示格式。Chronometer 在Layout 中的定義,可以使用android:format 為計時器指定顯示格式。[html] <Chronometer
Time of Update: 2013-12-11
除了使用DatePickerDialog,TimePickerDialog對話方塊來輸入日期和時間外,Android還提供了兩個View:DatePicker,TimePicker 來擷取日期和時間輸入,它們都是View的子類,因此可以直接放在Layout 中而無需另外啟動對話方塊來輸入時間和日期。修改一下本例的Layout檔案,添加一個DatePicker 和 TextView
Time of Update: 2013-12-11
將系統升級到4.1,發現右下角通知欄裡面的捲軸沒有了。如果裡面欄目少的話,還可以接受,但是現在欄目多了,添加了藍芽,GPS等,以至於上面的title直接頂到介面的最上面去了。這是無法接受的。 原來的4.0是有捲軸的,不確定是4.1裡面去掉了,還是在同步代碼的時候出了問題。總之,要把捲軸加上。 &
Time of Update: 2013-12-11
本例中螢幕的上,下,左,右各顯示一個Button。其Layout定義如下:<Button
Time of Update: 2013-12-11
我們都知道在onCreate()裡面擷取控制項的高度是0,這是為什麼呢?我們來看一下樣本:首先我們自己寫一個控制項,這個控制項非常簡單:[java]public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs)
Time of Update: 2013-12-11
本例使用TranslateAnimation 給一個ListView的清單項目向下逐步展開(Cascade)的動畫效果,各種基本Animation可以參見Android ApiDemos樣本解析(3): App->Activity->Animation。本例使用代碼為ListView添加LayoutAnimation.[java] AnimationSet set = new AnimationSet(true); Animation
Time of Update: 2013-12-11
自訂view的類,代碼如下:[html] package com.xy.tuya; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import
Time of Update: 2013-12-11
ContentProvider 的 delete 可刪除資料,並且該方法返回當前刪除資料的記錄個數。 sdk api 描述 但是,看完下面的內容,你就會發現,情況不是表面上那樣的! 現有資料庫表內容如下 1. 在 android2.1 的模擬器上面 通過下面語句刪除 _id=1 的記錄[java] final int delRows =