當前位置:首頁 » 安卓系統 » lineforandroid

lineforandroid

發布時間: 2022-11-29 19:31:14

A. android面試題及答案

android面試題及答案

本文是我精心整理的android面試題及答案,歡迎大家參考。

1. 下列哪些語句關於內存回收的說明是正確的? (b ) A、 程序員必須創建一個線程來釋放內存

B、 內存回收程序負責釋放無用內存

C、 內存回收程序允許程序員直接釋放內存

D、 內存回收程序可以在指定的時間釋放內存對象

2. 下面異常是屬於Runtime Exception 的是(abcd)(多選) A、ArithmeticException

B、IllegalArgumentException

C、NullPointerException

D、BufferUnderflowException

3. Math.round(11.5)等於多少(). Math.round(-11.5)等於多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12

4. 下列程序段的輸出結果是:(b )

void complicatedexpression_r(){

int x=20, y=30;

boolean b;

b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;

System.out.println(b);

}

A、true B、false C、1 D、011.activity

5. 對一些資源以及狀態的操作保存,最好是保存在生命周期的哪個函數中進行(d) A、onPause() B、onCreate() C、 onResume() D、onStart()

6. Intent傳遞數據時,下列的數據類型哪些可以被傳遞(abcd)(多選) A、Serializable B、charsequence C、Parcelable D、Bundle

7. android 中下列屬於Intent的作用的是(c) A、實現應用程序間的數據共享

B、是一段長的生命周期,沒有用戶界面的程序,可以保持應用在後台運行,而不會因為切換頁面而消失

C、可以實現界面間的切換,可以包含動作和動作數據,連接四大組件的紐帶

D、處理一個應用程序整體性的工作

8. 下列屬於SAX解析xml文件的優點的是(b) A、將整個文檔樹在內存中,便於操作,支持刪除,修改,重新排列等多種功能

B、不用事先調入整個文檔,佔用資源少

C、整個文檔調入內存,浪費時間和空間

D、不是長久駐留在內存,數據不是持久的,事件過後,若沒有保存數據,數據就會

消失

9. 下面的對自定style的方式正確的是

A、

B、

C、

fill_parent

D、

fill_parent

10. 在android中使用Menu時可能需要重寫的方法有(ac)。(多選) A、onCreateOptionsMenu()

B、onCreateMenu()

C、onOptionsItemSelected()

D、onItemSelected()

11. 在sql Server Management Studio 中運行下列T-SQL語句,其輸出值(c)。 SELECT @@IDENTITY

A、 可能為0.1

B、 可能為3

C、 不可能為-100

D、 肯定為0

12. 在SQL Server 2005中運行如下T-SQL語句,假定SALES表中有多行數據,執行查詢之 後的結果是(d)。 BEGIN TRANSACTION A

Update SALES Set qty=30 WHERE qty<30

BEGIN TRANSACTION B

Update SALES Set qty=40 WHEREqty<40

Update SALES Set qty=50 WHEREqty<50

Update SALES Set qty=60 WHEREqty<60

COMMITTRANSACTION B

COMMIT TRANSACTION A

A、SALES表中qty列最小值大於等於30

B、SALES表中qty列最小值大於等於40

C、SALES表中qty列的數據全部為50

D、SALES表中qty列最小值大於等於60

13. 在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個資料庫,並可以對資料庫版本進行管理的方法可以是(ab) A、getWriteableDatabase()

B、getReadableDatabase()

C、getDatabase()

D、getAbleDatabase()

14. android 關於service生命周期的onCreate()和onStart()說法正確的是(ad)(多選題) A、當第一次啟動的時候先後調用onCreate()和onStart()方法

B、當第一次啟動的時候只會調用onCreate()方法

C、如果service已經啟動,將先後調用onCreate()和onStart()方法

D、如果service已經啟動,只會執行onStart()方法,不在執行onCreate()方法

15. 下面是屬於GLSurFaceView特性的是(abc)(多選) A、管理一個surface,這個surface就是一塊特殊的內存,能直接排版到android的視圖

view上。

B、管理一個EGL display,它能讓opengl把內容渲染到上述的surface上。

C、讓渲染器在獨立的線程里運作,和UI線程分離。

D、可以直接從內存或者DMA等硬體介面取得圖像數據

16. 下面在AndroidManifest.xml文件中注冊BroadcastReceiver方式正確的

A、

android:name="android.provider.action.NewBroad"/>

B、

android:name="android.provider.action.NewBroad"/>

C、

android:name="android.provider.action.NewBroad"/>

D、

android:name="android.provider.action.NewBroad"/>

17. 關於ContenValues類說法正確的是(a) A、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

名是String類型,而值都是基本類型

B、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

名是任意類型,而值都是基本類型

C、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中的

名,可以為空,而值都是String類型

D、他和Hashtable比較類似,也是負責存儲一些名值對,但是他存儲的名值對當中

的名是String類型,而值也是String類型

18. 我們都知道Hanlder是線程與Activity通信的橋梁,如果線程處理不當,你的機器就會變得越慢,那麼線程銷毀的方法是(a) A、onDestroy()

B、onClear()

C、onFinish()

D、onStop()

19. 下面退出Activity錯誤的方法是(c) A、finish()

B、拋異常強制退出

C、System.exit()

D、onStop()

