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

本文详细介绍了Android应用开发的基础知识,包括布局管理、资源文件、生命周期方法、布局文件的使用等核心内容。从布局理解到资源文件配置,再到程序运行环境的搭建,全面覆盖初学者入门所需。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明原作者:@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;

import android.app.Activity;

import android.os.Bundle;

import android.widget.Button;

import android.widget.TextView;

public class HelloAndroidActivity extends 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-permission android:name="android.permission.INSTALL_PACKAGES"/>

注意配置文件会出现红叉显示Permission is only granted to system apps错误。这里涉及到了手机的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">

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

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

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

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

        <item name="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就是图片按钮,标签同上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值