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

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

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

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

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

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

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

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

  最基本的開(kāi)發(fā)環(huán)境配置、hello world等內(nèi)容網(wǎng)上很多,我這里不寫(xiě)了,我只把各功能點(diǎn)和注意事項(xià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、拍照

  ......

  還有其它更細(xì)的知識(shí)點(diǎn)介紹。

  (作者:子軒,郵箱:)

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

  @Override

  public void onDraw(Canvas canvas) {

  // 首先定義一個(gè)paint

  Paint paint = new Paint();

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

  // 設(shè)置顏色

  paint.setColor(Color.WHITE);

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

  paint.setStyle(Style.FILL);

  // 繪制一個(gè)矩形

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

  // 繪空心矩形

  // 設(shè)置顏色

  paint.setColor(Color.RED);

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

  paint.setStyle(Style.STROKE);

  // 繪制一個(gè)矩形

  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);

  }

  以上需要注意的有三點(diǎn):

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

  2、Style.STROKE和Style.FILL外邊的像素?cái)?shù)是有區(qū)別的,這點(diǎn)和java里一樣;

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

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

  SmsManager sm = SmsManager.getDefault();

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

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

  收短信稍稍復(fù)雜一點(diǎn),需要建立一個(gè)BroadcastReceiver,來(lái)監(jiān)聽(tīng)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);

  這樣便進(jìn)進(jìn)入呼叫界面了。

  接下來(lái)我們?cè)倏匆幌卤O(jiān)聽(tīng)電話狀態(tài)的功能。

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

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

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

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

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

  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();

  }

  }

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

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

  完整代碼如下:

  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)); //地理坐標(biāo)

  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、你要申請(qǐng)一個(gè)自己的apiKey;

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

  (作者:子軒,郵箱:)

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

  我們?cè)谏瞎?jié)的代碼中添加如下內(nèi)容:

  LocationManager lm;

  MyLocationListener locationListener;

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

  locationListener = new MyLocationListener();

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

  缺少M(fèi)yLocationListener吧?那我們就創(chuàng)建一個(gè)MyLocationListener,要實(shí)現(xiàn)LocationListener中的幾個(gè)方法,LocationListener的功能我就不用再說(shuō)了吧?

  我吧代碼貼出來(lái),一目了然。

  // 下面是從GPS獲取坐標(biāo)的監(jiān)聽(tīng),暫時(shí)沒(méi)有使用

  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) {

  }

  }

  注意事項(xiàng):

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

  <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眾所周知,移動(dòng)設(shè)備上的數(shù)據(jù)庫(kù)最成功的非SQLite莫屬了,Android上同樣是用SQLite,并且android提供了較為簡(jiǎn)單的API,用起來(lái)非常順手。

  看下面的代碼:

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

  SQLiteDatabase myDB = null;

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

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

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

  myDB.execSQL("........標(biāo)準(zhǔn)的SQL語(yǔ)句..........;");

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

  //查詢(表格和數(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ù)庫(kù)

  myDB.close();

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

  (作者:子軒,郵箱:)

  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();

  }

  音頻播放,就是這么簡(jiǎn)單。

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

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

  VideoView videoView = new VideoView(this);

  setContentView(videoView);

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

  videoView.requestFocus();

  videoView.start();

  ndroid學(xué)習(xí)心得(九)——多媒體錄制還是先看代碼,用一種最笨的方式實(shí)現(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,所以還要加點(diǎn)東西,看代碼:

  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);

  理論上是沒(méi)錯(cuò)的,可我用模擬器測(cè)試錄制視頻還是會(huì)報(bào)錯(cuò),G2已經(jīng)上市,看來(lái)是時(shí)候弄部真機(jī)了。

  (作者:子軒,郵箱:)

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

  try {

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

  startActivityForResult(i, Activity.DEFAULT_KEYS_DIALER);

  } catch (Exception e) {

  }

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

  當(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)然,你也可以保存這個(gè)Bitmap到文件。

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

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

  //設(shè)置為無(wú)標(biāo)題欄

  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í)與要進(jìn)行參數(shù)傳遞,最常用也是最簡(jiǎn)單的方式就是通過(guò)Intent來(lái)處理。

  看如下代碼:

  Intent intent = new Intent(...);

  Bundle bundle = new Bundle();

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

  intent.putExtras(bundle);

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

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

  Bundle bunde = intent.getExtras();

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

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

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

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

  String imei = tm.getDeviceId();

  String tel = tm.getLine1Number();

  看來(lái),android的確加速了j2me的消亡。

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

  1、獲取振動(dòng)服務(wù)的實(shí)例

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

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

  vibrator.vibrate(1000);

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

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

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

  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喜歡弄些技巧,我卻覺(jué)得這里有點(diǎn)弄巧成拙了。

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

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

  public static class AlarmReceiver extends BroadcastReceiver {

  @Override

  public void onReceive(Context context, Intent intent) {

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

  }

  }

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

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

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

  3、設(shè)置鬧鐘

  獲取鬧鐘管理的實(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í)已有一年半有余,先后做過(guò)兩款游戲、三款應(yīng)用和搭建一臺(tái)服務(wù)端,也了解過(guò)一些Android相關(guān)的源碼(JDK、SDK和NDK)

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

  Android 入門(mén)

  一開(kāi)始學(xué)Android,主要看了三本書(shū)

  《Android開(kāi)發(fā)教程&筆記》,講解了Android起源、Android框架、環(huán)境搭建、簡(jiǎn)單Demo等開(kāi)發(fā)入門(mén)知識(shí),對(duì)Android概念有個(gè)感性認(rèn)識(shí),知道Android是個(gè)什么東東

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

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

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

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

  Android 進(jìn)階

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

  于是乎,進(jìn)了公司跟著項(xiàng)目走,用項(xiàng)目來(lái)驅(qū)動(dòng)自己去學(xué)習(xí)和提高

  公司是1+1開(kāi)發(fā)模式,即1個(gè)美工 + 1個(gè)工程師,負(fù)責(zé)完成一個(gè)項(xiàng)目(主要是游戲開(kāi)發(fā)),就完全需要自己設(shè)計(jì)游戲的布局、邏輯,以及各種動(dòng)畫(huà),來(lái)增強(qiáng)用戶體驗(yàn)的效果

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

  Android 高級(jí)

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

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

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

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

  這里推薦幾個(gè)進(jìn)階的好書(shū):

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

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

  Android 開(kāi)源

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

  這里推薦幾個(gè)比較好的開(kāi)源社區(qū):

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

  github(版本工具Git進(jìn)行管理維護(hù),英文)

  oschina(開(kāi)源中國(guó),中文的開(kāi)源社區(qū))

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

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

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

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

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

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

74842 封开县| 沿河| 赞皇县| 玉屏| 渑池县| 遵义市| 加查县| 肥城市| 新晃| 通州区| 福海县| 秦安县| 临夏县| 阜阳市| 保山市| 乡城县| 射洪县| 乐业县| 东光县| 延津县| 达尔| 元谋县| 泰兴市| 汉源县| 湘西| 万源市| 堆龙德庆县| 武隆县| 东乡族自治县| 东源县| 金阳县| 潮州市| 松阳县| 阿拉尔市| 三穗县| 承德市| 吕梁市| 大名县| 句容市| 汉沽区| 安岳县|