20. 下面屬於android的動畫分類的有(ab)(多項) A、Tween B、Frame C、Draw D、Animation

21. 下面關於Android dvm的進程和Linux的進程,應用程序的進程說法正確的是(d) A、DVM指dalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,不一定擁有一個獨立的Dalvik虛擬機實例.而每一個DVM都是在Linux中的一個進程,所以說可以認為是同一個概念.

B、DVM指dalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,不一定擁有一個獨立的Dalvik虛擬機實例.而每一個DVM不一定都是在Linux中的一個進程,所以說不是一個概念.

C、DVM指dalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例.而每一個DVM不一定都是在Linux中的一個進程,所以說不是一個概念.

D、DVM指dalivk的虛擬機.每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的 Dalvik虛擬機實例.而每一個DVM都是在Linux中的一個進程,所以說可以認為是同一個概念.

22. Android項目工程下面的assets目錄的作用是什麼bA、放置應用到的圖片資源。

B、主要放置多媒體等數據文件

C、放置字元串,顏色,數組等常量數據

D、放置一些與UI相應的布局文件,都是xml文件

23. 關於res/raw目錄說法正確的是(a)A、 這里的文件是原封不動的存儲到設備上不會轉換為二進制的格式

B、這里的'文件是原封不動的存儲到設備上會轉換為二進制的格式

C、 這里的文件最終以二進制的格式存儲到指定的包中

D、這里的文件最終不會以二進制的格式存儲到指定的包中

24. 下列對android NDK的理解正確的是(abcd )A、 NDK是一系列工具的集合

B、 NDK 提供了一份穩定、功能有限的 API 頭文件聲明。

C、 使 「java+C」 的開發方式終於轉正,成為官方支持的開發方式

D、 NDK 將是 Android 平台支持 C 開發的開端

二.文件存儲方式

三.SQLite資料庫方式

四.內容提供器(Content provider)方式

二、Android面試填空題

25. android中常用的四個布局是framlayout,linenarlayout,relativelayout和tablelayout。26. android 的四大組件是activiey,service,broadcast和contentprovide。27. java.io包中的objectinputstream和objectoutputstream類主要用於對對象(Object)的讀寫。28. android 中service的實現方法是:startservice和bindservice。29. activity一般會重載7個方法用來維護其生命周期,除了onCreate(),onStart(),onDestory() 外還有onrestart,onresume,onpause,onstop。30. android的數據存儲的方式sharedpreference,文件,SQlite,contentprovider,網路。31. 當啟動一個Activity並且新的Activity執行完後需要返回到啟動它的Activity來執行 的回調函數是startActivityResult()。32. 請使用命令行的方式創建一個名字為myAvd,sdk版本為2.2,sd卡是在d盤的根目錄下,名字為scard.img, 並指定屏幕大小HVGA.____________________________________。33. 程序運行的結果是:_____good and gbc__________。 public classExample{

String str=new String("good");

char[]ch={'a','b','c'};

public static void main(String args[]){

Example ex=new Example();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+" and ");

Sytem.out.print(ex.ch);

}

public void change(String str,char ch[]){

str="test ok";

ch[0]='g';

}

}

34. 在android中,請簡述jni的調用過程。(8分)1)安裝和下載Cygwin,下載 Android NDK

2)在ndk項目中JNI介面的設計

3)使用C/C++實現本地方法

4)JNI生成動態鏈接庫.so文件

5)將動態鏈接庫復制到java工程,在java工程中調用,運行java工程即可

35. 簡述Android應用程序結構是哪些?(7分)Android應用程序結構是:

Linux Kernel(Linux內核)、Libraries(系統運行庫或者是c/c++核心庫)、Application

Framework(開發框架包)、Applications (核心應用程序)

36. 請繼承SQLiteOpenHelper實現:(10分) 1).創建一個版本為1的「diaryOpenHelper.db」的資料庫,

2).同時創建一個 「diary」 表(包含一個_id主鍵並自增長,topic字元型100

長度, content字元型1000長度)

3).在資料庫版本變化時請刪除diary表,並重新創建出diary表。

publicclass DBHelper extends SQLiteOpenHelper{

public final static String DATABASENAME ="diaryOpenHelper.db";

public final static int DATABASEVERSION =1;

//創建資料庫

public DBHelper(Context context,Stringname,CursorFactory factory,int version)

{

super(context, name, factory,version);

}

//創建表等機構性文件

public void onCreate(SQLiteDatabase db)

{

String sql ="create tablediary"+

"("+

"_idinteger primary key autoincrement,"+

"topicvar100),"+

"contentvar1000)"+

")";

db.execSQL(sql);

}

//若資料庫版本有更新,則調用此方法

public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)

{

String sql = " ifexists diary";

db.execSQL(sql);

this.onCreate(db);

}

}

37. 頁面上現有ProgressBar控制項progressBar,請用書寫線程以10秒的的時間完成其進度顯示工作。(10分)答案

publicclass ProgressBarStu extends Activity {

private ProgressBar progressBar = null;

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.progressbar);

//從這到下是關鍵

progressBar = (ProgressBar)findViewById(R.id.progressBar);

