导航

• 什么是Activity

Posted on 2017-06-16 01:43  Young哥哥  阅读(282)  评论(0编辑  收藏  举报
  • 什么是Activity 

一个Activity通常就是一个单独的屏幕,它上面可以显示一些UI界面(User Interface),也可以实现与用户的交互,获得并处理用户在屏幕上的操作,比如:点击、长按等。

Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。 
在一个android应用中,往往是由多个Activity组成的。

 

/**

 * Android开发是基于SDK框架进行开发的,很多的操作SDk已经封装好了,直接是

使用就可以

 * Activity 必须通过继承的方式来使用

 * 

 * Android使用MVC架构 

 * Control-Activity 

 * View-AndroidUI 

 * Mode-网络、本地、数据库等存取数据

 * 

 * @author Gang

 */

public class MainActivity extends Activity {

 

// Activity 创建时调用的方法,为Activity调用的第一个方法,可以简单的

认为是

    // 应用程序的入口方法

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // 设置Activity显示的界面。

        // 通过R类,类似与指针、目录的类,找到对应的资源

        // 解析XML资源为View对象,显示到屏幕上

        setContentView(R.layout.activity_main);

    }

}

  • 什么是布局Layout

Android的UI(UserInterface)界面是由很多的UI组件构成的,每个组件都有一定的排列方式,布局的作用就是按照一定的方式来排列每个UI组件的。

Android一共具有6种布局,分别是:

    AbsoluteLayout      绝对布局(已过期,不建议使用)

    RelativeLayout      相对布局

    LinearLayout        线性布局

    FrameLayout         帧布局

    TableLayout         表格布局,是LinearLayout的子类

    GridLayout          网格布局(4.0推出)

目前推荐使用RelativeLayout、LinearLayou、FrameLayout三种布局。

  • LinearLayout的使用

线性布局控制其中的控件按照横向或纵向方式排列。

并且线性布局不会换行,当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。

线性布局的默认方向是水平方向(Horizontal)。

属性

介绍

可选项值

android:layout_width

定义控件的宽度

fill_parent/match_parent

 wrap_content/绝对数值

android:layout_height

定义控件的高度

match_parent

“填充满”父容器

 

wrap_content

根据容器内的东西决定组件的大小

 

android:orientation

定义布局内控件或组件的排列方式

vertical 、 horizontal

android:background

设置控件的背景颜色或背景图片

android:background=

"#ffffff"

android:background=

"@drawable/图片名称"

android:id

设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。

android:id = 

"@+id/id的名字"

Android中使用的颜色是 ARBG 颜色

A代表透明度、R代表红色、B代表蓝色、G代表绿色,可以表现的形式如下:

#RGB #0F0

#ARGB #FF00 A透明度 0完全透明 F完全不透明 shape

#RRGGBB

#AARRGGBB

红色    #F00  #FF00  #FF0000  #FFFF0000

绿色    #0F0  #FF00  #00FF00  #FF00FF00



<!-- xmlns:android  为命名空间,相当于 Java的 import -->

 

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

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:background="#FFCC00"

    >

 

</LinearLayout>

 



  • 表单组件之-TextView     

TextView是最基本的UI组件,主要的作用是在界面上来显示文字。有很多的组件是集成自TextView的,TextView所具有的属性,其子类都具有,TextView的用属性:

属性

介绍

可选项值

andorid:text

设置文本的内容

 

android:textColor

设置文本的颜色

 

android:textSize

设置文本的字体大小

 

android:textStyle

设置字体样式

normal 正常

 bold  加粗 italic倾斜

android:gravity

设置文本框内文本的对齐方式

top、bottom、left、right、center、fill、center_vertical、

center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom

android:autoLink

给指定的文本增加可单击的超链接

none、web、email、phone、map和all。

android:drawableLeft

用于在文本框左侧绘制图片

通过“@drawable/图片文件名”来设置。

android:drawableRight

用于在文本框右侧绘制图片

android:drawableTop

用于在文本框上部绘制图片

android:drawableBottom

用于在文本框底部绘制图片

android:singleLine

是否为单行

true/false

android:lines="2"

