最近即将开始各类招聘,大三狗也要出去寻找实习了,在这里整理一下以前作过的一下小东西,就按照时间顺序来吧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参考了农民伯伯一个开源控件的写法
——————————————————————————————————————————————————————————————————
未完待续