Thread thread = new Thread(newRunnable() {

@Override

public void run() {

int progressBarMax =progressBar.getMax();

try {

while(progressBarMax!=progressBar.getProgress())

{

intstepProgress = progressBarMax/10;

intcurrentprogress = progressBar.getProgress();

progressBar.setProgress(currentprogress+stepProgress);

Thread.sleep(1000);

}

} catch(InterruptedException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

}

});

thread.start();

//關鍵結束

}

}

38. 請描述下Activity的生命周期。 必調用的三個方法:onCreate() --> onStart() --> onResume(),用AAA表示

(1)父Activity啟動子Activity,子Actvity退出,父Activity調用順序如下

AAA --> onFreeze() --> onPause() --> onStop() --> onRestart()--> onStart(),onResume() …

(2)用戶點擊Home,Actvity調用順序如下

AAA --> onFreeze() --> onPause() --> onStop() -- Maybe -->onDestroy() – Maybe

(3)調用finish(), Activity調用順序如下

AAA --> onPause() --> onStop() --> onDestroy()

(4)在Activity上顯示dialog,Activity調用順序如下

AAA

(5)在父Activity上顯示透明的或非全屏的activity,Activity調用順序如下

AAA --> onFreeze() --> onPause()

(6)設備進入睡眠狀態,Activity調用順序如下

AAA --> onFreeze() --> onPause()

39. 如果後台的Activity由於某原因被系統回收了,如何在被系統回收之前保存當前狀態? onSaveInstanceState()

當你的程序中某一個Activity A在運行時,主動或被動地運行另一個新的Activity B,這個時候A會執行onSaveInstanceState()。B完成以後又會來找A,這個時候就有兩種情況:一是A被回收,二是A沒有被回收,被回收的A就要重新調用onCreate()方法,不同於直接啟動的是這回onCreate()里是帶上了參數savedInstanceState;而沒被收回的就直接執行onResume(),跳過onCreate()了。

40. 如何將一個Activity設置成窗口的樣式。 在AndroidManifest.xml 中定義Activity的地方一句話android:theme="@android:style/Theme.Dialog"或android:theme="@android:style/Theme.Translucent"就變成半透明的

41. 如何退出Activity?如何安全退出已調用多個Activity的Application?對於單一Activity的應用來說,退出很簡單,直接finish()即可。

當然,也可以用killProcess()和System.exit()這樣的方法。

但是,對於多Activity的應用來說,在打開多個Activity後,如果想在最後打開的Activity直接退出,上邊的方法都是沒有用的,因為上邊的方法都是結束一個Activity而已。

當然,網上也有人說可以。

就好像有人問,在應用里如何捕獲Home鍵,有人就會說用keyCode比較KEYCODE_HOME即可,而事實上如果不修改framework,根本不可能做到這一點一樣。

所以,最好還是自己親自試一下。

那麼,有沒有辦法直接退出整個應用呢?

在2.1之前,可以使用ActivityManager的restartPackage方法。

它可以直接結束整個應用。在使用時需要許可權android.permission.RESTART_PACKAGES。

注意不要被它的名字迷惑。

可是,在2.2,這個方法失效了。

在2.2添加了一個新的方法,killBackgroundProcesses(),需要許可權android.permission.KILL_BACKGROUND_PROCESSES。

可惜的是,它和2.2的restartPackage一樣,根本起不到應有的效果。

另外還有一個方法,就是系統自帶的應用程序管理里,強制結束程序的方法,forceStopPackage()。

它需要許可權android.permission.FORCE_STOP_PACKAGES。

並且需要添加android:sharedUserId="android.uid.system"屬性

同樣可惜的是,該方法是非公開的,他只能運行在系統進程,第三方程序無法調用。

因為需要在Android.mk中添加LOCAL_CERTIFICATE := platform。

而Android.mk是用於在Android源碼編譯程序用的。

從以上可以看出,在2.2,沒有辦法直接結束一個應用,而只能用自己的辦法間接辦到。

現提供幾個方法,供參考:

1、拋異常強制退出:

該方法通過拋異常,使程序ForceClose。

驗證可以,但是,需要解決的問題是,如何使程序結束掉,而不彈出Force Close的窗口。

2、記錄打開的Activity:

每打開一個Activity,就記錄下來。在需要退出時,關閉每一個Activity即可。

3、發送特定廣播:

在需要結束應用時,發送一個特定的廣播,每個Activity收到廣播後,關閉即可。

4、遞歸退出

在打開新的Activity時使用startActivityForResult,然後自己加標志,在onActivityResult中處理,遞歸關閉。

除了第一個,都是想辦法把每一個Activity都結束掉,間接達到目的。

但是這樣做同樣不完美。

你會發現,如果自己的應用程序對每一個Activity都設置了nosensor,在兩個Activity結束的間隙,sensor可能有效了。

但至少,我們的目的達到了,而且沒有影響用戶使用。

為了編程方便,最好定義一個Activity基類,處理這些共通問題。

42. 請介紹下Android中常用的五種布局。FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)


;

B. 如何從UA分辨出Android設備類型

最大不超過40uA 且三項相差不超過10uA 沒有最小!

C. 如何用android顯示實時曲線求方法,代碼

