用代码教你入门android--1背景介绍

来源:互联网 发布:梦幻群侠传三优化版 编辑:程序博客网 时间:2024/06/08 04:48

转载请注明原作者:@author:huanglei_jmr http://blog.sina.com.cn/u/3113060227

第一篇,很乱,大家可以去查这里提出来的不懂的知识点,当然你也可以翻过,因为后面会详细的讲解,建议这里看看留个印象即可:

教怎样看API文档:

LinearLayout线性布局为例子:用代码教你入门android--1背景介绍

 

首先要知道我们开发android是开发啥子?是开发APK文件啦!!怎样开发!!

Android系统的手机的每一个你能看到的画面都是一个activity,它像是一个画布,随你在上面怎么涂画,画个按钮,画个图片,画个列表,都随你!专业点其实activity就是一个view类的派生类(比如Button,listview,imageview)的container
Android
平台的四大天王:Activity, Service, ContentProvider,BroadcastReceiver, 这四种组件通过Intent进行沟通,Intent就是桥梁了!
Android
是跑在Linux kernel上的,每一个APP都有自己的进程,Google的工程师为了简化APP开发人员的开发难度,把进程相关的东西都在底层做掉了,暴漏给APP开发人员的就是这四大天王和一个桥梁!

也有人说activity是一个电视剧,可以把每集看成一个activity.
每集有片头,片尾,中间需要的话可以插广告,广告播完要回来接着播。
所以你的ACTIVITY就有以下方法:oncreate, onrestart onpause,onresume,onDestroy
这些方法都是导演己经为你安排好了,每个activity肯定都会有这些内容,所以如果你想特别点,那你就在这些方法里面写都你的东西。activity 会在合适的时候自动执行你的代码。

,学布局的时候我一直想将两个activity放在一起显示,看来这是不可能的,因为你不可能同时进行两集的电视剧播放!

目录布局:用代码教你入门android--1背景介绍

 

gen目录下是Android自动控制生成的文件,这里面最重要的一个就是R.java,其中会自动放置我们添加的所有资源和组件,比文字信息(对应values/strings.xml,如图片信息(drawable-*/),视图控件信息,布局信息(对应layouts/activity_main.xml等。我们不能修改该文件的任何内容,否则程序会引发严重错误。这里多说一点就是我们编写的程序不会直接和资源,组件文件打交道,都是通过R.java中的信息来获取的。

那就看看R.java都为我们自动生成了哪些东西吧!

package com.example.helloandroid;

//看到没,为了不让我们修改是final类,屌

public final class R {

 

   public static final class attr {

   }

   public static final class dimen {

       

   public static final int activity_horizontal_margin=0x7f040000;

   public static final int activity_vertical_margin=0x7f040001;

   }

   public static final class drawable {

       public static final int ic_launcher=0x7f020000;

   }

   public static final class id {

       public static final int action_settings=0x7f080000;

   }

   public static final class layout {

       public static final int activity_main=0x7f030000;

   }

   public static final class menu {

       public static final int main=0x7f070000;

   }

   public static final class string {

       public static final int action_settings=0x7f050001;

       public static final int app_name=0x7f050000;

       public static final int hello_world=0x7f050002;

   }

   public static final class style {

      

       public static final int AppBaseTheme=0x7f060000;

       

       public static final int AppTheme=0x7f060001;

   }

}

超级无敌重要的文件:AndroidManifest.xml,这是我们一个Android项目级的配置文件,是Android项目中最重要的组成部分

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

   package="com.example.helloandroid"  

   android:versionCode="1"

   android:versionName="1.0" > <!—versionCodeversionName表示我们程序的版本-->

   <uses-sdk        <!---->

       android:minSdkVersion="8"   <!--最低支持版本,2.3.3是10 ,指系统低于这个版本就不能装咱这个apk了,还可以设置max…-->

       android:targetSdkVersion="17" /> <!—这个东西让人头疼,当我们安装的手机的系统正好是这个版本的系统会告诉Android平台:此程序在此版本已经经过充分测运行效率可能会高一些,在低版本的api中不会给我们解决兼容性的问题-->

   <application

       android:allowBackup="true"

       android:icon="@drawable/ic_launcher"    <!—api文件在我们手机上显示ide图标-->

       android:label="@string/app_name"    <!—显示的应用名-->

       android:theme="@style/AppTheme" >    <!—主题-->

       <activity

           android:name="com.example.helloandroid.MainActivity"<!—我们编写的java源文件,这里叫做activity-->

           android:label="@string/app_name" >

           <intent-filter>

               <action android:name="android.intent.action.MAIN"/>

               <category android:name="android.intent.category.LAUNCHER"/>

           </intent-filter>

       </activity>

   </application>

</manifest>

再来一个超级我们自己写类源文件activity

package org.ourpioneer;

importandroid.app.Activity;

import android.os.Bundle;

importandroid.widget.Button;

importandroid.widget.TextView;

public class HelloAndroidActivityextends Activity {

   @Override

   public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);//Android生命周期方法

// Activity程序完成界面的显示,那么就一定会使用到布局文件,也就是说Activity程序和布局相关的配置layout/activity_main.xml联系非常紧密。

      super.setContentView(R.layout. activity_main);//设置使用的布局管理器,这里可以写成自己写的R.layout. MYlayout//LinearLayout layout new LinearLayout(this);// 自己创建布局管理器,这里的this参数需要传入的是一个context,查看文档可知道activity父类的父类继承android.content.Context

TextView text1 = (TextView)

 //  TextView text1 new TextView(this);// 创建TextView组件

super.findViewById(R.id.text1);//取得text1组件,R.java的作用

      text1.setText("你好");//设置text1的显示文字

//  text1.setText(super.getString(R.string.hello));// 设置text1的显示文本

//这个地方findview,因为所有视图的父类都是view,所以可以强转,所以也用findview

      Button btn=(Button)super.findViewById(R.id.btn);//取得btn组件

      btn.setText(R.string.btn_text_zh);//设置btn的显示文字,原来我在string的配置文件中写了它的值,这里指定它的key即可

   }

}

