Android程序开发学习笔记系列——基础篇(附源码)

摘要:
少说闲话。在学习Android程序开发的系列笔记中,我将尝试保持每个博客的统一风格。在我开始分享我的学习经验之前,我将列出这篇博客的要点——知识点,并尝试以简短而清晰的方式告诉他们,以便正在学习Android程序开发的朋友能够更快、更准确地知道你想知道什么。但我也知道,即使我写得更好,有些人可能仍然觉得他们没有讲清楚或切题。我希望你能给出更多的评论,让这个系列更具可读性!

  随着Android的越炒越热和各种应用的不断推出,自己也比较巧合的在去年12月份宽带续费时给送了个电信的Android系统定制机——算是促使我提前了Android开发的学习计划,并给我提供了一个开发测试的'场地'(手机),也更增强了我学习Android程序开发的兴趣——别的市场前景等先暂且不说,至少我学会了,可以做个程序自己用。闲话少说,Android程序开发学习笔记这个系列,我将尽量让每篇博客保持统一的风格,在开始分享学习经验之前列出这篇博客主要讲些什么——知识点,也力求以简短明了的讲述,让正在学习Android程序开发的朋友们能更快、更准确的了解到你想知道的,不过我也知道即使写的再'好',可能还是有人感觉没有讲清楚或讲到正点上,希望大家能多提意见,让这个系列能更具可读性! 

  本文知识要点

  1.1 Android应用程序目录结构、文件夹及其文件说明

  1.2 Button TextView控件的基本用法

  1.3 Activity之间跳转简单传值,Intent的简单使用

  1.4 控件事件的绑定

    

     1.1 Android应用程序目录结构、文件夹及其文件说明

Android程序开发学习笔记系列——基础篇(附源码)第1张

 

  原本想在上图中直接添加批注,但感觉比较麻烦且空间小不容易说清楚,下面就针对上图中的几个红色区域重点说明下:

  R.java——此文件是应用程序资源(Resource)类,包括控件id,layout,strings,drawable,以方便在整个应用程序中对资源的使用和统一管理;此类是自动生成的,不要手动修改!

  res文件夹下的  以drawable开头的文件夹分别放的是高(h)、低(l)、中(m)不同分辨率的图片,即为了兼容或者说让应用程序在不同分辨率下的机器上更好的呈现,一般一张图片要弄三张不同分辨率的放在这三个文件夹下,如:应用程序的图标或其中所用到的图片,应用程序在启动时会根据当前机器(客户端)的分辨率采用合适的一张图片;放在drawable文件夹下的图片会自动在R.java文件的drawable类生成一个相应的变量,代码如下:

public static final class drawable {
public static final int cat=0x7f020000;
public static final int ic_launcher=0x7f020001;
}

             layout文件夹下放的是内容视图文件,可以理解为跟.net中.aspx文件类似——界面布局文件,那就会有朋友问了:每个内容视图文件的代码控制类是如何与之关联的?这个需要在每个Activity类的onCreate方法中 通过 setContentView(R.layout.formactivity); 此行代码设置。其中main.xml是默认的内容视图文件!

          values文件夹下放的是当前应用程序中使用到的字符串——以键值对的形式存放,如:应用程序的名称、按钮等提示文本,这样做的好处是:将文本字符串与代码分离,方便做国际化,如你现在做的应用程序针对的是中国用户,当你想增加个日本或英文版本时,你只需要在values文件夹下增加相应国际化的strings.xml文件即可!具体做法会在以后的博客中讲解。

  src文件夹下当前应用程序项目名称文件夹下 放的一般是Activity类(可以理解为界面窗体后置代码类)和其它的类文件。

  AndroidManifest.xml  此文件类似与.net中的web.config文件——应用程序配置文件,如配置:应用程序名称和icon、最低支持的SDK版本、用户权限、第三方类库等,在这篇文章里只具体说下常用和基础的配置属性,文件内容如下:

  

Android程序开发学习笔记系列——基础篇(附源码)第2张Android程序开发学习笔记系列——基础篇(附源码)第3张View Code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package
="android.FirstAVd"
android:versionCode
="1"
android:versionName
="1.0" >


<uses-sdk android:minSdkVersion="15" />

<application
android:icon="@drawable/ic_launcher"
android:label
="@string/app_name" >

<activity
android:name=".FirstAVdActivity"
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=".FormActivity"
android:label
="@string/formactivity_name" >

</activity>
</application>

</manifest>

    package="android.FirstAVd"    当前应用程序的包名

    android:versionCode="1"     当前应用程序的版本号

    android:versionName="1.0"     当前应用程序的版本名称

  <application
        android:icon="@drawable/ic_launcher"     当前应用程序的图标

        android:label="@string/app_name" >  当前应用程序的名称

   <activity
            android:name=".FirstAVdActivity"    界面窗体的类名
            android:label="@string/app_name" > 界面窗体的名称

      如上有两个activity的声明(注册),但只有内部有<intent-filter>的activity才是应用程序默认启动的窗体界面,而且每个activity必须要在此文件中声明(注册),否则将会报错

  

     1.2 Button TextView控件的基本用法

    首先在内容视图xml文件中添加控件,再在对应的activity类中根据控件id获得控件对象,代码如下:

<TextView
android:id="@+id/tvShow"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:text
="@string/author" />

<Button
android:id="@+id/btnchangecontent"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
/>

 

Android程序开发学习笔记系列——基础篇(附源码)第4张Android程序开发学习笔记系列——基础篇(附源码)第5张View Code
public class FirstAVdActivity extends Activity {
private TextView tvShow;
private Button btnSendSms;
private Button btnAction;
private Button btnchangecontent;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* TextView tv2 = new TextView(this);
tv2.setText("Nice see you!"+new Date().getTime());
setContentView(tv2);
*/

//设置当前Activity的内容视图(文件)
setContentView(R.layout.main);

tvShow=(TextView)this.findViewById(R.id.tvShow);
btnAction=(Button)this.findViewById(R.id.btnforward);
btnAction.setText("测试按钮");
btnAction.setTextSize(23);
btnAction.setTextColor(Color.GREEN);
btnAction.setBackgroundColor(Color.GRAY);
btnAction.setOnClickListener(new BtnActionOnClickListener());

  

     1.3 Activity之间跳转简单传值,Intent的简单使用

    如以下代码实现的是从FirstAVdActivity跳转到FormActivity,并在FormActivity中获得传递的值的实现:

FirstAVdActivity中的跳转按钮事件——

class BtnActionOnClickListener implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个Intent请求对象
Intent intent=new Intent();

//将要传递的值以键值对的形式存放在intent对象中
intent.putExtra("user_name", "tom_marker");

//设置请求的源(FirstAVdActivity)和目标(FormActivity)
intent.setClass(FirstAVdActivity.this, FormActivity.class);

//执行请求
FirstAVdActivity.this.startActivity(intent);

}
}

FormActivity中获得传递值——

public class FormActivity extends Activity {
private TextView tvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
try {

super.onCreate(savedInstanceState);
setContentView(R.layout.formactivity);
Intent intent=this.getIntent();
tvShow=(TextView)this.findViewById(R.id.tvShow);
//tvShow.setText(new Date().getMinutes());
tvShow.setText(R.string.welText+intent.getStringExtra("user_name"));

} catch (Exception e) {
tvShow.setText("Error: "+e.getMessage());
}
}
}

     1.4 控件事件的绑定

    事件的绑定有如下两种方式,贴出代码,一看便知

方式一

btnchangecontent.setOnClickListener(new View.OnClickListener(){  
public void onClick(View v)
{
//Toast提示控件
Toast.makeText(FirstAVdActivity.this,

"TextView里的文字发生了改变,你注意到了吗?",
Toast.LENGTH_LONG).show();
//将tvShow的文字发生改变
tvShow.setText("Android Button控件绑定单击事件"+"\n"+new Date().getTime());

}
});

方式二

btnSendSms.setOnClickListener(new BtnSendSmsOnClickListener());


class BtnSendSmsOnClickListener implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个Intent请求对象
Uri uri=Uri.parse("smsto://13227517186");

Intent intent=new Intent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body", "This sms test content!");
FirstAVdActivity.this.startActivity(intent);
}
}

 

  好了,时间有限,就写到这吧,可能有些仓促和没有说到的地方,希望能对你有所帮助,也希望大家多交流、提意见!

  以上所讲代码示例下载 FirstAVd.rar

免责声明:文章转载自《Android程序开发学习笔记系列——基础篇(附源码)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Apache Htpasswd生成和验证密码Innodb 表空间卸载、迁移、装载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于几种获取iOS设备UDID典型方式的技术探讨

UDID 是由子母和数字组成的 若干个字符串的序号,用来区别每一个唯一的 iOS 设备,包括 iPhones, iPads, 以及 iPod Touches,这些编码看起来是随机的,实际上是跟硬件设备特点相联系的,我们称之为识别码,也叫做UDID( Unique Device Identifier),比如典型的UDID 类似这样: 37f2f993bae6...

软件测试英语专业词汇汇总

  NLV:Nation Language Version  本地化版本 FVT:Functional Verification Testing  功能验证测试 TVT:Translation Verification Testing  翻译验证测试 SVT:System Verification Testing  系统验证测试 fault--故障 在软...

拒绝折腾——好用的EmEditor

拒绝折腾——好用的EmEditor FEB 14TH, 2010 | 评论 套用一句俗话,叫做工欲善其事必先利其器,这其中“善其事”是指要有好的思想来解决问题,而“利其器”就是说要选择一个适合自己的工具。文本编辑器自然也不例外,尤其是已经或者即将有写代码需要的童鞋,您总不能拿Word来做事吧?嘿嘿~虽然某些高手曾经宣称“记事本是最适合写代码的工具”,但奈...

C#WinformSettings.setting配置

以下是学习笔记: 参考:https://blog.csdn.net/weixin_42451919/article/details/102819404?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&s...

CAS单点登录

1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。 CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA...

抓取Android应用的log

今天测试软件时,遇到一个bug,因为开发说那边不复现,所以为了更好追踪这个问题,需要抓取复现步骤地log. 在网上查了相关资料,同时结合自己遇到的问题,总结如下。 1. 抓取Android 应用log的方法 2. adb server is out of date.killing的解决办法 3. 在Eclipse中怎样成功连接Android手机 1. 抓取...