1. 網格背景,心電圖的原理比較簡單,首先繪制一個背景,就是網格就以Windows下的任務管理器來說吧,下面綠色的網格是固定的,如果你比較懶或者考慮繪制效率你甚至可以直接使用一個背景圖片代替,當然代碼繪制效率沒有什麼問題,直接使用Canvas的drawLine方法即可。由兩個for循環控制著橫縱坐標,當然Android123推薦大家使用drawLines參數直接是一個數組。
2. K線圖,對於真正的曲線或者說K線圖,其實就是描點畫圖了,在Android中我們自繪控制項中重寫onDraw方法,onDraw的形參Canvas提供了drawPoint(float x,float y,Point point) 。這三個參數前兩個正好對應橫豎坐標,第三個參數為Point對象,可以控制畫筆的顏色、粗細和類型。如果是動態的,你需要使用一個計時器,最簡單的使用Handler的postDelay方法,使用一個數組動態保存著每個點即可。

D. android中數據的折線圖怎麼實現

推薦你幾個相關開源項目,可以根據需要自己選擇,自己畫還是比較麻煩的:MPAndroidChart強大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環圖、范圍(高至低)條形圖、網狀圖及各種圖的結合;支持圖的拖拽縮放;支持Android2.2以上,支持橫縱軸縮放,多指縮放,展現動畫、高亮、保存到sdcard、從文件讀取圖表achartengine強大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環圖、范圍(高至低)條形圖、撥號圖/表、立方線圖及各種圖的結合GraphView繪制圖表和曲線圖的View,可用於Android上的曲形圖、柱狀圖、波浪圖展示HoloGraphLibrary繪制線狀圖、柱狀圖、餅狀圖XCL-ChartsXCL-Charts基於原生的Canvas來繪制各種圖表,在設計時,盡量在保證開發效率的同時,給使用者提供足夠多的定製化能力。因此使用簡便,同時具有相當靈活的定製能力。目前支持3D/非3D柱形圖(BarChart)、3D/非3D餅圖(PieChart)、堆積圖(StackedBarChart)、面積圖(AreaChart)、折線圖(LineChart)、曲線圖(SplineChart)、環形圖(DountChart)、南丁格爾玫瑰圖(RoseChart)、儀表盤(DialChart)、刻度盤(GaugeChart)、雷達圖(RadarChart)、圓形圖(CircleChart)等圖表。其它特性還包括支持圖表縮放、手勢移動、動畫顯示效果、高密度柱形顯示、圖表分界定製線、多圖表的混合顯示及同數據源不同類型圖表切換等。EazeGraphAndroid圖表庫,支持柱狀圖、分層柱狀圖、餅狀圖、線性圖WilliamChart繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,並且支持Android2.2及以上的系統。HelloChartsforAndroid支持折線圖、柱狀圖、餅圖、氣泡圖、組合圖;支持預覽、放大縮小,滾動,部分圖表支持動畫;支持Android2.2以上這些項目都可以在GitHub搜索到。

E. 誰有IL Remote for Android

IL Remote是一個針對Android和iOS設備(手機或平板)設計的遙控應用,可直接遙控操作FL Studio軟體和其中載入的插件,需要最低FL
Studio 11.0.4版本。設置很簡單,在MIDI設置里打開Image-Line Remote,再打開手機或平板上的IL
Remote就自動通過WiFi連接上了,最多可支持15台移動設備同時控制!

可控制的參數包括走帶、MIDI鍵盤、FPC、Harmonizer鍵盤、演奏模式(Clip Launcher)、Gross Beat
FX、調音台等等,你也可以創建適合自己演奏的控制器,可選組件包括打擊墊、推子、旋鈕、滾輪、調音台、Clip
Launcher、X/Y、鋼琴鍵盤、和聲鍵盤和容器,每個組件都可彎曲自定義。

更難能可貴的是可以免費下載:

F. android怎麼在網路請求頭里加參數

android中網路通信分為socket編程和http編程,這里只介紹htt方面。網路請求方式可分為get請求,post兩種請求方式,GET方式在進行數據請求時,會把數據附加到URL後面傳遞給伺服器,比如常見的:http://XXX.XXX.XXX/XX.aspx?id=1,POST方式則是將請求的數據放到HTTP請求頭中,作為請求頭的一部分傳入伺服器。
所以,在進行HTTP編程前,首先要明確究竟使用的哪種方式進行數據請求的。

android中Http編程有兩種:1、HttpURLConnection;2、HttpClient

首先介紹一下HttpURLConnection方式的get請求和post請求方法:

[java] view
plainprint?

private Map<String, String> paramsValue;

String urlPath=null;// 發送地http://192.168.100.91:8080/myweb/login?username=abc&password=123

public void initData(){urlPath="http://192.168.100.91:8080/myweb/login";

paramsValue=new HashMap<String, String>();

paramsValue.put("username", "111");

paramsValue.put("password", "222");

}


private Map<String, String> paramsValue;
String urlPath=null;

// 發送地http://192.168.100.91:8080/myweb/login?username=abc&password=123
public void initData(){

urlPath="http://192.168.100.91:8080/myweb/login";
paramsValue=new HashMap<String, String>();
paramsValue.put("username", "111");
paramsValue.put("password", "222");
}

get方式發起請求:

[java] view
plainprint?

private boolean sendGETRequest(String path, Map<String, String> params) throws Exception {

boolean success=false;// StringBuilder是用來組拼請求地址和參數

StringBuilder sb = new StringBuilder();

sb.append(path).append("?");

if (params != null && params.size() != 0) {

for (Map.Entry<String, String> entry : params.entrySet()) {

// 如果請求參數中有中文,需要進行URLEncoder編碼 gbk/utf8

sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));

sb.append("&");

}

