Time of Update: 2018-12-04
以前一直在用BaseAdapter,對於其中的getview方法的重寫一直不太清楚。今天終於得以有空來探究它的詳細機制。下面先講講我遇到的幾個問題:一.View getview(int position, View convertview, ViewGroup parent )中的第二個參數是什麼含義;二.View的SetTag和getTag方法的用途;先來解決第一個問題:android SDK中這樣講參數 convertview :the old view to reuse, if
Time of Update: 2018-12-04
sdk:public void requestLayout ()Since: API Level 1Call this when something has changed which has invalidated the layout of this view. This will schedule a layout pass of the view tree.我們可以理解為重新布局了一下view;用途:有時我們在改變一個view 的內容之後
Time of Update: 2018-12-04
考慮這種情況:class CA{};class CB : public CA{};class CC : public CA{}; 這時我們需要一個CD類,它需要同時繼承CB和CC。問題就出現了。如果我們這樣寫:class CD : public CB, public
Time of Update: 2018-12-04
WinCE下所有的驅動都是以DLL的形式,被device.exe進程載入的,所以每個驅動程式中都要實現DllEntry函數。 在註冊表的HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\鍵下儲存了USB Host的驅動程式資訊。當我們第一次插入USB裝置時。因為不存在這樣的資訊,所以系統會彈出一個“未能識別的USB裝置”的對話方塊,要求使用者輸入驅動程式的名稱。該名稱就是USB
Time of Update: 2018-12-04
post pre set 其實代表了Matrix 中方法變換的次序,pre是向前排入佇列執行,post從後面排入佇列執行。舉一些例子: matrix.preScale(2f,1f); matrix.preTranslate(5f, 0f); matrix.postScale(0.2f, 1f); matrix.postTranslate(0.5f, 0f);方法執行的順序為:translate(5, 0) -> scale(2f, 1f) -> scale(0.2f, 1f)
Time of Update: 2018-12-04
作者:ARM-WinCE 在WinCE中開發BSP的初期,可能我們還沒有顯示驅動,也沒有鍵盤,滑鼠,USB的驅動。這個時候,如果有一個基於Serial串口的console 會感到很幸福,呵呵。將console重新導向到串口比較簡單,首先串口驅動必須是好的。然後需要在platform.reg中添加下面的配置:[HKEY_LOCAL_MACHINE/Drivers/Console] "OutputTo"=dword:1"COMSpeed"=dword:9600 ;
Time of Update: 2018-12-04
定義一個類。 class CA{public:void FunA(){};}; 通過指標調用FunA。CA* pa = new CA;pa->FunA(); 此時,轉入彙編,我們看看pa->FunA()到底是怎麼做的。pa->FunA();// 彙編展開如下:004113E7 mov ecx,dword ptr [pa] // 函數調用。004113EA call CA::FunA (411005h) //
Time of Update: 2018-12-04
WebSetting常用方法setAllowFileAccess啟用或禁用WebView訪問檔案資料setBlockNetworkImage是否顯示網狀圖像setBuiltInZoomControls設定是否支援縮放
Time of Update: 2018-12-04
該函數是USB驅動中,監視hub狀態改變的線程函數。Root hub的監視線程在OTG_Init函數被調用時建立。External Hub的監視線程在External Hub插入到Root Hub時被建立。線上程剛啟動的時候(線上程迴圈體之外),需要進行一些操作。 // before we can process port changes, we need // to power all ports // 函數PowerAllHubPorts在CRootHub類中的實現為空白。 //
Time of Update: 2018-12-04
做項目過程中發現使用DWR方式調用遠程方法,有時會莫名的彈出alert框,內容為“error”。是有可能返回空值或者直接錯誤,必須做出相應的異常處理:Remote.method(params,function(data){ //服務端執行後用戶端的邏輯,如 alert("服務端執行後返回的資料:"+data); }); Remote->處理類,method->類中方法,params->method方法中參數,function->回調方法,data-&
Time of Update: 2018-12-04
MERGE語句是Oracle9i新增的文法,用來合并UPDATE和INSERT語句。是oracle特有的功能,相當於在 MSSQL中的if exists(...) update tableelse Insert into table.merge into 文法根據一張表或子查詢的串連條件對另外一張表進行查詢,串連條件匹配上的進行UPDATE,無法匹配的執行INSERT。這個文法僅需要一次全表掃描就完成了全部工作,不僅沒有if exists文法囉嗦,而且執行效率比if
Time of Update: 2018-12-04
這個東西在一些需要用到Adapter自定控制項顯示方式的時候非常有用Adapter 有個getView方法,可以使用setTag把尋找的view緩衝起來方便多次重用public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; if (convertView == null) { LayoutInflater inflater =
Time of Update: 2018-12-04
敏捷開發的目的: 保證產品品質,保證團隊的抗風險能力。 敏捷開發在項目前期可能會導致開發效率降低,因為畢竟兩個人開發,沒有接觸過pair編程,一個人敲鍵盤,另一個人在旁邊嘀咕,到底聽誰的?這需要一個磨合過程。不過在項目後期,大家都熟悉這種開發模式之後,就能夠保證效率了。 敏捷關鍵詞: 1、TDD:Test Driver
Time of Update: 2018-12-04
說到軟解析(soft prase)和硬解析(hard prase),就不能不說一下Oracle對sql的處理過程。當你發出一條sql語句交付Oracle,在執行和擷取結果前,Oracle對此sql將進行幾個步驟的處理過程: 1、語法檢查(syntax check) 檢查此sql的拼字是否符合文法。 2、語義檢查(semantic
Time of Update: 2018-12-04
ARM 微處理器可支援多達 16 個副處理器,用於各種協處理操作,在程式執行的過程中,每個副處理器只執行針對自身的協處理指示,忽略 ARM 處理器和其他副處理器的指令。ARM 的副處理器指令主要用於 ARM 處理器初始化 ARM 副處理器的資料處理操作,以及在ARM 處理器的寄存器和副處理器的寄存器之間傳送資料,和在 ARM 副處理器的寄存器和儲存空間之間傳送資料。 ARM 副處理器指令包括以下 5 條:— CDP 副處理器數操作指令— LDC 副處理器資料載入指令— STC
Time of Update: 2018-12-04
因為公司需要在linux下編程,偶這個長期被windows寵壞了到自詡為程式員到小可居然被makefile難倒來。網上有諸多到makefile教程,這裡就不一一細說來。具體到東東問問百度和google。 下面展示一個簡單到sample.mk檔案。作為makefile到入門之作。 test.mk #ifndef VER VER := all#endifclear: @if [ $(VER) = "debug" ]; then / rm -rf debug.out ;/
Time of Update: 2018-12-04
題目來源於《編程之美》這本書。本文為讀書筆記。 題目看起來比較簡單,可是編程之美卻將這道題的解法描述道極致。對於一個32位整數N,求其二進位表示中的1的總數。 思路:對於任一個位元,必有形式abcd1000……,abcd為1或者0,我們姑且認為最後面有四個0.我們這樣考慮這個數:abcd1000,我們首先去掉最後一個1,讓該數字與比該數字小於1的那個整數與操作。(abcd1000)&(abcd1000-1)=(abcd1000)&(abcd0111)=abcd0000 如此一來我
Time of Update: 2018-12-04
近期有一個項目有聯絡到重寫View的,並且對View的觸摸事件的控制有很高的要求,以前對onTouchEvent()方法還是有一點瞭解的,但是對一個View樹之中的傳遞機制不是很瞭解。今天就來寫個test程式來探究一下。首先來概述一下onTouchEvent()這個方法的作用SDK這樣介紹:public boolean onTouchEvent (MotionEvent event)Since: API Level 1Implement this method to handle touch
Time of Update: 2018-12-04
const char* p1 = "abc"; std::string str1 = "abc"; const char* p2 = str1.c_str(); if (str1.c_str() == p1) { return 1; } if (p2 == p1) { return 2; } if (str1 == p1) { return 3; } return
Time of Update: 2018-12-04
一. 首先 NetworkInfo 是由下面的代碼得出的ConnectivityManager connectivity = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo ni =