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


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

      本文知识要点

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

      1.2 Button TextView控件的基本用法

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

      1.4 控件事件的绑定

        

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

     

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

      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版本、用户权限、第三方类库等,在这篇文章里只具体说下常用和基础的配置属性,文件内容如下:

      

    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"
    />

     

    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

  • 相关阅读:
    java 数组
    数组(二)
    JVM内存分配策略
    JVM垃圾收集算法
    LINUX 查看硬件配置命令
    遗传算法
    svn简单使用
    Several concepts in Data Mining
    JVM判断对象存活的算法
    JVM运行时数据区
  • 原文地址:https://www.cnblogs.com/know/p/2345476.html
Copyright © 2020-2023  润新知