sb.deleteCharAt(sb.length() - 1);

}URL url = new URL(sb.toString());

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(20000);

conn.setRequestMethod("GET");if (conn.getResponseCode() == 200) {

success= true;

}

if(conn!=null)

conn.disconnect();

return success;

}
private boolean sendGETRequest(String path, Map<String, String> params) throws Exception {
boolean success=false;

// StringBuilder是用來組拼請求地址和參數
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null && params.size() != 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
// 如果請求參數中有中文,需要進行URLEncoder編碼 gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("&");
}
sb.deleteCharAt(sb.length() - 1);
}

URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");

if (conn.getResponseCode() == 200) {
success= true;
}
if(conn!=null)
conn.disconnect();
return success;
}

postt方式發起請求:

[java] view
plainprint?

private boolean sendPOSTRequest(String path,Map<String, String> params) throws Exception{

boolean success=false;

//StringBuilder是用來組拼請求參數

StringBuilder sb = new StringBuilder();if(params!=null &¶ms.size()!=0){for (Map.Entry<String, String> entry : params.entrySet()) {sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));

sb.append("&");}

sb.deleteCharAt(sb.length()-1);

}//entity為請求體部分內容

//如果有中文則以UTF-8編碼為username=%E4%B8%AD%E5%9B%BD&password=123

byte[] entity = sb.toString().getBytes();URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(2000);

// 設置以POST方式

conn.setRequestMethod("POST");

// Post 請求不能使用緩存

// urlConn.setUseCaches(false);

//要向外輸出數據,要設置這個

conn.setDoOutput(true);

// 配置本次連接的Content-type,配置為application/x-www-form-urlencoded

//設置content-type獲得輸出流,便於想伺服器發送信息。

//POST請求這個一定要設置

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.setRequestProperty("Content-Length", entity.length+"");

// 要注意的是connection.getOutputStream會隱含的進行connect。

OutputStream out = conn.getOutputStream();

//寫入參數值

out.write(entity);

//刷新、關閉

out.flush();

out.close();if (conn.getResponseCode() == 200) {

success= true;

}

if(conn!=null)

conn.disconnect();

return success;}
private boolean sendPOSTRequest(String path,Map<String, String> params) throws Exception{
boolean success=false;
//StringBuilder是用來組拼請求參數
StringBuilder sb = new StringBuilder();

if(params!=null &¶ms.size()!=0){

for (Map.Entry<String, String> entry : params.entrySet()) {

sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("&");

}
sb.deleteCharAt(sb.length()-1);
}

//entity為請求體部分內容
//如果有中文則以UTF-8編碼為username=%E4%B8%AD%E5%9B%BD&password=123
byte[] entity = sb.toString().getBytes();

URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(2000);
// 設置以POST方式
conn.setRequestMethod("POST");
// Post 請求不能使用緩存
// urlConn.setUseCaches(false);
//要向外輸出數據,要設置這個
conn.setDoOutput(true);
// 配置本次連接的Content-type,配置為application/x-www-form-urlencoded
//設置content-type獲得輸出流,便於想伺服器發送信息。
//POST請求這個一定要設置
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", entity.length+"");
// 要注意的是connection.getOutputStream會隱含的進行connect。
OutputStream out = conn.getOutputStream();
//寫入參數值
out.write(entity);
//刷新、關閉
out.flush();
out.close();

if (conn.getResponseCode() == 200) {
success= true;
}
if(conn!=null)
conn.disconnect();
return success;

}

在介紹一下HttpClient方式,相比HttpURLConnection,HttpClient封裝的得更簡單易用一些,看一下實例:

get方式發起請求:

[java] view
plainprint?

public String getRequest(String UrlPath,Map<String, String> params){

String content=null;

StringBuilder buf = new StringBuilder();

if(params!=null &¶ms.size()!=0){for (Map.Entry<String, String> entry : params.entrySet()) {buf.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));

buf.append("&");}

buf.deleteCharAt(buf.length()-1);

}

content= buf.toString();HttpClient httpClient = new DefaultHttpClient();

HttpGet getMethod = new HttpGet(content);HttpResponse response = null;

