丰满少妇女人a毛片视频-酒色成人网-日韩欧美一-日韩精品一区二区av在线观看-成人久久免费-欧美精品一二三四区-国产午夜免费-亚洲男人第一天堂-一区二区三区福利视频-午夜激情影院-av中文天堂在线-免费一区二区-欧美日韩xxx-91区视频-亚洲另类激情专区小说图片-黄色的网站在线观看-香蕉精品在线

高分網(wǎng) > 通用學(xué)習(xí)方法 > 學(xué)習(xí)經(jīng)驗 >

android學(xué)習(xí)心得

時間: 嘉欣2 學(xué)習(xí)經(jīng)驗

  android學(xué)習(xí)心得篇一

  最后一個多星期的話,幫忙修復(fù)了一些小bug,還有頁面方面的一些事,感覺做的還是不多!繼續(xù)加油吧!

  android學(xué)習(xí)心得篇二

  研究android也有一段時間了,單從知識點來說,也撐握了不少東西,卻從未在網(wǎng)上發(fā)布過任何東西。為了讓喜歡android的新手們(其實我也是新 手)少走彎路,從現(xiàn)在起,我會把我總結(jié)的(更多是整理的別人的,我只一起展示給大家,也望作者勿怪)知識共享給大家,也希望大家能多提意見,共同進步。

  最基本的開發(fā)環(huán)境配置、hello world等內(nèi)容網(wǎng)上很多,我這里不寫了,我只把各功能點和注意事項列給大家。

  內(nèi)容如下:

  1、繪圖

  2、短信服務(wù)

  3、電話服務(wù)

  4、互聯(lián)網(wǎng)應(yīng)用

  5、GOOGLE MAP

  6、位置服務(wù)

  7、SQLit

  9、多媒體播放

  9、多媒體錄制

  10、拍照

  ......

  還有其它更細的知識點介紹。

  (作者:子軒,郵箱:)

  Android學(xué)習(xí)心得(一)——繪圖做java的都知道,繪圖肯定首先需要一個 Canvas,然后在用Graphics在上面繪制自己想要圖案。不錯,Android上面也類似,你可以從一個Bitmap得到它的Canvas,進行 繪制,也可以自定義一個View,用它的Canvas。不同的時,Android里沒有Graphics,而用Paint代之,當(dāng)然用法也稍有不同。以下 是自定義View的一段代碼:

  @Override

  public void onDraw(Canvas canvas) {

  // 首先定義一個paint

  Paint paint = new Paint();

  // 繪制矩形區(qū)域-實心矩形

  // 設(shè)置顏色

  paint.setColor(Color.WHITE);

  // 設(shè)置樣式-填充

  paint.setStyle(Style.FILL);

  // 繪制一個矩形

  canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);

  // 繪空心矩形

  // 設(shè)置顏色

  paint.setColor(Color.RED);

  // 設(shè)置樣式-空心矩形

  paint.setStyle(Style.STROKE);

  // 繪制一個矩形

  canvas.drawRect(new Rect(10, 10, 50, 20), paint);

  // 繪文字

  // 設(shè)置顏色

  paint.setColor(Color.GREEN);

  // 繪文字

  canvas.drawText(str, 30, 30, paint);

  // 繪圖

  // 從資源文件中生成位圖

  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

  // 繪圖

  canvas.drawBitmap(bitmap, 10, 10, paint);

  }

  以上需要注意的有三點:

  1、Android中的Rect和java中的可能稍有區(qū)別,前兩個參數(shù)是左上角的坐標,后兩個參數(shù)是右下角的坐標(不是寬度和高度);

  2、Style.STROKE和Style.FILL外邊的像素數(shù)是有區(qū)別的,這點和java里一樣;

  3、繪文字時,設(shè)置的坐標點為(30,30),但繪出來后你會發(fā)現(xiàn),文字的左上角坐標要比你設(shè)置的偏上,不知道是android設(shè)置的bug,還是我們有理解到坐標點的意義。

  Android學(xué)習(xí)心得(二)——短信服務(wù)Android中發(fā)短信非常方便,兩行代碼:

  SmsManager sm = SmsManager.getDefault();

  sm.sendTextMessage("10086", null, "hello", null, null);

  由于現(xiàn)在我還沒有Android手機,也不知道這樣能否成功。

  收短信稍稍復(fù)雜一點,需要建立一個BroadcastReceiver,來監(jiān)聽android.provider.Telephony.SMS_RECEIVED事件,我不太詳述,完整代碼如下:

  public class SMSReceiver extends BroadcastReceiver {

  @Override

  public void onReceive(Context context, Intent intent) {

  Bundle bundle = intent.getExtras();

  if (bundle != null) {

  Object[] pdusObj = (Object[]) bundle.get("pdus");

  if (pdusObj != null) {

  SmsMessage[] messages = new SmsMessage[pdusObj.length];

  for (int n = 0; n < pdusObj.length; n++) {

  messages[n] = SmsMessage.createFromPdu((byte[]) pdusObj[n]);

  Log.d("MsgTest", "Message: " + n + " " + messages[n].getMessageBody());

  Log.d("MsgTest", "Message from: " + messages[n].getOriginatingAddress());

  }

  }

  }

  }

  }

  注意:

  1、不要忘記添加短信收發(fā)相關(guān)的權(quán)限;

  2、不要忘記配置SMSReceiver。

  (作者:子軒,郵箱:)

  Android學(xué)習(xí)心得(三)——電話服務(wù)Android打電話也是兩行代碼:

  Intent intent = new Intent("android.intent.action.DIAL", Uri.parse("tel:10086") );

  startActivity(intent);

  這樣便進進入呼叫界面了。

  接下來我們再看一下監(jiān)聽電話狀態(tài)的功能。

  監(jiān)聽電話狀態(tài)首先建立一個繼承于PhoneStateListener電話監(jiān)聽類(如:TeleListener),并讓TelephonyManager監(jiān)聽它。

  TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

  mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE | PhoneStateListener.LISTEN_SERVICE_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTH);

  TeleListener需要實現(xiàn)父類的幾個方法,onCallStateChanged、onServiceStateChanged、onSignalStrengthChanged,根據(jù)方法名我們便可知其功能,這里就不再詳述。

  Android學(xué)習(xí)心得(四)——互聯(lián)網(wǎng)應(yīng)用Android中,互聯(lián)網(wǎng)應(yīng)用和java里基本一樣,也沒有什么好說的,但在我測試上傳圖片時遇到一個問題,先看一段代碼:

  private void uploadImage(String httpUrl) {

  try {

  OutputStream os = null;

  InputStream is = null;

  URL url = new URL(httpUrl);

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

  conn.setDoOutput(true);

  conn.setDoInput(true);

  conn.setRequestMethod("POST");

  conn.setRequestProperty("X-Online-Host", "www.ppice.com");

  conn.connect();

  os = conn.getOutputStream();

  InputStream bmis = getResources().openRawResource(R.drawable.icon);

  int i = 0;

  while (i != -1) {

  i = bmis.read();

  os.write(i);

  }

  bmis.close();

  os.flush();

  os.close();

  is = conn.getInputStream();

  is.close();

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  這段代碼的功能是:向一個Servlet發(fā)送一張圖片,定義了OutputStream和InputStream,其實這里InputStream本用不 著,但是如果不執(zhí)行is=conn.getInputStream(),就發(fā)不出數(shù)據(jù),不知道這是android的bug,還是規(guī)定。

  Android學(xué)習(xí)心得(五)——GOOGLE MAPGOOGLE MAP API是Android的靚點之一,我們可以創(chuàng)建一個MapActivity的子類,將MapView顯示于其上即可,可以用MapController來控制顯示的坐標、地圖模式和視野高度,處理起來非常簡單。

  完整代碼如下:

  public class MapTest extends MapActivity {

  private MapView mapView;

  private MapController mc;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.mapview);

  mapView = (MapView) findViewById(R.id.map);

  mapView.setTraffic(true);

  mc = mapView.getController();

  GeoPoint gp = new GeoPoint((int) (30.659259 * 1000000), (int) (104.065762 * 1000000)); //地理坐標

  mc.animateTo(gp);

  mc.setZoom(12);

  }

  @Override

  protected boolean isRouteDisplayed() {

  return false;

  }

  }

  mapview.xml內(nèi)容如下:

  <?xml version="1.0" encoding="utf-8"?>

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  <com.google.android.maps.MapView android:id="@+id/map"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:enabled="true"

  android:clickable="true"

  android:apiKey="0mHnPl2NS9XPKx6pKwJriV2Wj-mEHSh71yyX_SQ"

  />

  </RelativeLayout>

  注意:

  1、你要申請一個自己的apiKey;

  2、不要忘了設(shè)置互聯(lián)網(wǎng)訪問權(quán)限。

  (作者:子軒,郵箱:)

  Android學(xué)習(xí)心得(六)——位置服務(wù)本節(jié)主要是介紹一下gps的使用,google map和gps的結(jié)合是android上主要應(yīng)用之一,android market中,此類產(chǎn)品所占比例不小。

  我們在上節(jié)的代碼中添加如下內(nèi)容:

  LocationManager lm;

  MyLocationListener locationListener;

  lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

  locationListener = new MyLocationListener();

  lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

  缺少MyLocationListener吧?那我們就創(chuàng)建一個MyLocationListener,要實現(xiàn)LocationListener中的幾個方法,LocationListener的功能我就不用再說了吧?

  我吧代碼貼出來,一目了然。

  // 下面是從GPS獲取坐標的監(jiān)聽,暫時沒有使用

  public class MyLocationListener implements LocationListener {

  @Override

  public void onLocationChanged(Location loc) {

  if (loc != null) {

  Log.d("MapTest", "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude());

  GeoPoint p = new GeoPoint((int) (loc.getLatitude() * 1E6), (int) (loc.getLongitude() * 1E6));

  mc.animateTo(p);

  mc.setZoom(16);

  mapView.invalidate();

  }

  }

  @Override

  public void onProviderDisabled(String provider) {

  }

  @Override

  public void onProviderEnabled(String provider) {

  }

  @Override

  public void onStatusChanged(String provider, int status, Bundle extras) {

  }

  }

  注意事項:

  又是權(quán)限的問題,我全列出來,隨便用哪個了。

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

  (作者:子軒,郵箱:)

  Android學(xué)習(xí)心得(七)——SQLite眾所周知,移動設(shè)備上的數(shù)據(jù)庫最成功的非SQLite莫屬了,Android上同樣是用SQLite,并且android提供了較為簡單的API,用起來非常順手。

  看下面的代碼:

  //定義數(shù)據(jù)庫

  SQLiteDatabase myDB = null;

  //打開或建立數(shù)據(jù)庫(當(dāng)數(shù)據(jù)庫不存在時,自動分創(chuàng)建)

  myDB = this.openOrCreateDatabase("MY_DATABASE_NAME", "MODE_PRIVATE", null);

  //刪除表格、新建表格、插入數(shù)據(jù)、更新數(shù)據(jù),地球人都知道,我也不說了

  myDB.execSQL("........標準的SQL語句..........;");

  //查詢比較麻煩,我這里列出代碼

  //查詢(表格和數(shù)據(jù)你自己去建立吧)

  Cursor c = myDB.rawQuery("SELECT id,name,tel FROM MY_DATABASE_TABLE WHERE age>1 order by age;", null);

  if (c != null) {

  if (c.moveToFirst()) {

  do {

  Log.w("test", "id="+c.getString(c.getColumnIndex("id")));

  Log.w("test", "name="+c.getString(c.getColumnIndex("name")));

  Log.w("test", "tel="+c.getString(c.getColumnIndex("tel")));

  Log.w("test", "--------------");

  } while (c.moveToNext());

  }

  }

  c.close();

  //關(guān)裝閉數(shù)據(jù)庫

  myDB.close();

  怎么樣?比jdbc要簡單得多吧?移動設(shè)置上功能不需要太強大,好用就好。

  (作者:子軒,郵箱:)

  Android學(xué)習(xí)心得(八)——多媒體播放先看代碼:

  try {

  String path = "/sdcard/t.mp3";

  MediaPlayer mp = null;

  mp = new MediaPlayer();

  mp.setDataSource(path);

  mp.prepare();

  mp.start();

  mp.setOnCompletionListener(cl);

  } catch (IllegalArgumentException e) {

  e.printStackTrace();

  } catch (IllegalStateException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  音頻播放,就是這么簡單。

  視頻播放用VideoView,也不是很復(fù)雜。

  我還是把代碼加上吧,不然老感覺不完整。

  VideoView videoView = new VideoView(this);

  setContentView(videoView);

  videoView.setVideoURI(Uri.parse("/sdcard/t.3gp"));

  videoView.requestFocus();

  videoView.start();

  ndroid學(xué)習(xí)心得(九)——多媒體錄制還是先看代碼,用一種最笨的方式實現(xiàn)了錄音的功能:

  try {

  String path = "/sdcard/recorder.amr";

  MediaRecorder recorder = new MediaRecorder();

  recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

  recorder.setOutputFile(path+name);

  recorder.prepare();

  recorder.start();

  try {

  Runnable.wait(10000);

  } catch (Exception exp) {

  exp.printStackTrace();

  }

  recorder.stop();

  recorder.release();

  } catch (IllegalStateException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  10秒鐘哦,等也得等,不等也得等,不用線程怎么行。

  錄像就是Audio+Video,所以還要加點東西,看代碼:

  path = "/sdcard/v.3gp";

  recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

  recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

  recorder.setVideoSize(176, 144);

  recorder.setVideoFrameRate(15);

  recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);

  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

  recorder.setOutputFile(path);

  理論上是沒錯的,可我用模擬器測試錄制視頻還是會報錯,G2已經(jīng)上市,看來是時候弄部真機了。

  (作者:子軒,郵箱:)

  ndroid學(xué)習(xí)心得(十)——拍照拍照有兩種方式,一是使用android.hardware.Camera,二是使用Intent("android.media.action.IMAGE_CAPTURE"),當(dāng)然還是第一種好,不過代碼太復(fù)雜,以后有時間再說,這里就說一下第二種方式吧。

  try {

  Intent i = new Intent("android.media.action.IMAGE_CAPTURE");

  startActivityForResult(i, Activity.DEFAULT_KEYS_DIALER);

  } catch (Exception e) {

  }

  這樣就可以調(diào)用系統(tǒng)的像機了。

  當(dāng)然你的Activity要重構(gòu)一下onActivityResult方法,代碼如下:

  @Override

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  super.onActivityResult(requestCode, resultCode, data);

  Bundle extras = data.getExtras();

  Bitmap b = (Bitmap) extras.get("data");

  ImageView img = new ImageView(this);

  img.setImageBitmap(b);

  setContentView(img);

  }

  這樣,你拍到的照片就可以顯示在ImageView中了。當(dāng)然,你也可以保存這個Bitmap到文件。

  經(jīng)測試,SDK 1.5版中,測試出錯,大概是因為用的是模擬器吧,SDK 1.1版中,程序可以拍到照片,但是尺寸有點小,不知道為什么。這里,我沒有懷疑自己,應(yīng)該是Android的bug,也或者是我沒有找在設(shè)置圖片尺寸的 地方,如果哪位找到了解決辦法,也麻煩通知我一下,我的郵箱就在下面。

  Android學(xué)習(xí)心得(附1)——屏幕顯示設(shè)置程序中默的顯示是帶有標題欄和系統(tǒng)信息欄的,有的時候,這很影響程序界面的美觀。手機默認的是豎屏,或與感應(yīng)器狀態(tài)相關(guān),為了某種效果,我們的程序需要限制使用橫屏或豎屏。以下的代碼就解決了上述問題。

  //設(shè)置為無標題欄

  requestWindowFeature(Window.FEATURE_NO_TITLE);

  //設(shè)置為全屏模式

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

  //設(shè)置為橫屏

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

  Android學(xué)習(xí)心得(附2)——Intent參數(shù)傳遞當(dāng)Activity與Activity/Service(或其它情況)有時與要進行參數(shù)傳遞,最常用也是最簡單的方式就是通過Intent來處理。

  看如下代碼:

  Intent intent = new Intent(...);

  Bundle bundle = new Bundle();

  bundle.putString("NAME", "zixuan");

  intent.putExtras(bundle);

  context.startActivity(intent); 或 context.startService(intent);

  當(dāng)然,有傳送就有接收,接收也很簡單,如:

  Bundle bunde = intent.getExtras();

  String name = bunde.getInt("NAME");

  當(dāng)然參數(shù)KEY要與傳送時的參數(shù)一致。

  Android學(xué)習(xí)心得(附3)——獲取手機號/手機串號在j2me中,根本沒有辦法獲取用戶的手機號碼,就連獲取手機串號(IMEI)都基本上無法實現(xiàn),然后在android手機上一切都是如此的簡單,看代碼:

  TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

  String imei = tm.getDeviceId();

  String tel = tm.getLine1Number();

  看來,android的確加速了j2me的消亡。

  Android學(xué)習(xí)心得(附4)——振動器總感覺手機上的振動器沒有多大用處(當(dāng)然靜音模式下的振鈴很有用),但還是順帶著說一下吧,只有兩行代碼:

  1、獲取振動服務(wù)的實例

  Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

  2、設(shè)置振動時長,單位當(dāng)然也是ms

  vibrator.vibrate(1000);

  如果你覺得這樣過去單調(diào)的話,可以設(shè)個節(jié)奏:

  vibrator.vibrate(new long[]{10, 100, 20, 200}, -1);

  兩個參數(shù),習(xí)慣告訴我第一個是節(jié)奏,第二個是重復(fù)次數(shù),可事實并沒有這么簡單,我翻譯不好,大家還是看原文吧:

  public void vibrate (long[] pattern, int repeat)

  pattern: an array of longs of times to turn the vibrator on or off.

  repeat: the index into pattern at which to repeat, or -1 if you don't want to repeat.

  google喜歡弄些技巧,我卻覺得這里有點弄巧成拙了。

  Android學(xué)習(xí)心得(附5)——鬧鐘最近看了一下Android的鬧鐘管理類(AlarmManager),真不錯誤,強大又簡單,代碼如下:

  1、建立一個AlarmReceiver繼承入BroadcastReceiver,并在AndroidManifest.xml聲明

  public static class AlarmReceiver extends BroadcastReceiver {

  @Override

  public void onReceive(Context context, Intent intent) {

  Toast.makeText(context, "鬧鐘提示:時間到!", Toast.LENGTH_LONG).show();

  }

  }

  2、建立Intent和PendingIntent,來調(diào)用目標組件。

  Intent intent = new Intent(this, AlarmReceiver.class);

  PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

  3、設(shè)置鬧鐘

  獲取鬧鐘管理的實例:

  AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

  設(shè)置單次鬧鐘:

  alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5*1000), pendingIntent);

  設(shè)置周期鬧鐘:

  alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10*1000), (24*60*60*1000), pendingIntent);

  搞定!當(dāng)然這里鬧鐘的響應(yīng)處理只是用的文字,你可以播放聲音,或都用更復(fù)雜的一系統(tǒng)通知,在這里你就是上帝,一切由你做主。

  android學(xué)習(xí)心得篇三

  Android 學(xué)習(xí)已有一年半有余,先后做過兩款游戲、三款應(yīng)用和搭建一臺服務(wù)端,也了解過一些Android相關(guān)的源碼(JDK、SDK和NDK)

  后來想學(xué)深入點,搞過兩款開源項目(LGame 和 AChartEngine),還發(fā)布過自己的開源項目(wsi-lgame-pro 和 mobilesurvey),現(xiàn)在總結(jié)一下自己的經(jīng)驗和心得

  Android 入門

  一開始學(xué)Android,主要看了三本書

  《Android開發(fā)教程&筆記》,講解了Android起源、Android框架、環(huán)境搭建、簡單Demo等開發(fā)入門知識,對Android概念有個感性認識,知道Android是個什么東東

  《Android應(yīng)用開發(fā)揭秘》,重點練習(xí)了各種控件的使用,圖片操作和動畫,數(shù)據(jù)存儲的各種方式和使用場景,以及網(wǎng)絡(luò)通信,其中我感覺這本書對網(wǎng)絡(luò)通信部分講得最好

  《Android 3D游戲開發(fā)》,重點看了View和SurfaceView繪制圖片的原理和流程,用來做游戲開發(fā),后來把隨書的幾個示例都調(diào)試通了,熟悉了各個資源文件夾的作用

  《Android核心技術(shù)與實例詳解》,其實這本書就沒啥核心技術(shù),也都是一些應(yīng)用層的基礎(chǔ)知識,重點是對手機通信、桌面組件、傳感器和google服務(wù)講得比較全面

  就這樣高強度學(xué)習(xí)了將近一個月,就算Android入門了,當(dāng)時都是在Ubuntu環(huán)境下搭建和開發(fā)的,在練習(xí)和學(xué)習(xí)過程中,有哪不懂就上網(wǎng)查,在此推薦 stackoverflow

  Android 進階

  android入門后,只會照著別人的葫蘆來畫瓢,即沒有設(shè)計思想,也沒有自主原創(chuàng)的代碼,不好不好

  于是乎,進了公司跟著項目走,用項目來驅(qū)動自己去學(xué)習(xí)和提高

  公司是1+1開發(fā)模式,即1個美工 + 1個工程師,負責(zé)完成一個項目(主要是游戲開發(fā)),就完全需要自己設(shè)計游戲的布局、邏輯,以及各種動畫,來增強用戶體驗的效果

  當(dāng)時主要是看Android官方的SDK API文檔、中文API文檔、 JDK源碼,對有些感念不清楚,就上論壇去找答案,如CSDN、ITEye、IBM、知乎,或者去啃g(shù)oogle 官方的文檔

  Android 高級

  在后來,掌握了常用控件、view、surfaceview使用方式,知道怎樣去適配不同屏幕后,每天就是重復(fù)的工作,堆砌代碼,難以進一步去提升自己

  于是就自己給自個找點事干,自定義控件,如對話框背景等,或去google code找些開源的代碼下來研究,學(xué)習(xí)人家的設(shè)計思想、模塊功能的劃分、代碼組織結(jié)構(gòu)等知識

  這個過程中,涉及到的知識比較多,如版本管理工具SVN、Git、Mercurial,如設(shè)計模式的思想,如怎樣構(gòu)建通用的開源應(yīng)用框架(考慮sdk1.5等版本),如何適用在不同屏幕分辨率的手機上等等

  學(xué)習(xí)中會不斷遇到一個又一個新的問題,因此需要不斷去查資料、再學(xué)習(xí)各種工具,逐步積累,潛移默化中自己掌握的知識和工具就多了,眼界也開闊了

  這里推薦幾個進階的好書:

  《Android技術(shù)內(nèi)幕.系統(tǒng)卷》,此書與《Android應(yīng)用開發(fā)揭秘》對應(yīng)的系統(tǒng)篇,也是由楊豐盛著,主要講解Android內(nèi)部底層的實現(xiàn),涉及到Linux、硬件驅(qū)動和匯編

  老羅的博客,講解Android底層的各個模塊比較詳盡、透徹,我有事沒事會去訪問、溜達,學(xué)習(xí)一些底層的實現(xiàn),讓自己增長一點見識,這樣對理解應(yīng)用層會有幫助

  Android 開源

  學(xué)習(xí)編程,最好的最快的方式,就是先閱讀大量源代碼,學(xué)習(xí)、借鑒,吸收,拿來主義,融會貫通,再加工,化為己用 —— 師夷長技以自強 ^_^

  這里推薦幾個比較好的開源社區(qū):

  google code(google 開源社區(qū),包含google自己的開源項目,如chromium、gtest等,也包括其它的,如著名的MySQL、JavaScript、Python、...)

  github(版本工具Git進行管理維護,英文)

  oschina(開源中國,中文的開源社區(qū))

看了android學(xué)習(xí)心得還看:

1.android的學(xué)習(xí)心得

2.android培訓(xùn)心得體會

3.安卓的實訓(xùn)心得

4.android應(yīng)該如何學(xué)習(xí)

5.學(xué)習(xí)android的方法

74842 库伦旗| 永顺县| 扎鲁特旗| 蒲江县| 综艺| 年辖:市辖区| 镇坪县| 罗山县| 常德市| 永仁县| 巴林右旗| 甘德县| 舟曲县| 渝中区| 龙岩市| 四会市| 临泽县| 湟源县| 固安县| 山阳县| 深泽县| 崇阳县| 海南省| 永胜县| 区。| 渭源县| 南京市| 依安县| 富裕县| 洪洞县| 厦门市| 明水县| 辽阳市| 阿巴嘎旗| 佛学| 闻喜县| 宝应县| 手机| 江城| 临洮县| 浦北县|