zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/know/p/2345476.html
Copyright © 2011-2022 走看看