ACM函数模板开源

今天平安夜,首先祝大家平平安安。

和众多Android工程师一样,我想写个好的app。

开发这个小应用,我也只是当时的一时兴起,为了提高我的开发速度,我用到了人家大牛写的仿小米启动页界面。

Android手机千千万万,要做到全部兼容是很难的,同学老是叫我更新,我都有点烦了,首先我做这个我没有一点收入可言,我没有在里面放任何广告。下载量高了,我也不会有一点钱,提交到市场那只是方便下载罢了。再者,我是二流学校。搞ACM的算法那肯定是远远不及人家那种一流学校的。

还有就是,我比较懒。这就是重点。

我也想更新啊,用html把看代码的界面在弄得漂亮一点(不仅可以看文字,还可以看图片。更多的是可以放大缩小,内容进行一个动态排版)我甚至想做推送呢,连接数据库,把内容动态更新,可是里面的内容我怎么跟新呢?自己写?还是百度?这些都是一个问题。

本想弄好就来写这篇文章的,可是一直没有写,知道为什么吗???还不是我懒,哈哈。很多时候写了一两个小东西,本想拿写出来分享一下的,更多的就是记录学习笔记。

哎,懒害死人啊。

你们也看到,我很久都没有写博客了。都是因为懒。。。而不是没有时间。

昨天把电脑拿去给大神除尘了,我给他钱,他始终都没有收,搞得我太不好意思了,打算明年自己买一套工具来自己搞吧,哈哈~

好了,我们直接奔主题:

系统环境:windows8标准版

开发环境:eclipse

使用的sdk版本:4.4

在这里我就不上传效果图片了,你们可以上应用宝或者360上下载到(ACM函数模板)。或者点击http://android.myapp.com/myapp/detail.htm?apkName=com.lxw.acm这里下载到手机上面运行。

我们先来看项目的工程结构:

很简单的,我就一个包搞定。

我把从百度整理来的资料都放在 assets这个文件里面。

来看看我的java代码文件目录:

其实我认为还可以更简。减少代码的冗余性嘛。

当时我害怕会出现activity没有被真正结束,而又被接着打开,然后可能会出现一些错误时,我就没有这样子做了,不过你们可以试试。

看看,里面的代码我均是用 txt的文件来保存的。然后使用Java的I/O流在把它们读出来就好了。

项目里面看代码的如何点击一个item就能够显现相应的标题,查看相应的代码呢?

如果这个一个item对应一个activity的话,那代码冗余性是很高的,里面估计有好几十个item,你就要做几十个对应的activity出来,到时候复制粘贴都能把你搞烦。

我是这样子解决这种问题的:看代码。简单得activity单项值传递

利用activity传值得方式。把我的文件名放在一个数组里面,正好listview里面item的也是从0开始,正好和我的数组下标一一对应,这样子我点击相应的item就能够把相应的值传过去,打开我看demo的那个activity。

下面来看开代码的这个activity,简单得不能再简单了,就是一个Java的I/O流。

public class One_01 extends Activity {
	private String content = "";
	private TextView tv;
	private TextView title;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.one_01);
		init();
	}
	void init() {
		Intent intent = getIntent();
		tv = (TextView) findViewById(R.id.tv1);
		title = (TextView) findViewById(R.id.title);
		title.setText(intent.getExtras().getString("title"));
		try {
			InputStream in = getAssets().open(
					intent.getExtras().getString("name"));
			content = In.inreader(in);
			in.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tv.setText(content);
	}
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		// Process.killProcess(android.os.Process.myPid());
		System.exit(1);
	}

	// @Override
	// public boolean onKeyDown(int keyCode, KeyEvent event) {
	// // TODO Auto-generated method stub
	// if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
	// //Process.killProcess(android.os.Process.myPid());
	// System.exit(1);
	// }
	// return true;
	// }
}

首先我们先做的就是 获取前一个activity传过来的值,然后对它进行处理,把它转换成我们需要的就行了。

其中,为了解决back之后这个activity处于pause状态,在打开时。会出现 现在的内容仅接着上个内容的后面的情况。

其实back之后我们的activity应该调用finish方法来自己销毁,但是它不是立即销毁,这得由系统决定,不是我们所能控制的。