HelloAndroidActivity类继承了android.app.Activity类,那么就是Android中的一个人机交互程序,覆盖onCreate方法,说明在程序创建时要做的事情,调用父类中方法,也就是可以看作为Android程序的生命周期方法。之后设置使用的布局管理器,调用方式就是通过R.java来进行的。这里R.layout.main就是调用我们layout目录下的main.xml(4.2变为layout/activity_main.xml,我觉得这个名字更加凸显功能,因为它本来就是雨activity联系紧密的)中编写的布局管理器和组件,但是它还有main.xml文件???

至此,我们解释了第一个应用程序。要在Android设备中安装,就要先进行apk文件的创建。我们在项目的bin目录下可以获得为我们自动创建的apk文件,但是我们还是通过手动的方式来看看如何进行apk文件的打包

首先在AndroidManifest.xml中添加下面的内容:

<uses-permissionandroid:name="android.permission.INSTALL_PACKAGES"/>

注意配置文件会出现红叉显示Permission is only granted to systemapps错误。这里涉及到了手机的root权限的问题,解决办法是点击myeclipseproject/clean即可!

难怪老黎说学安卓不要只学写布局的东西要学高点!

布局这东西也挺值得研究的:在layout/activity_main.xml(注意没有<?xml version="1.0" encoding="utf-8"?> 这个头啊,反驳:实际上是可以有的啊!

样式中的parent应该是说的屏幕!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent" <!—width-->

   android:layout_height="match_parent" <!--heigth-->

   android:paddingBottom="@dimen/activity_vertical_margin"

   android:paddingLeft="@dimen/activity_horizontal_margin"

   android:paddingRight="@dimen/activity_horizontal_margin"

   android:paddingTop="@dimen/activity_vertical_margin"

   tools:context=".MainActivity" >

   <!--android:id区分每个布局(组件),便于在activity中控制嘛,必须@+id/开头后跟id-->

   <TextView

       android:id="@+id/text1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="@string/huanglei" />

   <TextView

       android:id="@+id/text2"

       android:layout_width="wrap_content" <!--wrap_content意思是组件的包裹长度,也就是不会充满屏幕宽度,宽度啥的直接在视图中拖就好好了-->

       android:layout_height="wrap_content" <!—同上高度-->

       android:text="@string/jmr" />

   <Button

      android:id="@+id/btn"

       android:layout_width="fill_parent"  <!—填充屏幕-->

       android:layout_height="wrap_content"

       android:text="@string/btn_text" />

<!--链接,这里我发现android是不建议写成这样android:text="我啊你啊"它会提示我们将数据写在string.xml中然后进行@string/name引用-->

      <TextView

       android:id="@+id/text3"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_marginLeft="30dp"

       android:autoLink="all"

       android:text="@string/net" />

<!—图片,下面我写的图片上的文字会出现黄色警告,2.3就不会,4.0后都会貌似,3未测-->

   <TextView

       android:id="@+id/text4"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:background="@drawable/ic_launcher"

       android:text="图片上的文字" 

       android:textColor="#FFFFFF"

       android:textStyle="italic" />

<!—下面使用values/styles.xml文件来将样式抽离出去

<?xml version="1.0"encoding="utf-8"?>

<resources>

   <style name="text_style">

       <itemname="android:textSize">16sp</item>

       <itemname="android:textColor">#FDF5E6</item>

       <itemname="android:textStyle">italic|bold</item>

       <itemname="android:layout_width">wrap_content</item>

       <itemname="android:layout_height">wrap_content</item>

   </style>

</resources>

-->

  <TextView

       android:id="@+id/text1"

       style="@style/text_style"

       android:text="这里是一个TextView视图组件"/>

</LinearLayout>

这个是我自己改的,头子改了不知道在投的命名空间中是不是有些东西不是匹配的,原来是使用RelativeLayout相对布局,当然还有AbsoluteLayoutGridLayoutTableLayoutFrameLayout。我觉得table挺好用的!上面也可以不在这个配置文件中进行布局设置,在activity中程序中可以创建. 所有配置在XML文件中的布局管理器和组件,我们都可以通过代码的形式进行编写,使用Java代码动态生成组件完全可以替代XML配置文件,但现在还没有进行其它属性的设置,代码量就已经非常大了,而且写法都是一致的,没有任何技术含量。所以使用XML文件进行视图组件的配置,可以有效的分离显示逻辑,而程序进行控制逻辑,符合MVC设计模式

css中的概念放在这里也是可以的!

一坨数据相当于放在一个盒子中显示

Border 盒子边的位置(Border-top/Border-bottom/Border-left/Border-right

Padding  盒子数据的位置(...)

Margin 盒子离另一个盒子位置(...)

这些配置文件的关系是这样的:

Activity_main.xml(直接和activity打交道,用于显示)

1 drawable-*文件夹直接为Activity_main.xml提供图片资源

2 string.xml  Activity_main.xml提供显示文字

3 styles.xml  Activity_main.xml提供样式

4 dimens.xml  Activity_main.xml提供布局

 

学到这里突然不知道怎么运行activity程序了,后来才想起恍然大悟,需要建立一个模拟器!

记得查看api文档,在下载的包中adt-bundle-windows-x86-20130219\sdk\docs\reference\android

上面我们学了很多TextView的写法:看它的继承关系

java.lang.Object

   

android.view.View

 

   

android.widget.TextView

 

 

   

android.widget.Button

其实它比较高级的,还是button的父类咧,这个textView是静态的文本输入,就是我们自己已经写好的,如果想要打造像web那样的输入框:editText,是textView的子类

知识点:注意下面所有的关键字都是在main_activity.xml中的标签关键字,如<Spinner

8: 在Android中,对于复选框,可以使用CheckBox组件即可实现

9在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可。这是在Web开发中一个必不可少的交互性组件,在Android中的对应实现就是Spinner

10在Web开发中,HTML中对图片的操作就是提供一个<img>标签,我们通过该标签的src属性来制定图片资源的地址,从而在页面中显示一个图片。那么在Android中,ImageView就是用于图片显示的。

   <ImageView

       android:id="@+id/img"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:contentDescription="ImageView Demo"

       android:src="@drawable/ic_launcher" />

src指定图片资源的位置(res/drawable-xx文件夹内)

ImageButton就是图片按钮,标签同上

原创粉丝点击