第一篇:Android实训报告
時間過得飛快,一週的實訓馬上就要結束了。在這次實訓中我不僅學習了相關的專業知識,而且讓我對Android系統有了一個更加深入的瞭解,它也是我們專業的一個新的方向並且发展很迅速,為了今後的发展我們還需不断努力學習!我國的信息產業還很落後,隨著社會的發展及國家的支持,手機上網必然是社會發展的趨勢,到時候手機上網將無處不在!我對Android系統的瞭解只停留在應用的層次上,對於更深層次的瞭解是很少的,通过這次實訓讓我對Android系統有了一個更深層次的瞭解,同時它也使我意識到無論朝哪個方向發展,主要還是得扎實、深刻的學習,同時也得不斷努力探索。
IT業的發展速度一直都是相當驚人的,不想被社會淘汰,我們就必須不斷的學習,現在的社會不再是一勞永逸,其它行業也是如此,我们必須不斷的拿知識來武装自己,不然被淘汰那是肯定的!現在就業難的原因其實在於競爭的加剧,為了在競爭中取得成功,我們必須時時刻刻刻學習!
在Android編程過程中巩固熟悉了Java的編程。由於Android應用程序的開發離不開Java的支持,所以基礎的Java知識是必須的。Android系统是基於Linux的手機操作系統平臺,要深入學習Android,不僅僅是有Java和Android應用開發,必須要具備Linux,C/C++高級編程才能深入的涉及Android Framework和Android内核開發。成為Android開發的高素質人才。所以,在後續對Android的學習中可能会看一些較底層的書籍。
由於這次實訓時間較短,對於Android應用程序的高级编程學的很少,是這次實訓中的不足。要想開發一些好的應用程序,還需要更多的知識支持。在實訓時,遇到了很多平時沒有遇到或者沒有特别關注的問題。這些問題只有自己在實際開發中才能體會到並且解决。
通过對java以及Android的學習,讓我又學會了一門編程語言,這對於我以後的學習工作都會有很大的帮助。回顧以前所走的路,太多的是無奈和迷茫,這次实训就像是我人生道路上的航標,為我指明了前進的方向,使我對自己的前途充满了信心,同時也知道了自己的前進方向。
第二篇:Android实训报告
Android学院:****** 班级:****** 学号:****** 姓名:******
实训报告
目录
一、实训背景及目的要求.........................................................................................................................3 1.1背景简介.....................................................................................................................................3 1.2实训目的及要求...........................................................................................................................3
二、设计思路...........................................................................................................................................3 2.1设计题目.....................................................................................................................................3 2.2功能分析.....................................................................................................................................4 2.3模块划分.....................................................................................................................................4
三、设计实现及代码分析.........................................................................................................................4 3.1第一个Activity.............................................................................................................................4 3.1.1布局文件:main.xml:........................................................................................................4 3.1.2源代码文件:MainActivity.java............................................................................................7 3.2第二个Activity.............................................................................................................................8 3.2.1布局文件:result.xml..........................................................................................................8 3.2.2源代码文件:ResultActivity.java...........................................................................................9 3.3字符串资源文件:strings.xml......................................................................................................12 3.4程序清单文件:AndroidManifest.xml...........................................................................................13
四、程序功能测试及截图.......................................................................................................................14 4.1工程项目目录............................................................................................................................14 4.2程序运行界面:.........................................................................................................................14 4.3未填身高提示:.........................................................................................................................15 4.4计算示例:................................................................................................................................15
五、课程设计(实训)总结....................................................................................................................16
一、实训背景及目的要求
1.1背景简介
Android(读音:['ændrɔid])是一种以Linux为基础的开放源码操作系统,主要使用于便携设备,目前尚未有统一中文名称,中国大陆地区较多人使用安卓或安致。Android操作系统最初由Andy Rubin创办[5],最初只支持手机。2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟(Open Handset Alliance)开发改良,逐渐扩展到到平板电脑及其他领域上[6]。2010年末数据显示,仅正式推出两年的操作系统的Android已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智慧手机平台。采用Android系统手机厂商包括HTC、Samsung、Motorola、Lenovo、LG、Sony Ericsson等。1.2实训目的及要求
Android以Linux为核心的Android行动平台,使用Java作为编程语言。本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的Android应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。
目的:
1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。
2、培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。
3、培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容,包括:
1、确定开发的程序,收集和调查有关技术资料。
2、按软件工程步骤进行程序设计。
3、对完成的程序进行测试和完善。
4、完成课程设计报告。
二、设计思路 2.1设计题目
以Android系统的UI界面开发为基础,设计一个可以简单计算标准体重的应用程序,要求以2个Acitivity实现,第一个Activity作为输入界面,第二个Activity作为结果输出界面,具体实现细节自行设计。2.2功能分析
该设计题目要求实现可计算输出标准体重功能的应用程序。通过查阅资料可知,按照世界卫生组织推荐的计算标准体重的方法,需要获知的输入信息有性别、身高。故可在第一屏设置有单选框以确定性别,输入框以获取身高。另,为了增加程序的实用性,可再设一可选输入框,用来得到实际体重,与标准体重对比,给出用户一些健康提议。第二屏设置有结果输出显示区域与健康提示显示区域。
2.3模块划分
通过程序功能分析,可将程序划分为2个模块,即2个Activity:
第一个Activity:两个单选框(RadioButton)获取性别,一个输入框(EditText)获取身高,一个可选输入框(EditText)获取实际体重,一个按钮(Button)及一些提示文本。
第二个Activity:一个文本显示区(TextViw)显示计算结果,一个可选文本显示区(TextView)显示提示信息。
三、设计实现及代码分析 3.1第一个Activity 3.1.1布局文件:main.xml:
采用绝对布局,以实现控件精准显示;
RadioGroup包含两个RadioButton,以实现性别男女选择;
两个供输入的EditText限定了输入类型为numberDecimal,以确保只接收数字型数据。main.xml完整代码如下:
android:orientation=“vertical” android:layout_width=“fill_parent” android:layout_height=“fill_parent” > android:id=“@+id/tv1” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/tv1_t” android:textSize=“20sp” android:layout_x=“50px” android:layout_y=“25px” /> android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/tv_sex” android:layout_x=“50px” android:layout_y=“100px” /> android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/tv_tall” android:layout_x=“50px” android:layout_y=“150px” /> android:id=“@+id/rg” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:orientation=“horizontal” android:layout_x=“95px” android:layout_y=“90px” > android:id=“@+id/rb_male” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/male” /> android:id=“@+id/rb_female” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/female” /> android:id=“@+id/et_tall” android:layout_width=“100px” android:layout_height=“40px” android:layout_x=“100px” android:layout_y=“140px” android:inputType=“numberDecimal” /> android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:layout_x=“200px” android:layout_y=“145px” android:textSize=“20sp” android:text=“cm” />
Toast.makeText(MainActivity.this, R.string.tall_hint, Toast.LENGTH_SHORT).show();实现Activity之间跳转设置:
intent.setClass(MainActivity.this, ResultActivity.class);实现Activity之间数据封装传输: bundle.putDouble(“height”, height);bundle.putString(“sex”, sex);bundle.putString(“real”, real);intent.putExtras(bundle);MainActivity.java完整代码如下:
package com.halcyon;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.RadioButton;import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private RadioButton rb1 = null;private RadioButton rb2 = null;private EditText et = null;private EditText et_real = null;private Button bt = null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rb1 =(RadioButton)findViewById(R.id.rb_male);
rb2 =(RadioButton)findViewById(R.id.rb_female);
rb1.setChecked(true);
et =(EditText)findViewById(R.id.et_tall);
et_real =(EditText)findViewById(R.id.et_real);
bt =(Button)findViewById(R.id.compute);
//默认为男性选中
bt.setOnClickListener(this);}
} @Override
public void onClick(View v){
} // TODO Auto-generated method stub
/**事件响应代码,获取性别、身高,判断是否输入了实际体重 * 新建Intent对象用于Activity之间跳转,及传输输入的数据 * **/
if(et.getText().toString().length()==0){
} else {
}
double height = Double.parseDouble(et.getText().toString());String real = et_real.getText().toString();String sex = “";if(rb1.isChecked()){ } else{ } Intent intent = new Intent();intent.setClass(MainActivity.this, ResultActivity.class);
Bundle bundle = new Bundle();bundle.putString(”sex“, sex);bundle.putString(”real“, real);intent.putExtras(bundle);
this.startActivity(intent);
//存放数据,以封装传输
bundle.putDouble(”height“, height);sex = ”F“;sex = ”M“;Toast.makeText(MainActivity.this,//身高未填提示
R.string.tall_hint,//注册点击事件监听
Toast.LENGTH_SHORT).show();3.2第二个Activity 3.2.1布局文件:result.xml 绝对布局,三个TextView,内容用紫色显示,提示标号用绿色显示,以达到较醒目的感觉。result.xml完整代码如下:
xmlns:android=”http://schemas.android.com/apk/res/android“ android:layout_width=”fill_parent“ android:layout_height=”fill_parent“ android:layout_margin=”10px“> android:id=”@+id/tv_1“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:layout_x=”20px“ android:layout_y=”100px“ android:textSize=”20sp“ android:textColor=”#8855ff“ /> android:id=”@+id/tv_2“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:layout_x=”20px“ android:layout_y=”200px“ android:textSize=”20sp“ android:textColor=”#00ff00“ /> android:id=”@+id/tv_3“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:layout_x=”20px“ android:layout_y=”240px“ android:textSize=”20sp“ android:textColor=”#8855ff“ />
3.2.2源代码文件:ResultActivity.java 使用result.xml布局文件,获取intent,取得传入的数据信息,以男性:(身高cm-80)×70﹪=标准体重
女性:(身高cm-70)×60﹪=标准体重 的标准来计算标准体重,方法
private String getWeight(double height, String sex)实现此功能;
可根据用户是否输入了实际体重,来选择是否显示健康提示信息,方法 private void healthHint(double weight)实现此功能;
方法private String form(double d)实现数据格式化。ResultActivity.java完整代码如下:
package com.halcyon;
import java.text.NumberFormat;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;
public class ResultActivity extends Activity{
/**男性:(身高cm-80)¡Á70﹪=标准体重
* 女性:(身高cm-70)¡Á60﹪=标准体重
* **/
private TextView tv_1 = null;private TextView tv_2 = null;private TextView tv_3= null;private Intent intent = null;private Bundle bundle = null;private double height = 0;private String sex = ”“;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
tv_1 =(TextView)findViewById(R.id.tv_1);
tv_2 =(TextView)findViewById(R.id.tv_2);
tv_3 =(TextView)findViewById(R.id.tv_3);
intent = this.getIntent();
bundle = intent.getExtras();
height = bundle.getDouble(”height“);
sex = bundle.getString(”sex“);
tv_1.setText(this.getWeight(height,sex));
}
private String getWeight(double height, String sex){
} private void healthHint(double weight){
/*根据用户是否输入了实际体重来判断是否添加显示提示信息 * 如果输入了实际体重,按以下原则给用户以健康提示 * 标准体重正负10﹪为正常体重
* 标准体重正负10﹪~ 20﹪为体重过重或过轻 * 标准体重正负20﹪以上为肥胖或体重不足 * */
String result = ”“;String real = bundle.getString(”real“);if(real.equals(”“)){ } else {
double r = Double.parseDouble(real);double rate =(r-weight)/weight;if(rate>0.2){
//过胖
result = this.getString(R.string.very_fat);} else if(rate>=0.1&&rate<=0.2){
} else if(rate>-0.1&&rate<0.1){
} else if(rate>=-0.2&&rate<=-0.1){ } else if(rate<-0.2){
//过瘦
result = this.getString(R.string.very_thin);
//瘦
result = this.getString(R.string.thin);
//正常
result = this.getString(R.string.normal);
//胖
result = this.getString(R.string.fat);result = ”“;double weight = 0;String result = ”“;if(sex.equals(”M“)){
} else {
} healthHint(weight);return result;weight =(height-70)*0.6;result = ”这位女士,n妳的标准体重为“+form(weight)+”公斤。n“;weight =(height-80)*0.7;result = ”这位先生,n你的标准体重为“+form(weight)+”公斤。n“;
}
}
} } tv_2.setText(getString(R.string.hint));tv_3.setText(result);private String form(double d){
}
//格式化数据输出
String str = NumberFormat.getInstance().format(d);return str;3.3字符串资源文件:strings.xml 在一个Android工程中,我们可能会使用到大量的字符串作为提示信息。这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。
在代码中我们使用Context.getString()方法,通过传递资源ID参数来得到该字符串,也可以在其他资源文件中引用字符串资源,引用格式为:”@string/字符串资源名称。
本程序所引用的strings.xml内容为:
它包含了组成应用程序的每一个组件(活动、服务、内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。
因本程序使用了2个Activity,故对AndroidManifest.xml有一定的修改,内容如下:
package=“com.halcyon” android:versionCode=“1” android:versionName=“1.0”> android:label=“@string/app_name”>
四、程序功能测试及截图 4.1工程项目目录
4.2程序运行界面:
4.3未填身高提示:
4.4计算示例:
五、课程设计(实训)总结
通过本次实训:
1)练习、巩固了所学Java理论知识,提示了编程技巧;
2)体验到利用网络查找文档、解决问题的便利;
3)有幸了解到Android开发平台已及Android程序设计思想与方法;
4)开拓了视野,了解到计算机应用的广泛性,为用计算机解决实际问题打下了基础。
第三篇:Android 实训总结
Android实训总结
——XXXX 三周的Android 实训,已接近尾声。在这短暂的三周之内,有成功、有失败;有喜悦、有辛酸。在实训老师的带领下,我学会了很多。我们小组在实训老师的协助下最终成功的完成实训项目。
实训前二周,由于我在java基础方面的知识比较薄弱,学习重点放在了java基础学习上,兼顾android学习。Java基础学习: 内容:
(1)1.bean-实体类分析。2.功能分析。3.语义模型、关系模型、界面模型、流程图。4.代码分析、DAO接口实现。
(2)完成老师每日给的java 基础作业,达到复习的目的。每日老师给的练习都有针对性,认真的完成练习,很好的达到了复习java基础的目的。成果: 能针对一个简单 java 或Android 项目,(1)分析出对象、实体类,元数据(2)功能分析 并画出对应的功能界面
(3)数据库分析: 作出语义模型、关系模型、界面模型、流程图(4)进行代码分析,并实现DAO。
独立完成本次项目的代码框架、DAO接口以及DAO实现.Java基础作业
Android学习: 内容:
(1).以新闻客服端为例,讲解了android开发的一个典型流程。
(2).android 如何调试 如何使用log类inf(i)、debug(d)、error---logcat
(3).android需要整个应用范围访问某类数据(session--user)
Application 的使用 A,静态变量(单例模式)
B,复写android Application app = getApplication()app.setxxx()appsetxxx()4.MVC 编辑表单和添加表单公用
(5).android五大布局【LinearLayout、FrameLayout、AbsoulteLayoutRelativeLayout和TableLayout】 主要讲解了LinearLayout、FrameLayout,LinearLayout---权重Layout_weight、Layout_grayout(6)Intent 页面的跳转,值传递,获取上下文。
(7)数据库操作【以新闻客服端--Category 新闻类 为例】:
1.创建数据库和表,进行数据初始化
2.对表的 增删改查 操作 3.游标Curser 的使用。
(6)项目开发:熟悉项目开发流程,能独立完成简单的项目开发。
成果:
练习实现简单的页面布局,独立完成新闻客服端的开发流程---在原有的基础上扩展业务。
最后一周,项目开发 我们小组抽取的项目是----------个人健康卫士
个人独立完成的模块:
1、代码框架
2、实体类分析、父类方法重写、构造方法。
3、DAO 接口实现,提供数据。
单元测试,对所有DAO 接口,方法进行测试并编译通过。
4、登录、注册实现。
异常处理:
A、登录提交时,用户名、密码不能为空,否则不与提交。
数据库返回登录信息,处理登录成功与否的异常。B、注册提交时,检查注册用户名,密码不能为空,密码与确认密码要相同,否则不与提交注册。
项目完成总结心得体会。
1.个人:
在项目刚启动时,我只在java 方面比较擅长,做的模块都是涉及java基础方面的知识。对UI 方面缺乏信心,但随着项目的推进,对UI 方面见的多了解的多了,也能独立完成UI方面的模块。在这次项目中独立完成登录,注册模块。
对于每一个项目开发,都需端正态度,量力而行,发挥自己的长处,这样不仅有利于促进团队项目开发的进度,还有利于把自己代入这个项目。当自己融入这个项目时,就能多思考。并在不影响项目开发进度的前提下,思考这里为什么要这样做,这样做有什么用处。这样是一个自我学习的过程,这里本来不会做,但是经过这个项目或这个模块后,这里也会做了,把不会的变成会的,把别人的知识变成自己的。2.团队合作:
项目启动时,因为这个项目主要是UI 项目,而我在这方面基础知识比较差,主要负责了涉及java方面的模块ODA实现。在项目分析时,提的建议较多与项目组长之间发生摩擦。在项目老师的协助下,确定项目分析,确定分工模块,最终较为成功的完成了我们组的项目。
当一个团队合作时,并不是遇到的每个团队,团队成员都令你满意、每个团队都可以融洽相处。这个团队之所以形成,主要目的为了成功完成这个项目。进入团队先要明白进入团队的目的,这个团队成立的目的。明白了这两点,许多在团队中遇到的问题都可以避开或很好的解决。所有成员都围绕如何能更好更完善的完成项目为主。当然在遇到必然可能影响到项目开发进度的问题时,还需及时解决。
3、项目开发
在这次项目中,本着利用自己擅长的部分,加工加点的完成了DAO接口实现模块并实现所有的单元测试。为项目UI 后续进度提供了较为完善的后台数据、接口服务。每个项目开发的过程,都需实事求是、踏实做事。不为面子,虚报自己的能力,能做什么能做多少、都要根据自己的职业能力来下定论。遇到技术问题,自己能独立解决就独立解决,不能就及时向他人求教或自己查找资料自学。在项目开发中若有自己比较好的意见(先自己确定以目前技术是实时可行的、对项目开发或功能实现有利的意见),要向项目管理和项目其他队员提出,看是否采纳。
第四篇:Android实训实习报告总结
一、引言 Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(JDK、SDK和NDK),学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
巩固和学习了更多的Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。android入门后,只会照着别人的葫芦来画瓢,即没有设计思想,也没有自主原创的代码,不好不好
于是乎,进了公司跟着项目走,用项目来驱动自己去学习和提高
公司是1+1开发模式,即1个美工 + 1个工程师,负责完成一个项目(主要是游戏开发),就完全需要自己设计游戏的布局、逻辑,以及各种动画,来增强用户体验的效果 当时主要是看Android官方的SDK API文档、中文API文档、JDK源码,对有些感念不清楚,就上论坛去找答案,如CSDN、ITEye、IBM、知乎,或者去啃google 官方的文档。
二、新掌握的Java基础学习
2.1、Activity View、Surfaceview的理解
掌握了常用控件、view、surfaceview使用方式,知道怎样去适配不同屏幕后,每天就是重复的工作,堆砌代码,难以进一步去提升自己
于是就自己给自个找点事干,自定义控件,如对话框背景等,或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识 这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式
的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等
学习中会不断遇到一个又一个新的问题,因此需要不断去查资料、再学习各种工具,逐步积累,潜移默化中自己掌握的知识和工具就多了,眼界也开阔了。
2.2、android-pulltorefresh
一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。并且它实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好。
成果: ListView能满足一个Android 项目的列表:
(1)下拉刷新ListView(2)下拉刷新及滑动到底部加载更多ListView(3)拖动排序的ListView,同时支持ListView滑动item删除,各个Item高度不
一、单选、复选、CursorAdapter做为适配器、拖动背景变化等。
2.3、Menu MenuDrawer 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘、ListView边缘、ViewPager变化划出菜单等。
SlidingMenu 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕左右划出,支持菜单zoom、scale、slide up三种动画样式出现。
ArcMenu 支持类似Path的左下角动画旋转菜单及横向划出菜单、圆心弹出菜单
android-satellite-menu 类似Path的左下角动画旋转菜单
radial-menu-widget 圆形菜单,支持二级菜单
2.4、异常处理
登录提交时,用户名、密码不能为空,否则不与提交。数据库返回登录信息,处理登录成功与否的异常。
注册提交时,检查注册用户名,密码不能为空,密码与确认密码要相同,否则不与提交注册。
三、Android Xutils 框架的使用
在开发中还学习了一套强大的快速开发框架,Android Xutils 框架。
3.1、xUtils使用
xUtils 包含了很多实用的android工具。
xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...xUitls最低兼容android 2.2(api level 8)
3.2、DbUtils数据库
android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
3.3、ViewUtils视图
android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定; 新的事件绑定方式,使用混淆工具混淆后仍可正常工作; 目前支持常用的11种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
3.4、HttpUtils网络请求 支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的GET请求支持缓存,可设置默认过期时间和针对当前请求的过期时间。
3.5、BitmapUtils图片异步加载
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;
可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。
四:发现式学习
工作情况及遇到的问题等:
4.1、Bitmap的生成
Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是 某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory。
4.2、必要知识认知
1、在使用方法decodeFile()/decodeResource()时,都可以指定一个BitmapFacotry.Options。
利用Options的下列属性,可以指定decode的选项:
inPreferredConfig 指定decode到内存中,手机中所采用的编码,可选值定义在Bitmap.Config中。缺省值是ARGB_8888。
inJustDecodeBounds 如果设置为true,并不会把图像的数据完全解码,亦即decodeXyz()返回值为null,但是Options的outAbc中解出了图像的基本信息。inSampleSize 设置decode时的缩放比例。
谈通过HttpGet和HttpPost向服务器提交请求,并从服务器返回结果信息。通过如下3步访问Http资源。
(1)创建HttpGet或者HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。(2)使用DefaultHttpClient.execute方法发送Http Get或Http Post请求,并返回HttpResponse对象。
(3)通过HttpResponse.getEntity方法返回响应信息,并进行相应的处理。
如果使用HttpPost方法提交Http Post请求,还需要使用HttpPost.setEntity方法设置请求参数。
2、实习任务概述:
1.面向对象编程(封装,继承,多态)。
2.this关键字使用,JavaBean定义规范以及作用
3.方法的重载(overLoading),构造方法的作用
4.package(创建包)import(导包)的使用以及作用
5.super关键字使用
6.方法的重写(override)
7.访问修饰符(public,protected,默认,private)的使用
8.static修饰符的作用及用法
9.final修饰符的作用及用法
10.抽象类(abstract)的定义和特点以及使用
11.接口(interface)的定义 12.接口的实现(implements)13.接口和抽象类的区别
14.对象包装器,装箱和拆箱的使用
15.数组的使用。
16.String类,StringBuffer类,StringBuilder类的使用以及三者之间的区别 17.JavaSE API的使用。
18.日期类Date,SimpleDateFormat的使用,数学类Math和Random类的使用
19.异常的处理(try,catch,finally,throw,throws)20.Java中的集合类(List,Map,Set接口的使用以及Properties属性文件的操作)21.编写音乐播放器应用 22.编写电话及短信应用 23.编写SD卡存取应用
3、实习所用软件简介: Eclipse
Eclipse 是一个开放源代码的、基于java的可扩展开发平台。就其本身而言,它只是一个框架 和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
JDK JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
Android SDK 指的既是Android专属的软件开发工具包。
PopupWindow是应用开发中经常用到的组建,使用它可以在当前屏幕的上层显示一个弹窗,同时也可以指定弹窗的位置以及背景色等特性,大大提高用户体验,那么这里我就以下几点介绍它的使用: 从指定的位置弹出这个窗口(淡入淡出动画)从屏幕底部弹出这个窗口(带有透明度背景,自定义触摸其他位置自动关闭弹窗)
4.3、遇到的问题及解决方案
在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,CC++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。
android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
1。如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。
(该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)2。如果修改android sdk版本,则需要以下几个步骤:
1)修改SDK:选择工程,build path--> configure build path---> library 删除引用的低版本SDK,然后add External JARs,选择高版本SDK,OK,保存。
2)修改classpath文件: 该文件可能存在该项:
3)修改AndroidManifest.xml在AndroidManifest.xml文件中,application标签后添加
4)修改default.properties(很重要): 该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。再看看工程和新建的android 2.2的工程结构就一样了。
五、实习心得
Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、Google Map服务等都是非常重要的知识点以及学习领域。
1.IDE
这半年来,从Eclipse到Android Studio,经历了两个IDE,在这里做一下简单的评价。
如果真要说,Android Studio是基本上大胜Eclipse的,至少Android Studio不会像Eclipse那样卡,公司配的电脑是渣了点,64位,win7,只有4G内存,跑Eclipse跑久了简直就是噩梦。
Android Studio的智能提示比Eclipse强多了,快捷键也很强大。至于工程的组织结构,Android Studio和Eclipse的差距还是很大的,但习惯了也不觉得有啥,哪种都行。
Android Studio有个不好的地方就是无法在同一个窗口显示多个工程,所以只能多开一个。。
Android Studio采用Gradle构建,一开始的构建简直是丧心病狂。。如果没有VPN,想都不敢想。。构建上,Eclipse是比Android Studio快,但Android Studio导第三方库很方便,写一个Gradle脚本就行,并且配置上更加灵活。可以这样说:Eclipse是帮我们搭好了房子,我们只要熟悉它就行,而Android Studio是让我们用工具去搭建自己喜欢的房子。
更加重要的是,aar包只能由Android Studio构建,而谷歌现在推崇的方式就是aar包,所以以后开源的项目很有可能都是打成aar包,并且基本上,大部分的开源项目已经是采用Gradle构建。。
Android Studio一个不好的地方就是升级太快,在半年的 时间内,我从0.8.1升级到1.0。。可恶的是,每次升级,Gradle也升级,并且还断代。。虽然么官方现在是版本稳定了,因为IDEA已经出了新版本了,但我试过1.0出事了,直接撤回0.9.4。。
总体而言,未来Android开发一定是用Android Studio或者IDEA,Eclipse已经被官方抛弃了。。2.版本控制工具
我使用SVN比较少,刚工作的时候,刚好就是把SVN换成Git,但对于Git的使用方式也经历了一番变化。
一开始使用Git,就像SVN一样,一个master分支,大家都往上面推,一旦出事了,大家都卡住了。。后来使用SourceTree做管理,分支切换,提交和解决冲突好多了。现在的开发模式是这样的:
master分支是正式分支,在没确保稳定之前是不会推东西上去的,dev分支是开发分支,而每个人本地也有一个dev分支,大家可以根据自己的需求在本地开多几个分支,这样就不会出现master分支无法发布的现象,因为master分支永远是正确的。
遗憾的是,由于使用的是工具,对命令行还是不熟悉。。3.数据库
数据库一开始采用的是原生,编写了一大堆Helper,而且光是存表,就已经写了很多代码,一个一个set进去。。后来换成对象数据库LitePal,好多了,但LitePal本身的效率是原生的三分之一,但基本的情况已经足够了。。不过,必须直视的是,LitePal的功能支持还不够完善,一开始不支持索引,后来的版本才支持,并且很多情况下,采用Sql语句都比使用LitePal的接口方法方便多了,LitePal的查找数据竟然是根据那个自增长的id。。只要稍微改一下,LitePal还是很好用的,尤其是对象一建好,表就建好了,特别方便,还有就是数据库的升级也非常方便。
有个不好的地方就是,可以直接操作表对象,这样很可能就会将不想存的数据存进表里,于是就封装了一下,不能直接操作表对象,而是操作实体对象,数据库的操作都是通过实体对象的接口方法,而接口方法调用的就是表对象的方法。4.网络库和异步库
这部分的工作并不是我做的,但还是可以说一下。
一开始是自己封装的网络库,但封装得太复杂了,很难维护,而且它不是一个简单的网络库,是一个网络异步和本地异步一起实现的库,基于大量的回调,使用起来也是不错的。
后来换成Volley,不过就发现Volley的实现不太满足我们的要求,就用OkHttp将Volley的底层改掉,然后上层的接口形式采用链式调用的方式,代码的形式更加简单。
原生的异步AsnyTask简直就是个坑,它就是一个任务队列,多个任务执行并不是并发的,有可能就卡在其中一个出不来了。。试过debug的时候跳进去就跳不出来了。。后来就自己写了一个,也是采用链式调用的接口形式。
5.事件采用EventBus作为事件管理,简直就是爽。简简单单就可以跨线程,跨组件通信,很多以前要很复杂才能实现的功能一下子就可以实现了。
6.UI上,倒是很难讲的一个方面,采用ButterKnife减少了工作量,并且基本上采用组件思想,能够提炼出组件的就变成组件,方便替换,而且形式上,偏近于MVVM的形式,可以针对业务逻辑编写单元测试,原因就是逻辑业务都在ViewModel上。
第五篇:个人总结 android实训
个人总结
这是进入大学以来的第二次实训。这次实训的主要内容是APP开发,所选择的平台是android平台。老师在第一堂课的时候也就说过我们现在离一个开发人员所要求的水准相差十万八千里,所以通过这一周的实训,我只是了解到了开发APP的一个基本框架。首先要配置java环境变量,人后再进行一些界面上的操作。用Eclipse当作集成开发环境来使用,我感觉在操作过程中,编写代码才是重点,老师在课堂上向我们进行演示,但是抄写代码过后还是出现了很多的错误,但是Eclipse平台上检查错误变得更加便当,更加智能化的检索并更正错误。
由于这次实训的时间很短,当我刚刚开始对android有点入门的时候,实训却就要结束了,这次实训学到了很多,但是难一点却还有些不知道。这次实训比上次要累很多,但是我相信,付出就一定会有回报。
xxx
2015年4月