所以我在back之后就把当前的activity进程给结束了。哈哈。

写了这么多,大家肯定还是最想要代码了。

不过在下载代码之前,我们先互相关注下微博好吧?

我的微博:奔跑的甩甩

关注肯定是有好处的,以后我将会在上面发表我的在编程路上的一切,因为在空间发 很多朋友都看不懂。毕竟他们不是这个专业的,不能怪他们。

源码来了,下载地址:请点击我

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

ACM函数模板开源的相关文章

c++知识点总结--函数模板

通用函数可变参模板 用于处理不限定参数的函数 showall(){//空函数,接口,最后结束递归 } template<typename T,typename... Args> void showall(T value,Args ...args){ cout<<value<<endl; showall(args); } template<typename T,typename ...Args> void showall(const T &value,

函数模板特化

#include <iostream> template <typename T> T max(T x, T y) { return x > y ? x : y; } //函数模板特化 template <> const char* max(const char* x, const char* y){ return strcmp(x, y) > 0 ? x : y; } int main(){ std::cout << max(1, 2); st

C++函数模板

C++函数模板允许以任意类型的方式来定义函数.例如,可以这样建立一个交换模板: template <typename AnyType> void Swap(AnyType &a, AnyType &b) { AnyType temp; temp = a; a = b; b = temp; } 在标准C++98添加关键字typename之前,C++使用关键字class来创建模板.也就是说,可以这样编写模板定义: template <class AnyType> voi

第56课 函数模板的概念和意义

1. 发散性问题:C++中的几种交换变量的方法 (1)宏代码块 VS 函数 [编程实验]变量的交换 #include <iostream> #include <string> using namespace std; //宏定义代码块 #define SWAP(t, a, b) do { t c = a; a = b; b = c; }while(0); //定义函数方式 void Swap(int& a, int& b) { int c = a; a = b; b

函数模板友元

;函数模板友元 (即一个类友元的是一个全局函数模板而不是原先的全局函数,需注意类模板传入的类型) 标准带类模板参数 friend void fun1(A<T>& obj); 指定这个A<T>类型的模板有一个这样的朋友函数,那么也就意味着这个函数内部只能由A<T>类型的模板 实例化的类 实例化出来的对象可以访问这个对象的数据成员,不是这个类型的类模板就不能访问 ;code template<typename T> class A{ public: A(

【C/C++学院】(11)泛型编程/函数模板/类模板

1.泛型编程基础 #include "iostream" using namespace std; void swap(int &a, int &b) { int c; c = a; a = b; b = c; } void swap(float &a, float &b) { float c; c = a; a = b; b = c; } void main() { int a = 1, b = 2; swap(a, b); float a1 = 1,

函数模板的定制(字符串的比较)

#include<stdio.h> #include<iostream> #include<wchar.h> #include<cstdlib> #include<iomanip> using namespace std; template<class T>           //新定义的类型 T min3(T a, T b, T c) { T min; if(a<b && a<c) { min=a; }

快速排序函数模板

这段时间对STL比较痴迷,遂做了些许研究,今天把原来写过的快速排序算法用模板函数重新写了一下,把代码贴出来分享一下 有两个版本,版本二可以传入比较器,自己定义排序规则 快速排序算法思路: 1)从序列中选出一个元素作为基准: 2)重排序列,所有比基准小的元素位于基准左侧,比基准大的元素位于基准右侧,和基准相等的元素位于任意一侧,此过程称为分组: 3)以递归的方式对小于基准的分组和大于基准的分组分别进行排序. #include <vector> #include <list> //打印

C++函数模板的使用

函数模板: 函数模板是函数的蓝图或处方,编译器使用它生成函数系列的新成员.新函数在第一次使用时创建.从函数模板中生成的函数称为该模板的一个实例或模板的实例化.函数模板的开头是关键字template,表示这是一个模板.其后是一对尖括号,它包含了参数列表.在使用从模板中生成的函数之前,必须确保把声明(即原型)或模板的定义放在源文件中.模板的实例化只生成一次.如果后续的函数调用需要同一个实例,就会调用已经创建好的实例,即使同一个实例在不同的源文件中生成,程序也仅会包含该实例定义的一个副本.使用时需要注