Android学习心得
这学期,我们新开了一门课程——android的研发。在老师们的介绍下,我们了解android的开发环境以及控件的功能。刚开始接触Android觉 得 既 陌生 又 亲 切,陌 生 在 于 没 有 学 过 具 体 的 开 发 软 件,亲 切 在于它在界面开发上和web也可以形成了相通的架构,更加方便。
一、Android简介
Android一词的本义指“机器人“,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。Android 早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。
二、Androi前景
市场上:现在2.2技术应该已经成型了,但是目前产品是2.2的貌似不是很多,在嵌入式的角度来说,前景应该不错,手机领域就不用说了,汽车导航,电子消耗品,它的界面我认为远比塞班要好,而且,开放软件是个趋势,这样,系统的市场占有率才能高,支持的软件多,自然生命周期,效益比率都高。
技术上:现在国内Android的软件的开发人员应该也不少了,而且基于linux内核,linux内核也是趋势,现在Android封装linux那部分的类和函数感觉懂的人相对也不是很多。在挑战性和技术掌握上,Android都是优势。
支持上:国内对google的态度....有的时候服务器上不去,可能一点开发中平台的小问题,就是人家一句话就解决的问题,可能要耽误开发周期,或者说响开发心情....
所以整体来说Android的前景还是很好的。
三、软件下载
Android SDK,网址是http://developer.android.com.JDK6的下载地址http://java.sun.com/javase/downloads/widget/jdk6.jsp。Eclipse的下载网址是http://www.eclipse.org/downloads/
(一)Android开发环境搭建
第一步:下载Android SDK到官方下载Android SDK,网址是http://developer.android.com./sdk/index.html 。Android 1.5之前Google提供了Android SDK开发的完整下载,在Android 1.6之后Google只提供了安装工具在线安装。单击“android-sdk-windows.zip”链接进行SDK下载,下载该文件后解压该文件到操作系统的任意目录下。打开目录找到SDK Setup.exe可执行文件,双击执行该文件。选择"Available Packages",选择想安装的版本(我是全选了,省事),然后单击“InstallSelected”->选择“Accept All”,再单击“Install Accepted”就可以在线安装了。提示:如果你的“Available Packages”右侧的地址不能打开,请选择左侧列表的“Setting”选项,在右侧的设置中勾选“Fore https://......”
第二步:安装JDK
A、下载JDK。Android SDK需要JDK5 以上的版本。JDK6的下载地址http://java.sun.com/javase/downloads/widget/jdk6.jsp。
B、安装JDK。下载完成后进行正常双击、安装,这里就不说了。。。
C、配置Java环境变量
1、配置Java Home。复制Java的安装路径,右键单击“我的电脑”->“属性”->“高级”—>“环境变量”中新建环境变量java_home,变量值为java安装路径。
2、配置Path。右键单击“我的电脑”->“属性”->“高级”—>“环境变量”,在“系统环境变量”中编辑Path便来了个,添加Java的bin目录到其中。变量与变量中间使用分号“;”分隔。
3、配置classpath。右键单击“我的电脑”->“属性”->“高级”—>“环境变量”,在“系统环境变量”中新建一个系统变量名称为“classpath”,变量值为半角句号“.”第三步:下载Eclipse ADT插件要求Eclipse的版本是3.3以上,Eclipse的下载网址是http://www.eclipse.org/downloads/。下载后解压可以直接使用。
(二)下载安装ADT。
这里介绍通过Eclipse在线更新的方式安装。
1、启动Eclipse,选择“Help”->“Install New Software.....”
2、单击“Add.....”添加一个更新站点(注意:站点http后面不要加s)否则可能连接失败(Name:ADT0.9.5;Location:http://dl-ssl.google.com/android/eclipse/)
3、添加好后,勾选“Developer Tools”单击“Next”进行更新安装。
四、应用程序基础
1.Android应用程序框架
2..Android应用程序组成
3.API参考文档的使用包(Package)的索引
●Interfaces
●Classes
●Enums
●Exceptions 类(Class)的索引
●扩展和实现内容
●按包名的继承关系(可用于反找包)
●Overview(概览)
●XML Attributes(XML的属性)
●Constants(常量)
●Constructors(构造函数)
●Methods(方法)
通过将近快一学期的学习,在这次android这门课程的学习过程中,我了解到:
(一)android基础知识:
1.、环境的配置:
(1)配置Java程序开发环境;
(2)安装并汉化Eclipse(JDK);
(3)Android SDK的安装;
(4) A D T 的安装及配置;
(5)Android 模拟器的配置。
2.、第一个简单的Android程序(HELLO WORLD):
(1)创建一个Android应用程序:
打开eclipse开发工具——文件——新建——项目——android——android project——下一步,
(2)应用程序编写: 完成程序资源的设置;完成界面布局的设置; 完成程序的事件处理; 完成程序的总体配置;应用程试;部署应用程序到Android手机(对APK应用程序进行打包)。
3、控件:
在Android学习中,每一个应用都需要一些空间,在这一个月的学习当中,我们也接触了很多的控件:
(1)TextView :用来显示文本标签的控件;
(2) ListView::用来显示一个列表的控件;
(3)Toast:是Android用来显示显示信息的一种机制;
(4) EditText::编辑框,用于输入信息;
(5) RadioGroup、RadioButton:单项选择;
(6)Checkbox:多项选择;
(7)Spinner:下拉菜单;
(8) AutoCompleteTextView:自动提示;
(9) DataPicker、TimePicker:时间和日期事件;
(10)Button:按钮;
以上的控件,可以使我们制作出一个的手机软件,使用起来更加的方便。
我们还学习了java的基本概念以及java编程基础知识。因为要制作一个手机软件,就要看懂背后的代码这样才能解决问题。总结了知识点,紧接着说说我的心得体会:
(1)通过半个学期的学习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
(2)通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。
(3)对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。
(4)在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。在Android编程过程中巩固熟悉了Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。通过Android的学习,我们在毕业前,又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。总之,在这门课程学习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。
在课上,老师举出了一些简单的例子,紧接着让我们开始上机操作,这样可以及时地巩固我们所学的知识点。通过半学期的android学习,我们基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。在android的入门学习中,期末我们还要编写程序,然后进行作品展示。现在回想起来,学期快结束了,展示时间快到了,我还没有布局好,也没有美化好,心里很着急,甚至还老是出错,看来自己还是要加强学习!相信今后我们会更加努力地学习,因为一个作品的重要性不仅在于功能,而且用户体验也很重要。总之,在这门课程的学习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以及加深了对Java的认识。
第二篇:Android java C# 学习心得 整理
【出勤】 1、除上课外可到时长 2、实到时长 出勤率:80%
【任务完成情况】
笔记
本周继续学习JAVA的基础知识还有android开发初步。
l JAVA:
java看的语法知识
l C #:
² winform文本框,用于输入数据后动态查找类似数据,例如baidu的模糊搜索。winform实现。 查出数据集即可。此题难点为提示下拉框。
1. 试验思路:编写windows运用程序,利用TextBox来取得要搜索的内容
搜索按钮,和一个WebBrowser,一个状态栏。
2.涉及到的知识:
1>.TextBox的AutoCompleteCustomSource属性
2>.TextBox的AutoCompleteMode属性
类型:System.Windows.Forms.AutoCompleteStringCollection
要与 AutoCompleteSource 一起使用的 System.Collections.Specialized.StringCollection。
备注
使用 AutoCompleteCustomSource、AutoCompleteMode 和 AutoCompleteSource 属性可以创建一个 ComboBox,它通过将所输入的前缀与所维护的源中的所有字符串的前缀进行比较来自动完成输入字符串。这对于频繁地有 URL、地址、文件名或命令输入其中的 ComboBox 控件来说很有用。如果在所维护源中有重复项,则自动完成的行为不可预知。
AutoCompleteCustomSource 属性的使用是可选的,但必须将 AutoCompleteSource 属性设置为 CustomSource 后才能使用 AutoCompleteCustomSource。
AutoCompleteMode 和 AutoCompleteSource 属性必须一起使用。
3>.百度搜索的网址转换原理
**************************************************************************************
百度搜索结果url参数解析。
http://www.baidu.com/s?wd=seo%B9%CB%CE%CA&rsv_bp=0&rsv_spt=3&inputT=1420
http://www.baidu.com/s?bs=seo%B9%CB%CE%CA&f=8&rsv_bp=1&rsv_spt=3&wd=seo%B9%CB%CE%CA&inputT=0
http://www.baidu.com/s?bs=seo%B9%CB%CE%CA%B0%A2%D1%FE&f=8&rsv_bp=1&rsv_spt=3&wd=seo%B9%CB%CE%CA%B0%A2%D1%FE&inputT=0
http://www.baidu.com/s?wd=%CE%F7%B0%B2seo%B9%CB%CE%CA&rsp=0&oq=seo%B9%CB%CE%CA&f=1&rsv_ers=xn0
地址解释:
每个汉字对应两个字符串,3个字有6个字符串,4个字有8个字符串;
英文字母和数字不用转换;
中文字符的空格用“+”这个字符串
百度搜索地址参数解析:
s? 搜索;
wd=当前搜索的词或者内容;
bs=上一次搜索的词或者内容;
& 并列参数;
rsv_spt=识别浏览器,ie内核的浏览器是3,火狐是1;
rsv_bp=判断是第几次搜索,0为第一次搜索,1为第二次或者多次搜索;
tn=纪录搜索来自哪里,当你使用账户登录后,就会有此项纪录,比如,你登录百度空间或者登录了遨游浏览器;
inputT=搜索响应时间,单位是毫秒;
oq=相关搜索的主词,例如,搜索seo时,出现的相关搜索,它的oq=seo;
rsp=第n+1个相关搜索,例如rsp=4,它就是第5个相关搜索;
f=搜索判断,f=8用户自主搜索,f=3下拉框推荐,f=1相关搜索;
*********************************************************************
在这里我只用到了http://www.baidu.com/s?wd=
3.窗体设计如下:
4.关键代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 文本框自动联想
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void lianxiang() // 自动联想功能
{
string[] array = new string[] {"activite" ,"able","bkb","cancle","del","enjoy","father","google","hello","i","joy", "hi", "nihao", "hehe", "yes", "no", "nobody", "morning", "yellow", "moon" };
AutoCompleteStringCollection autoCompleteArea = new AutoCompleteStringCollection();
autoCompleteArea.AddRange(array);
this.textBox1.AutoCompleteCustomSource = autoCompleteArea;
this.textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
lianxiang();
}
private void button1_Click(object sender, EventArgs e)
{
String KeyWord;
KeyWord = textBox1.Text;
Uri url = new Uri("http://www.baidu.com/s?wd=" + KeyWord);
this.webBrowser1.Url = url;
toolStripStatusLabel1.Text ="网址:" + url.ToString();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
button1_Click(sender, e);
}
}
}
}
5.运行效果如下:
l A n d r o i d:
继续学习android的基本知识
1。Activity的作业:用户和系统交互的接口
Activity的方法:
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
基本知识:Activity的生命周期如下图所示
android下的简单计算器
首先新建工程Activity03
然后在src - - | com.activity - - |下新建一个ResultActivity类和一个Activity03类
在AndroidManifest.xml下注册ResultActivity代码如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.activity"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activity03"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ResultActivity"></activity>
<!---
-注册ResultActivity
-.表示应用当前路径
-->
</application>
</manifest>
然后在res --|layout 下新建other.xml用来存放resultActivity的布局
其中main.xml内容如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText
android:id="@+id/factorOne"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/symbol"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/factorTwo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/calculate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<!---声明了2个文本框用来输入数据
-声明一个按钮来计算
-声明一个TextView来显示运算符 -
-->
</LinearLayout>
other.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/Result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<!---
-声明了TextView来显示计算结果
-->
</LinearLayout>
Activity03.java代码如下:
package com.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Activity03 extends Activity {
/** Called when the activity is first created. */
private EditText factorOne; //用来得到第一个数
private EditText factorTwo; //用来得到第二个数
private TextView sysbol;
private Button caculate;
@Override
//实现Activity的OnCreate()方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据控件ID得到控件
factorOne = (EditText)findViewById(R.id.factorOne);
factorTwo = (EditText)findViewById(R.id.factorTwo);
sysbol = (TextView)findViewById(R.id.symbol);
caculate = (Button)findViewById(R.id.calculate);
sysbol.setText(R.string.sysbol);
caculate.setText(R.string.caculate);
//设置计算按钮的监听器
caculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String factorOneStr = factorOne.getText().toString();
String factorTwoStr = factorTwo.getText().toString();
//利用intent将Activity03的值传给ResultActivity
Intent intent = new Intent();
intent.putExtra("One", factorOneStr);
intent.putExtra("Two", factorTwoStr);
intent.setClass(Activity03.this, ResultActivity.class); //activity的传递
Activity03.this.startActivity(intent);
}
});
}
//menu菜单设计
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1,1,R.string.exit);
menu.add(0, 2,2,R.string.abut);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId() ==1){
finish(); //退出功能
}
return super.onOptionsItemSelected(item);
}
}
ResultActivity.java代码如下:
package com.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
publicclass ResultActivity extends Activity{
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
TextView ResultView= (TextView)findViewById(R.id.Result);
//接收传递过来的值
Intent intent = getIntent();
String factorOneStr =intent.getStringExtra("One");
String factorTwoStr=intent.getStringExtra("Two");
int factorOneInt = Integer.parseInt(factorOneStr);
int factorTwoInt = Integer.parseInt(factorTwoStr);
int result = factorOneInt * factorTwoInt;
ResultView.setText(result + " ");
}
}
res - -|values目录下的strings.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Activity03!</string>
<string name="app_name">简单计算器</string>
<string name="caculate">计算</string>
<string name="sysbol">乘以</string>
<string name="exit">退出</string>
<string name="abut">关于</string>
</resources>
运行截图如下:
Activity03运行截图如下:
ResultActivity运行截图:
Menu菜单显示截图:
【周会总结】
通过本周实际的开发过程,体会到了做程序的过程,在此过程中,遇到了不少自己不会的东西,很多都是通过上网索引相关信息才解决问题的。