今天平安夜,首先祝大家平平安安。
和众多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进程给结束了。哈哈。
写了这么多,大家肯定还是最想要代码了。
不过在下载代码之前,我们先互相关注下微博好吧?
我的微博:奔跑的甩甩
关注肯定是有好处的,以后我将会在上面发表我的在编程路上的一切,因为在空间发 很多朋友都看不懂。毕竟他们不是这个专业的,不能怪他们。
源码来了,下载地址:请点击我