行数

 

android:ellipsize="marquee"

如果TextView显示不了所有的文字的时候,使用...来省略显示不了的字.

start,middle,

end  在TextView的前面,中间,后面显示省略号 ,marquee 跑马灯方式显示

 

   <TextView

        android:id="@+id/textView1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:autoLink="web"

        android:background="#009933"

        android:drawableTop="@drawable/ic_launcher"

        android:gravity="center"

        android:text="www.baidu.com"

        android:textColor="#003399"

        android:textSize="20sp"

        android:textStyle="normal" />

 <!--跑马灯效果 当字数比较多的情况下,可以以滚屏的方式显示出来 -->

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="这是跑马灯效果这是跑马灯效果这是跑马灯效果这是跑马灯效果这是跑马灯效果"

        android:singleLine="true"

        android:ellipsize="marquee"

        android:focusable="true"

         android:focusableInTouchMode="true"

        android:marqueeRepeatLimit="marquee_forever"

        />

 

 

 

【备注:】sp、dp、dip、pt、px等单位的区别?

  1. dpi    dpi指像素密度。dots per inch  ,即每英寸内像素点的个数。它不是表示长度的单位。在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
  2. dip    device independent pixels  ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
  3. dp     与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
  4. sp      scale  independent  pixel  ,即与缩放比例无关的像素。在android中常用来表示文字大小。
  5. px      表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
  6. pt      point磅。1磅=1/74英寸
  • 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。

 

  • 表单组件之-EditText

EditText是个输入框,主要的作用是获得用户输入的内容。它继承自TextView,拥有 TextView的所有属性。

属性

介绍

可选项值

<requestFocus /> 

获得焦点  显示光标

 

android:hint

跟用户的输入提示

提示的字符串

android:textColorHint

提示字体颜色

颜色

android:textCursorDrawable

光标图片

@null与字体颜色一样

android:inputType

输入框输入数据类型  

textPassword,phone,不同的输入类型会弹出不同的键盘

android:imeOptions

输入法右下角显示的文字

actionSend ,actionSearch等

android:imeActionLabel

横屏时,输入法右边显示的按钮文字

显示的字符串,android:imeOptions="flagNoExtractUi"取消显示右边的按钮

setOnEditorActionListener

输入法右下角点击的操作

 

addTextChangedListener

输入内容发生变化时的操作

 

setError()

设置错误提示,null时取消错误提示

 

             

 

 

 

 

 

 

 

 3. Button 继承自TextView 

  为Button设置监听器(观察者模式)

1.设置同名方法:

android:onClick="btnClick"

public void btnClick(View v){ ... } (点击时调用) 

属性方式设置    属性所对应的值与方法的名字相同

调用所需 Button btn=(Button)findViewById(R.id.btn)

2.设置监听器:

单独写一个实现OnClickListener接口的类

 class BtnClickListener implements OnClickListener {

@override

Public void onClick(View v){

Toast.makeText(实参).show();}

创建子类方式设置
android.view.View

调用所需 Button btn=(Button)findViewById(R.id.btn)

BtnClickListener l = new BtnClickListener();

btn.setOnClickListener(l);

btn.setOnClickListener(new OnClickListener() {

   

   @Override

   public void onClick(View v) {

   

   

   }

  });

匿名内部类方式设置
匿名内部类中使用外部临时变量,需要final修饰

 

btn.setOnClickListener(this)

 

 

 

public void onClick(View v) {....}

1. 当按钮被点击的时候,调用这个方法

2. v 为被点击的组件(触发的组件)

3. 根据v.getId() 判断哪个组件被点击(可用switch语句进行操作)

public void choice(View v){

      String text=null;

      switch (v.getId()) {

      case R.id.radio0:

         text="选项A";

         break;

 


4. Toast
提示

Toast.makeText(MainActivity.this, "登陆成功!",

       Toast.LENGTH_SHORT).show();

 

 

edit.getText().toString()获取文本框中的内容

context 一般 Activty对象 因为Activity继承自 Context

text 要显示的文字

duration 持续的时间 3000   建议使用Toast.LENGTH_SHORT