try {

response = httpClient.execute(getMethod);

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}catch (Exception e) {

e.printStackTrace();

}if (response!=null&&response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

try {

content = EntityUtils.toString(response.getEntity());

} catch (ParseException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}return content;

}
public String getRequest(String UrlPath,Map<String, String> params){
String content=null;
StringBuilder buf = new StringBuilder();
if(params!=null &¶ms.size()!=0){

for (Map.Entry<String, String> entry : params.entrySet()) {

buf.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
buf.append("&");

}
buf.deleteCharAt(buf.length()-1);
}
content= buf.toString();

HttpClient httpClient = new DefaultHttpClient();
HttpGet getMethod = new HttpGet(content);

HttpResponse response = null;
try {
response = httpClient.execute(getMethod);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}

if (response!=null&&response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
try {
content = EntityUtils.toString(response.getEntity());
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

return content;
}

postt方式發起請求:

[java] view
plainprint?

private boolean sendPOSTRequestHttpClient(String path,Map<String, String> params) throws Exception {

boolean success = false;

// 封裝請求參數

List<NameValuePair> pair = new ArrayList<NameValuePair>();

if (params != null && !params.isEmpty()) {

for (Map.Entry<String, String> entry : params.entrySet()) {

pair.add(new BasicNameValuePair(entry.getKey(), entry

.getValue()));

}

}

// 把請求參數變成請求體部分

UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");

// 使用HttpPost對象設置發送的URL路徑

HttpPost post = new HttpPost(path);

// 發送請求體

post.setEntity(uee);

// 創建一個瀏覽器對象,以把POST對象向伺服器發送,並返回響應消息

DefaultHttpClient dhc = new DefaultHttpClient();

HttpResponse response = dhc.execute(post);

if (response.getStatusLine().getStatusCode() == 200) {

success = true;

}

return success;

}
private boolean sendPOSTRequestHttpClient(String path,Map<String, String> params) throws Exception {
boolean success = false;
// 封裝請求參數
List<NameValuePair> pair = new ArrayList<NameValuePair>();
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
pair.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
}
}
// 把請求參數變成請求體部分
UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");
// 使用HttpPost對象設置發送的URL路徑
HttpPost post = new HttpPost(path);
// 發送請求體
post.setEntity(uee);
// 創建一個瀏覽器對象,以把POST對象向伺服器發送,並返回響應消息
DefaultHttpClient dhc = new DefaultHttpClient();
HttpResponse response = dhc.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
success = true;
}
return success;
}

G. android中這樣的曲線要怎麼繪制

推薦你幾個相關開源項目,可以根據需要自己選擇,自己畫還是比較麻煩的:
MPAndroidChart
強大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環圖、范圍(高至低)條形圖、網狀圖及各種圖的結合;支持圖的拖拽縮放;支持 Android 2.2 以上,支持橫縱軸縮放,多指縮放,展現動畫、高亮、保存到 sdcard、從文件讀取圖表
achartengine
強大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環圖、范圍(高至低)條形圖、撥號圖/表、立方線圖及各種圖的結合
GraphView
繪制圖表和曲線圖的View,可用於Android上的曲形圖、柱狀圖、波浪圖展示
HoloGraphLibrary
繪制線狀圖、柱狀圖、餅狀圖
XCL-Charts
XCL-Charts基於原生的Canvas來繪制各種圖表,在設計時,盡量在保證開發效率的同時,給使用者提供足夠多的定製化能力。因此使用簡便,同時具有相當靈活的定製能力。目前支持3D/非3D柱形圖(Bar Chart)、3D/非3D餅圖(Pie Chart)、堆積圖(Stacked Bar Chart)、面積圖(Area Chart)、 折線圖(Line Chart)、曲線圖(Spline Chart)、環形圖(Dount Chart)、南丁格爾玫瑰圖(Rose Chart)、儀表盤(Dial Chart)、刻度盤(Gauge Chart)、雷達圖(Radar Chart)、圓形圖(Circle Chart)等圖表。其它特性還包括支持圖表縮放、手勢移動、動畫顯示效果、高密度柱形顯示、圖表分界定製線、多圖表的混合顯示及同數據源不同類型圖表切換等。
EazeGraph
Android 圖表庫,支持柱狀圖、分層柱狀圖、餅狀圖、線性圖
WilliamChart
繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,並且支持 Android 2.2及以上的系統。
HelloCharts for Android
支持折線圖、柱狀圖、餅圖、氣泡圖、組合圖;支持預覽、放大縮小,滾動,部分圖表支持動畫;支持 Android 2.2 以上

這些項目都可以在GitHub 搜索到。

H. 10大怪異社交網路平台有哪些

1、Brony2

有一群人稱自己為「Brony」(小馬哥),他們是卡通連續劇《我的小馬駒》(My Little Pony)的忠實粉絲。Brony2就是針對這群忠實粉絲開發的社交網路。Brony2在網站介紹中這樣描述:「在這里,你可以找到和你一樣的小馬哥。」
童年時,筆者也曾坐在電視機前津津有味的觀看《我的小馬駒》,但我並不會登陸Brony2去注冊用戶名,上面關於《我的小馬駒》的信息也吸引不了我的興趣。對我來說,Brony2毫無價值,或許因為我根本就不是一個小馬哥。
2、Lost Zombies

僵屍類電影曾吸引了大量粉絲,而Lost Zombies就是一個「以僵屍為主題的社交網路」,該網站於2008年上線,其目的是將那些製作僵屍類電影的人聚集在一起。為鼓勵原創內容,Lost Zombies在上線後停止用戶提交僵屍類電影,但這種效果並不明顯。截至到目前,該網站會員製作的僵屍電影從未公開上映過。
盡管Lost Zombies從未發行過任何一部僵屍類電影,但該網站在2011年還是出版了一本僵屍類書刊《Dead Inside》。如果你是僵屍類電影的忠實粉絲,你可以在Kindle電子書店花費15.54或者7.99美元訂閱這本書。
3、The Bear Club

The Bear Club是泰迪熊愛好者的集散地,如果你想知道「你的泰迪熊今天都做了什麼?」,那麼登陸The Bear Club就可以找到答案。The Bear Club的注冊用戶可以根據自己擁有的泰迪熊選擇個性部落,然後結交志趣相投的人。The Bear Club在其平台上還設立了一個泰迪熊系列玩具專賣店,以方便粉絲購買喜歡的泰迪熊玩具。
4、Vampire Freaks

