【Android】 分享一个完整的项目,适合新手!

写这个app之前是因为看了头条的一篇文章:http://www.managershare.com/post/155110,然后心想要不做一个这样的app,让手机计算就行了。也就没多想就去开始整了。

项目用到了三个开源包:

一个是图片加载:https://github.com/nostra13/Android-Universal-Image-Loader

使用方法:

1.在Appliction的onCreate里初始化

/**
	 * 初始化imageLoader
	 */
	public void initImageLoader() {
		File cacheDir = StorageUtils.getCacheDirectory(getApplicationContext());
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
				getApplicationContext())
				.memoryCache(new LruMemoryCache(5 * 1024 * 1024))
				.memoryCacheSize(10 * 1024 * 1024)
				.discCache(new UnlimitedDiscCache(cacheDir))
				.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
				.build();
		ImageLoader.getInstance().init(config);
	}

	public DisplayImageOptions getOptions(int drawableId) {
		return new DisplayImageOptions.Builder().showImageOnLoading(drawableId)
				.showImageForEmptyUri(drawableId).showImageOnFail(drawableId)
				.resetViewBeforeLoading(true).cacheInMemory(true)
				.cacheOnDisc(true).imageScaleType(ImageScaleType.EXACTLY)
				.bitmapConfig(Bitmap.Config.RGB_565).build();
	}

  2.使用时调用:

ImageLoader.getInstance().displayImage(
					avatarUrl,
					holder.mImage,
					MyApplication.getInstance().getOptions(
							R.drawable.user_icon_default_main),
					new SimpleImageLoadingListener() {
						@Override
						public void onLoadingComplete(String imageUri,
								View view, Bitmap loadedImage) {
							super.onLoadingComplete(imageUri, view, loadedImage);
						}
					});

一个是下拉刷新:https://github.com/johannilsson/android-pulltorefresh

使用方法:

// 设置PullToRefresh
		mListView.setMode(Mode.BOTH);
		mListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
			// 下拉Pulling Down
			@Override
			public void onPullDownToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				String label = DateUtils.formatDateTime(MainAct.this,
						System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
								| DateUtils.FORMAT_SHOW_DATE
								| DateUtils.FORMAT_ABBREV_ALL);
				refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
				mListView.setMode(Mode.BOTH);
				pullFromUser = true;
				mRefreshType = RefreshType.REFRESH;
				pageNum = 0;
				lastItemTime = getCurrentTime();
				//获取数据
				fetchData();
			}

			// 上拉Pulling Up
			@Override
			public void onPullUpToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				// 上拉的时候添加选项
				mRefreshType = RefreshType.LOAD_MORE;
				//获取数据
				fetchData();
			}

		});
		actualListView = mListView.getRefreshableView();
		actualListView.setFastScrollEnabled(true);
		mEntities = new ArrayList<RankEntity>();
		mAdapter = new MainListAdapter(MainAct.this, mEntities);
		actualListView.setAdapter(mAdapter);
		if (mEntities.size() == 0) {
			fetchData();
		}
		mListView.setState(State.RELEASE_TO_REFRESH, true);

  

一个是向导流程:https://github.com/TechFreak/WizardPager

这个源码包有修改过,只使用了单选这个Fragment!内容比较多想看的下载代码吧

项目虽然很渣很没新意,完成是出于一个瞬间的念头,开发完成后自己测试都觉得无聊,40多个选择,点到手抽筋!然后又加上了一个自动翻页的开关!

apk下载:http://openbox.mobilem.360.cn/index/d/sid/2313363

源代码下载:http://www.eoeandroid.com/thread-555168-1-1.html

QQ:471497524

微信:519659991

新开的交流群,欢迎广州的开发者加入: http://jq.qq.com/?_wv=1027&k=cgvXpA,另外群里有一个HR需要找一位1年工作经验以上,能够独立开发App的安卓哥,正在找工作的一定要加这个群阿

最后附截图:

时间: 2024-08-06 16:01:16

【Android】 分享一个完整的项目,适合新手!的相关文章

一个完整的项目中,需要的基本gulp

