最近即將開始各類招聘,大三狗也要出去尋找實習了,在這裏整理一下以前作過的一下小東西,就按照時間順序來吧html
----------------------------------------------------------------------------------------------------------------java
一.新生助手(2013.06)android
這個項目實在大一下學期的時候作的第一個android項目程序員
項目簡介web
實驗室內部活動,一個月的時間,兩個開發,兩個美工設計完成而且實現一個校園導航類應用sql
項目介紹數據庫
第一款本身參與設計並完成開發的應用,在開發中,第一次參與團隊配合,第一次瞭解設計——開發——測試——發佈的流程服務器
項目收穫網絡
1.app頁面切換嚴重卡頓(當時測試用手機爲魅族MX),而且會有崩潰現象app
經測試發現,出現該現象緣由爲app中大量採用圖片且圖片文件大小偏大,後通過處理,將單張圖片大小控制在10K之內,解決此問題
2.在團隊合做時候,拼接模塊很困難會出現大量bug
提早規定好命名規範,雙方同一命名,極大限度的減小對接出現的問題
項目成果
該app沒有進入市場進行分發,由於作的實在是太爛了,在校園內進行過一次推廣,大概使用量在四五十人左右
二.學生周知(2013.05)
項目簡介
面向學院學生進行開發,方便你們查看學院通知的信息類app
項目介紹
在13年5月想到這個想法,可是由於當時水平不夠其實拖到了13年10月份纔開始着手寫,這款應用幾乎沒有美工配合,使用android4.0之後的默認樣式
該app有兩個數據來源
1.推送到達的內容在數據庫中存取
2.app主動抓取內容,解析後展現並放進數據庫
在app中第一次使用推送,最初使用百度推送,後由於教育網的網絡環境問題致使推送到達時延比較大,所以推送平臺前後遷移三個平臺(百度——>個推——>信鴿)
在app中使用jsoup進行html代碼解析
使用SQLite進行數據存儲,藉此整理了sqlite的操做類
使用handler機制進行APP UI界面的更新
該app總共通過3次大規模的迭代更新
1.將推送由百度遷移至個推平臺
2.重構app,重作ui界面,在保持原有功能不變的狀況下,重作界面,,添加動畫效果,但這個版本設計與開發主要由學弟完成
3.將推送遷移至信鴿平臺
項目收穫
1.在本身開闢的線程中不能對控件進行操做,UI控件必須在主線程中進行操做
2.使用過國內經常使用的推送平臺服務,可以快速接入
3.整理了數據庫操做類,能夠快速在其餘代碼中使用
package com.android.db; import java.util.ArrayList; import java.util.List; import com.android.adapter.Messageg; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelpter extends SQLiteOpenHelper { private static String DATABASE_NAME = "sql"; private static String TABLE_NAME = "data_table"; private static String TITLE = "title"; private static String TIME = "time"; private static String URL = "url"; private static String FROM = "fromuser"; @SuppressWarnings("unused") private final static String CHAT_ID = "id";// 主鍵 public DBHelpter help; public DBHelpter(Context context) { super(context, DATABASE_NAME, null, 1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String sql = "CREATE TABLE if not exists data_table ( id INTEGER PRIMARY KEY AUTOINCREMENT, fromuser TEXT,time TEXT, title TEXT, url TEXT);"; db.execSQL(sql); System.out.println("data has been created"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public void Delete() { SQLiteDatabase db = this.getWritableDatabase(); String sql = "DELETE FROM data_table"; db.execSQL(sql); System.out.println("data has been delete"); } public void Insert(Messageg messageg) { SQLiteDatabase db = this.getWritableDatabase(); String sql = "select * from data_table where url ='" + messageg.GetUrl() + "'"; Cursor cursor = db.rawQuery(sql, null); System.out.println(cursor.getCount()); if (cursor.getCount() == 0) { ContentValues value = new ContentValues(); value.put(TITLE, messageg.GetTitle()); value.put(TIME, messageg.GetTime()); value.put(URL, messageg.GetUrl()); value.put(FROM, messageg.GetFrom()); long id = db.insert(TABLE_NAME, null, value); System.out.println("has been insert in db line " + id); } else { System.out.println("has been insert in db "); } } public List<Messageg> findlist() { List<Messageg> messagegs = new ArrayList<Messageg>(); SQLiteDatabase db = this.getReadableDatabase(); String sql = "select * from data_table order by url asc"; Cursor cursor = db.rawQuery(sql, null); System.out.println("cursor num is " + cursor.getCount()); cursor.moveToFirst(); if (cursor.getCount() > 0) { for (int i = 0; i < cursor.getCount(); i++) { Messageg messageg = new Messageg(); messageg.SetTitle(cursor.getString(cursor.getColumnIndex(TITLE))); messageg.SetTime(cursor.getString(cursor.getColumnIndex(TIME))); messageg.SetFrom(cursor.getString(cursor.getColumnIndex(FROM))); messageg.SetUrl(cursor.getString(cursor.getColumnIndex(URL))); messagegs.add(messageg); cursor.moveToNext(); } return messagegs; } else { return null; } } }
4.在開發中學習了異步加載框架AsyncTask,而且同時針對網絡鏈接進行了必定的用戶體驗優化
5.第一個聯網而且投放商店的app,累計下載量在100+
項目結果
初版本,下載地址:http://www.wandoujia.com/apps/com.android.dutxuesheng(如今由於推送服務器遷移,本版本推送功能關閉)
第二版本下載地址:http://www.wandoujia.com/apps/com.ranapp.hello(第二個版本我不是主要的程序員)
1 package com.yitaoapp; 2 3 import android.content.Context; 4 import android.util.AttributeSet; 5 import android.webkit.WebView; 6 import android.widget.ProgressBar; 7 8 9 public class ProgressWebView extends WebView { 10 11 private ProgressBar progressbar; 12 13 public ProgressWebView(Context context, AttributeSet attrs) { 14 super(context, attrs); 15 progressbar = new ProgressBar(context, null, 16 android.R.attr.progressBarStyleHorizontal); 17 progressbar.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 18 3, 0, 0)); 19 addView(progressbar); 20 21 setWebChromeClient(new WebChromeClient()); 22 } 23 24 public class WebChromeClient extends android.webkit.WebChromeClient { 25 @Override 26 public void onProgressChanged(WebView view, int newProgress) { 27 if (newProgress == 100) { 28 progressbar.setVisibility(GONE); 29 } else { 30 if (progressbar.getVisibility() == GONE) 31 progressbar.setVisibility(VISIBLE); 32 progressbar.setProgress(newProgress); 33 } 34 // System.out.println("&&&&&&&" + view.getUrl()); 35 super.onProgressChanged(view, newProgress); 36 } 37 38 } 39 40 @Override 41 protected void onScrollChanged(int l, int t, int oldl, int oldt) { 42 LayoutParams lp = (LayoutParams) progressbar.getLayoutParams(); 43 lp.x = l; 44 lp.y = t; 45 progressbar.setLayoutParams(lp); 46 super.onScrollChanged(l, t, oldl, oldt); 47 } 48 }
該webview參考了農民伯伯一個開源控件的寫法
——————————————————————————————————————————————————————————————————
未完待續