筆者是一個道德觀念保守的人,因此我很難說服自己接受Vampire Freaks,但我必須承認,這個網站非常怪異。目前,Vampire Freaks擁有1727537名注冊用戶,這些用戶被Vampire Freaks稱為「粗鄙哥」。
當然,Vampire Freaks並非毫無價值,其應用非常豐富,會員可以查看其他會員的日誌,或者加入特定的群體,比如Hogwarts或者MOD等。此外,Vampire Freaks還為用戶提供了聊天室和留言板模板。
5、Mullet Passions

Mullet Passions是一個免費約會的社交平台,單身用戶都有機會在這里找到自己的意中人。
6、FurNation

盡管獸人文化屬於非主流文化,但對大多數動物愛好者來說,這種文化是完全可以接受的,而FurNation就是專為獸人文化愛好者打造的社交平台。
7、Line for Heaven

Line for Heaven屬於宗教類社交網站,會員都是各類宗教的信徒。
8、Juggalobook

看到Juggalobook,你是否會聯想到Facebook呢?Juggalobook是專業為「Insane Clown Posse」樂隊說唱風格粉絲打造的社交平台,其界面與Facebook非常相似,甚至可以說是Facebook的山寨版。
9、Couple

Couple的詞義是「一對夫婦」,那麼以Couple命名的網站能被稱為社交網路么?答案是肯定的,Couple是一個只屬於兩個人進行地下戀情的社交網路。

目前,Couple已經針對iOS和Android平台推出了移動客戶端,通過該應用,用戶能夠約會、購物或者進行浪漫的指尖上接吻。當兩個陌生的Couple移動終端用戶同時用手指點擊手機屏幕時,他們的頭像將同時出現在手機屏幕上,這非常有趣。
10、A Small World

A Small World自稱其注冊用戶已經達到85萬名,這些用戶來自全球各地,並且都屬於富人階層。A Small World的會員發展模式極為獨特,新會員只能通過已注冊會員的邀請才能加入。通過A Small World,會員可以分享自己的旅行建議、向其他會員推薦工作,結交興趣愛好相同的朋友等。

I. 在Android中要實現圖表統計該怎麼做

package com.yzxy.draw;

import java.util.ArrayList;
import java.util.HashMap;
import com.yzxy.draw.tools.Tools;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.RectF;
import android.graphics.Paint.Style;
import android.graphics.Typeface;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