一个完整的项目需要使用gulp的多种功能,包括—— (1)加载各种需要的插件 var concat=require('gulp'); var clean=require(''gulp); 等等.需要的插件放在指定的module文件夹下面,然后再修改文件中修改. (2)启动任务和完成部署任务 我们想要在文件进行操作之前,首先将文件的环境弄好,例如,想把a放在一个目录下,但是这个目录下面有着很多的不需要的文件,所以我们首先需要将这些文件删除—— gulp.task('cleanTask',funct

“全栈”工程师笔记/记一个完整的项目流程

引语:相信很多人都自认为自己是个全栈工程师,不管有没有验证过,我也不例外.心中总有一种傲气,事情都能做,只是做得好不好,时间够不够的问题!所以,对很多事情,我其实是一点不怕的,随着时间的推移,人总是应该要进步的,去做一些没做过的事,才对得起成长二字! 刚好上上个月,公司有一个新的项目需求,需要做一个全新的系统,但是看起来也不难,所以任务就交给了我,我可以说我是这个项目负责人吗?应该是可以的!但是,最开始就已经存在了一些坑,等着我去跳,就连最开始过需求的时候,我也不在场!不过,最终,项目也终于交到

一个完整JavaWeb项目历程02 — Hello Servlet

前言 前一篇引入了很多概念性的东西,各种百度谷歌拼起来的一个Hello JavaWeb工程:那又有什么关系呢,只要在学习每天都会接触新概念的东西:尽管做就是了,概念不清楚又有什么关系.目的只有一个:做 一个完整的JavaWeb项目. 一.创建JavaWebServlet项目 请参考前一篇 二.创建一个HelloServlet类 其实包可以不用单独去创建,在创建Servlet的时候,Java package一栏填写包名:com.fwbc.servlet就可以自动创建包. 三.创建一个hello.j

Android一个完整的项目转成SDK提供给第三方嵌入

1.项目导出Apk反编译到res/values/目录下找到'public.xml'和'ids.xml'两个文件: 2.项目设置为libray项目: 3.项目"Clean...",如果出现switch语句错误,一般要修改成if-else: [选择switch整个语句-右键-Quick Fix-Convert 'switch' to 'if-else'] 4.拷贝上面提到的'public.xml'和'ids.xml'两个文件到项目res/values目录下,这一步是定义资源ID,防止在Li

android 分享一个处理BaseAdapter,getView()多次加载的方法

一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及GridView等UI显示组件,如果listView列表的数据项过多,如1000项,我们如果把这1000项全部放到界面中去,软件直接内存溢出了,BaseAdapter刚才可以帮我们解决这个问题,BaseAdapter工作原理图如下: 从上图中看出,如果我们有1000个数据项,实际显示的只有7项,其它的缓存

Android 分享一个简单有趣的动画效果

本期开始于大家分享几个简单又有趣的动画 效果图: 效果还是不错的,而实现起来也并没有多大的难度,上代码喽 public int id[] = { R.drawable.fengjing_1, R.drawable.fengjing_2, R.drawable.fengjing_3, R.drawable.fengjing_4, R.drawable.fengjing_5, R.drawable.fengjing_6 }; public String list[] = { "一", &q

简要说说一个完整机器学习项目的流程

1 抽象成数学问题 明确问题是进行机器学习的第一步.机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的.这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题. 2 获取数据 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限.数据要有代表性,否则必然会过拟合.而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距.而且还要对数据的量级有一个评估,多少个样

Android Studio 一个完整的APP实例(附源码和数据库)

前言: 这是我独立做的第一个APP,是一个记账本APP. This is the first APP, I've ever done on my own. It's a accountbook APP. 源码: https://github.com/AnneHan/accountBook 欢迎satr or fork 备注: APP中所涉及到的图标请勿商用 效果图 (备注:在把图片制作成gif时,图片的质量受损,所以最终呈现出来的gif图片,背景变得有些模糊) 开发环境 IDE:Android

android:分享 一个非常强大的LOG开关---Log.isLoggable

1.API亮点: 此API能够实现不更换APK.在出问题的手机上就直接能抓到有效log,能提升不少工作效率. 2.API介绍 近期在解决短信问题时.看到一个非常强大的LOG开关---Log.isLoggable 1. if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) { 2.     Log.v(TAG, "Creating TransactionService"); 3. } 进入framework中查看isLoggable方法