我的項目經歷

最近即將開始各類招聘,大三狗也要出去尋找實習了,在這裏整理一下以前作過的一下小東西,就按照時間順序來吧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(第二個版本我不是主要的程序員)

 

 

3、億淘商城

 
項目說明
大連某公司外包項目,使用hybrid app 實現,電商導購類應用
 
項目介紹
1.首次進行hybrid app 開發,採用webview搭載頁面內容,使用本地框架完成導航功能並實現推送功能。
2.在項目中,本身重寫了帶加載條的webview控件以實現顯示進度條的需求
 
 
項目收穫
1.初次接觸hybrid app開發,初步瞭解該開發模式的開發流程以及組成部分
2.拓展webview控件,使其實現進度條的需求
3.初次使用個推推送平臺
 
webview代碼以下

 

 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 }
View Code

 

該webview參考了農民伯伯一個開源控件的寫法

 

  

——————————————————————————————————————————————————————————————————

未完待續

相關文章
相關標籤/搜索