@SuppressLint("ViewConstructor")
class MyTuView extends View{

public static final int RECT_SIZE = 10;
private Point mSelectedPoint = null;
public static enum Mstyle
{
Line,scroll
}

private Mstyle mstyle=Mstyle.Line;
private Point[] mPoints = new Point[8];

Context context;
Activity act;
int bheight=0;
Tools tool=new Tools();
HashMap map;
ArrayList dlk;
int totalvalue=30;
int pjvalue=5;
String xstr,ystr;
int margint=15;
int marginb=40;
int c=0;
int resid=0;
Boolean isylineshow;

public MyTuView(Context context,HashMap map,int totalvalue,int pjvalue,String xstr,String ystr,Boolean isylineshow)
{
super(context);
this.context=context;
this.act = (Activity)context;
this.map=map;
this.totalvalue=totalvalue;
this.pjvalue=pjvalue;
this.xstr=xstr;
this.ystr=ystr;
this.isylineshow=isylineshow;
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// canvas.drawColor(Color.GRAY);
if(c!=0)
this.setbg(c);
if(resid!=0)
this.setBackgroundResource(resid);
dlk=tool.getintfrommap(map);
int height=getHeight();
if(bheight==0)
bheight=height-marginb;

int width=getWidth();

Log.i("w", getWidth()+":"+getHeight());
int blwidh=tool.dip2px(context,50);
int pjsize=totalvalue/pjvalue;

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.GRAY);
paint.setStrokeWidth(1);
paint.setStyle(Style.STROKE);

// 畫直線(橫向)
for(int i=0;i xlist=new ArrayList();//記錄每個x的值
//畫直線(縱向)
for(int i=0;i dlk,HashMap map,ArrayList xlist,int max,int h)
{
Point[] points=new Point[dlk.size()];
for(int i=0;i getMap() {
return map;
}

public void setMap(HashMap map) {
this.map = map;
}

public int getTotalvalue() {
return totalvalue;
}

public void setTotalvalue(int totalvalue) {
this.totalvalue = totalvalue;
}

public int getPjvalue() {
return pjvalue;
}

public void setPjvalue(int pjvalue) {
this.pjvalue = pjvalue;
}

public String getXstr() {
return xstr;
}

public void setXstr(String xstr) {
this.xstr = xstr;
}

public String getYstr() {
return ystr;
}

public void setYstr(String ystr) {
this.ystr = ystr;
}

public int getMargint() {
return margint;
}

public void setMargint(int margint) {
this.margint = margint;
}

public Boolean getIsylineshow() {
return isylineshow;
}

public void setIsylineshow(Boolean isylineshow) {
this.isylineshow = isylineshow;
}

public int getMarginb() {
return marginb;
}

public void setMarginb(int marginb) {
this.marginb = marginb;
}

public Mstyle getMstyle() {
return mstyle;
}

public void setMstyle(Mstyle mstyle) {
this.mstyle = mstyle;
}

public int getBheight() {
return bheight;
}

public void setBheight(int bheight) {
this.bheight = bheight;
}

public int getC() {
return c;
}

public void setC(int c) {
this.c = c;
}

public int getResid() {
return resid;
}

public void setResid(int resid) {
this.resid = resid;
}

}

代碼片段
package com.yzxy.draw.tools;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Environment;

public class Tools
{
private final static String ALBUM_PATH = Environment.getExternalStorageDirectory() + "/yueqiu/";

public int dip2px(Context context, float dpValue)
{
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}

public int px2dip(Context context, float pxValue)
{
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}

public ArrayList getintfrommap(HashMap map)
{
ArrayList dlk=new ArrayList();
int position=0;
@SuppressWarnings("rawtypes")
Set set= map.entrySet();
@SuppressWarnings("rawtypes")
Iterator iterator = set.iterator();

while(iterator.hasNext())
{
@SuppressWarnings("rawtypes")
Map.Entry mapentry = (Map.Entry)iterator.next();
dlk.add((Double)mapentry.getKey());
}
for(int i=0;i

代碼片段
package com.yzxy.draw;

import java.io.IOException;
import java.util.HashMap;

import com.yzxy.draw.MyTuView.Mstyle;
import com.yzxy.draw.tools.Tools;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;

import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.Toast;
import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.Color;

public class MainActivity extends Activity {

MyTuView tu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

HashMap map=new HashMap();
map.put(1.0, 8.0);
map.put(7.0, 130.0);
map.put(2.0, 4.0);
map.put(3.0, 1.0);
map.put(4.0, 18.0);
map.put(5.0, 160.0);
map.put(6.0, 180.0);
map.put(8.1, 133.5);
tu=new MyTuView(this,map,200,50,"x","y",false);
// tu.setC(Color.CYAN);
tu.setResid(R.drawable.bg);
// tu.setBheight(200);
tu.setTotalvalue(200);

tu.setPjvalue(50);
tu.setXstr("x");
tu.setYstr("y");
tu.setMargint(20);
tu.setBackgroundColor(Color.WHITE);
tu.setMarginb(50);
tu.setMstyle(Mstyle.scroll);
RelativeLayout rela=getlayout(R.layout.activity_main);
rela.addView(tu);
LayoutParams parm=new LayoutParams(1200,400);
parm.setMargins(50, 50, 50, 100);
tu.setLayoutParams(parm);
setContentView(rela);

}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// TODO Auto-generated method stub
if(item.getItemId() == R.id.menu_settings)
{
if (false == tu.isDrawingCacheEnabled())
{
tu.setDrawingCacheEnabled(true);
}
Bitmap bitmap = tu.getDrawingCache();
Tools tool=new Tools();
try {
Boolean b=tool.saveFile(bitmap, "aaaa.png");
if(b)
Toast.makeText(this, "success", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(item.getItemId() == R.id.menu_ch)
{
HashMap map=new HashMap();
map.put(1.0, 21.0);
map.put(3.0, 25.0);
map.put(4.0, 32.0);
map.put(5.0, 31.0);
map.put(6.0, 26.0);

tu.setTotalvalue(40);
tu.setPjvalue(10);
tu.setMap(map);
tu.setIsylineshow(true);
tu.postInvalidate();
}
if(item.getItemId() == R.id.menu_ch2)
{
HashMap map=new HashMap();
map.put(1.0, 41.0);
map.put(3.0, 25.0);
map.put(4.0, 32.0);
map.put(5.0, 41.0);
map.put(6.0, 16.0);
map.put(7.0, 36.0);
map.put(8.0, 26.0);
tu.setTotalvalue(50);
tu.setPjvalue(10);
tu.setMap(map);
tu.setMstyle(Mstyle.Line);
tu.setIsylineshow(false);
tu.postInvalidate();
}
return true;
}

public RelativeLayout getlayout(int r)
{
LayoutInflater inflater = (LayoutInflater)getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE );
try {
XmlResourceParser parser = getResources().getLayout(r);
RelativeLayout layout = (RelativeLayout) inflater.inflate(parser, null);
return layout;
}catch (Exception e) {
// TODO: handle exception
}
return null;
}
}

熱點內容
安卓手機為什麼下巴厚 發布:2023-01-31 11:43:52 瀏覽:841
timestrftimepython 發布:2023-01-31 11:43:51 瀏覽:36
魚吧淺談dnf產生的緩存垃圾 發布:2023-01-31 11:42:39 瀏覽:834
緩存劇集剪輯 發布:2023-01-31 11:34:52 瀏覽:631
ranger編譯器 發布:2023-01-31 11:32:35 瀏覽:570
網段訪問外網 發布:2023-01-31 11:31:42 瀏覽:730
jitandroid 發布:2023-01-31 11:31:32 瀏覽:979
安卓電量用得快為什麼 發布:2023-01-31 11:29:53 瀏覽:910
特洛無人機如何設置wifi密碼 發布:2023-01-31 11:29:53 瀏覽:113
c編譯成dll文件 發布:2023-01-31 11:26:30 瀏覽:626