- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
但是必須記住,此方法必須在setContentView方法之前,否則報錯。
2,獲取顯示屏幕大小的方法。
- this.getWindow().getWindowManager().getDefaultDisplay().getWidth()
- this.getWindow().getWindowManager().getDefaultDisplay().getHeight()
3,對於RadioButton來說,必須在RadioGroup之中,而且對於哪個RadioButton被選中可以使用自定義的(選中方法==buttnID),不過更推薦採用getCheckedRadioButtonId()方法來進行。
4,對於全屏的方法。
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.main);
- this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
5,對於URL。引用IBM技術文章:http://www.ibm.com/developerworks/cn/opensource/os-android-networking/?1321493252
類似自己也做一個,這上面應該在manifest文件中加入訪問權限。如:
- <uses-permission android:name="android.permission.INTERNET"/>
其次對於URL來說,www.google.com.hk並非是一個URL,應該爲http://www.google.com.hk,必須加入協議。否則直接跳轉到MalformedURLException,用戶得不到任何信息提示。
6,對於豎屏鎖定,android機器有方向感應器,所以屏幕會進行自動橫屏/豎屏切換。解決的方法。在manifest中的action節點內加入
- android:screenOrientation="portrait" // 豎屏 , 值爲 landscape 時爲橫屏
來鎖定屏幕。
7,對於wifi的管理。
a,權限:
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
b,獲得wifi管理:
- WifiManager wifi = (WifiManager) this.getSystemService(Service.WIFI_SERVICE);
c,wifi管理:
- wifi.setWifiEnabled(true);//打開
- wifi.setWifiEnabled(false);//關閉
d,獲得狀態:
- wifi.getWifiState()
狀態信息爲0,1,2,3,4分別代表不同狀態。具體查SDK。
8,已知res/drawable下有pic.jpg。如何不使用R.drawable.pic來設置圖片?
- int srcID = getResources().getIdentifier("fog", "drawable", "com.duduli.li");
- iv.setImageResource(srcID);
9,屏幕長按事件
對於控件的長按事件有專用的方法,setOnLongClickListener一般這個方法夠用了。
但是對於屏幕來說卻沒有,所以我們需要一些手勢動作GestureDetector就是一個常用手勢動作。一下是代碼:
- gd = new GestureDetector(new OnGestureListener() {
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- // TODO Auto-generated method stub
- System.out.println("single tap");
- return false;
- }
- @Override
- public void onShowPress(MotionEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
- float distanceY) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
- System.out.println("long press");
- }
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- );
自定義實現上面,然後在重寫onTouchEvent的方法。
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- // TODO Auto-generated method stub
- gd.onTouchEvent(event);
- return super.onTouchEvent(event);
- }
10,關於手機應用程序的問題,
小米終於到手裏了,迫不及待的安裝了自己做的軟件。卻突然發現一個問題。
因爲自己的軟件都存放在一個同名包裏面“com.duduli.li”結果發現我將自己的card安裝好了,再安裝自己的ibook,card沒有了。真這樣的麼?
11,關於基站定位:
- TelephonyManager tm = (TelephonyManager) LACandCELLIDActivity.this.getSystemService(Context.TELEPHONY_SERVICE);
- CellLocation cl = tm.getCellLocation();
- GsmCellLocation gcl = (GsmCellLocation) cl;
- int cellID = gcl.getCid();
- int lac = gcl.getLac();
- String u = "http://gisapi.sinaapp.com/jizhan.php?cellid="+cellID+"&loc="+lac;
- try {
- URL url = new URL(u);
- URLConnection conn = url.openConnection();
- BufferedReader br = new BufferedReader(
- new InputStreamReader(conn.getInputStream()));
- String line = "";
- while((line=br.readLine()) != null){
- System.out.println(line);
- }
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
這裏需要加入三個權限:
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.INTERNET"/>
11,通過已知的兩個Google map經緯度,測量兩點之間的距離:
- GeoPoint aGeoPoint = new GeoPoint((int) (22.550734 * 1000000), (int) (114.102295 * 1000000));
- GeoPoint bGeoPoint = new GeoPoint((int) (22.550430 * 1000000), (int) (114.100861 * 1000000));
- public double getDistance(double lat1, double lon1, double lat2, double lon2) {
- float[] results = new float[3];
- Location.distanceBetween(lat1 / 1E6, lon1 / 1E6, lat2 / 1E6, lon2 / 1E6, results);
- return results[0];
- }
- System.out.println(getDistance(bGeoPoint.getLatitudeE6(), bGeoPoint.getLongitudeE6()
- ,aGeoPoint.getLatitudeE6(), aGeoPoint.getLongitudeE6()));
參數兩點順序無所謂。
12,今天忙活了一天的基站定位程序。出現了2個問題。
第一個,問題是自己很白癡。把url的參數寫錯了。所以導致程序總是出錯。
現在總結下第二給問題吧。
之前自己的程序打包都是使用的debugkey進行的。之前都還沒有出現問題,知道開發這個Google map的定位。
要申請那個開發key才能進行。
具體的爲
- C:\Program Files\Java\jdk1.6.0_24\bin>keytool -genkey -alias duduli.keystore -ke
- yalg RSA -validity 20000 -keystore C:\Users\Administrator\.android\duduli.keysto
- re
和debugkey的一樣,詢問姓名什麼的。
然後通過這個keystore在進行一次密鑰獲得
- C:\Program Files\Java\jdk1.6.0_24\bin>keytool -list -alias duduli.keystore -keys
- tore C:\Users\Administrator\.android\duduli.keystore
http://code.google.com/intl/zh-CN/android/maps-api-signup.html
通過得到這個的密鑰,替換之前debug版的密鑰,然後打包採用duduli.keystroe進行打包就可以了。
具體可以參看《Google Android開發入門與實戰》第4章和第13章。網上有pdf版本下載http://ishare.iask.sina.com.cn/f/7617452.html。
13,對於某個應用程序或activity你只想他一個實例在運行。那麼可以在menifest.xm中的activity中設置
- android:launchmode="singleTask"
如果設置了singleTask的activity已經在運行了,而你用intent啓動這個activity那麼,系統將不會調用onCreate方法,而是調用onNewIntent。
14,總會出現這樣的問題。
比如一個外部類執行的時候,你需要修改主線程UI的狀態,那麼你可以採用handler+message的方法。或者通過建立內部類的方法進行解決。
15,此問題未能解答。http://duduli.iteye.com/admin/blogs/1447684
16,對於輸入框,默認讓其輸入數字的方法:
- et.setKeyListener(new DigitsKeyListener(false, true));
1,獲得當天的0時0分0秒的Calender
- Calendar c = Calendar.getInstance();
- c.set(c.get(Calendar.YEAR),
- c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH),0,0,0);