zoukankan      html  css  js  c++  java
  • android 教程实例系列

    用户界面部分学起来还真是无处下手哇,总不能一个控件发一篇文吧,略有点费时间啊。。。这个难道不是边用边学才给力吗。。所以我打算从最实用的Button开始下手。

      先贴几个链接,好东西:

      android用户界面的详尽教程实例系列:

      http://www.cnblogs.com/aimeng/archive/2012/06/26/2563762.html

      android用户界面教程实例汇总:

      http://www.cnblogs.com/aimeng/archive/2012/06/25/2560905.html

      本文主要内容是Button,相关的链接:

      一个强大的学习贴:

      http://www.apkbus.com/android-48448-1-1.html

      官方文档资料:

      http://developer.android.com/reference/android/widget/Button.html

      http://developer.android.com/guide/topics/ui/controls/button.html

     

    Button基本使用方法

      首先,添加Button控件到XML布局文件中。也可通过程序添加。

      在布局文件中设置按钮的一些属性,如位置,宽高,按钮上的字,颜色等。

      比较重要的是要给按钮一个id号,这是按钮唯一的名字。

      这样在程序中可以通过如下形式获得按钮:

      button = (Button)findViewById(R.id.buttonId);

     

    处理按钮点击

      按钮点击有两种处理方法。

      第一种是通过onClick属性,通过这个属性设置处理点击事件的方法名,在Activity中实现这个方法。

      另一种方法是典型的事件监听机制的应用形式,下面详细说明这两种方法。

     

    1.通过onClick属性设置处理方法

      在XML布局文件中设置Button的属性:

      android:onClick="yourMethodName"

      然后在该布局文件对应的Acitivity中实现该方法:

    复制代码
      /** Called when the user touches the button */
    
      public void yourMethodName(View view)
    
      {
    
           // Do something in response to button click
    
      }
    复制代码

      需要注意的是这个方法必须符合三个条件:

      1.public

      2.返回void

      3.只有一个参数View,这个View就是被点击的这个控件。

     

    2.使用setOnClickListener添加监听器对象

      关于事件监听模式,参见

      http://www.cnblogs.com/mengdd/archive/2012/09/08/2676587.html

      可以写一个内部类,实现OnClickListener接口,在这个类中实现onClick方法,方法里面写在按钮点击时想做的具体工作。

      将这个内部类的对象传入按钮的setOnClickListener方法中,即完成监听器对象和按钮的绑定(在事件源Button上注册了事件监听器),这时候只要按钮被点击,那么监听器对象的onClick方法就会被调用。

      当然这里也不一定要自己写一个内部类出来,比如这个例子

    复制代码
      Button button = (Button) findViewById(R.id.button_send);
    
      button.setOnClickListener(new View.OnClickListener() {
    
          public void onClick(View v) 
    
       {
    
              // Do something in response to button click
    
          }
    
      });
    复制代码

    按钮基本操作实例

      奉上实例一个:

      XML布局文件

    复制代码
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:padding="@dimen/padding_medium"
            android:text="@string/hello_world"
            tools:context=".ButtonActivity" />
    
        <Button
            android:id="@+id/button_first"
            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:text="@string/buttonText"
             android:onClick="changeButtonColor"
            >       
        </Button>    
        
        <Button
            android:id="@+id/button_second"
            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:text="@string/buttonText2"
             android:layout_below="@id/button_first"
             
            >       
        </Button>
    
     </RelativeLayout>
    复制代码

      Activity代码

    复制代码
    package com.example.buttontest;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class ButtonActivity extends Activity 
    {
        private Button button01 = null;
        private Button button02 = null;
    
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_button);
            
            button01 = (Button)findViewById(R.id.button_first);
            button02 = (Button)findViewById(R.id.button_second);
           
            //绑定事件源和监听器对象
            button02.setOnClickListener(new MyButtonListener());
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) 
        {
            getMenuInflater().inflate(R.menu.activity_button, menu);
            return true;
        }
        
        //按钮1的点击事件
        public void changeButtonColor(View view)
        {
            button01.setBackgroundColor(getResources().getColor(R.color.red));
            
        }
        
        //内部类,实现OnClickListener接口
        //作为第二个按钮的监听器类
        class MyButtonListener implements OnClickListener
        {
    
            public void onClick(View v)
            {
                button02.setBackgroundColor(getResources().getColor(R.color.blue));
                
            }
            
            
        }
    
        
    }
    复制代码

      运行截图                       

      点击前:

      点击后:

      相关的资源文件中内容

      strings.xml

    复制代码
    <resources>
    
        <string name="app_name">ButtonTest</string>
        <string name="hello_world">Hello world!</string>
        <string name="menu_settings">Settings</string>
        <string name="title_activity_button">ButtonActivity</string>
        <string name="buttonText">ThisIsAButton</string>
        <string name="buttonText2">ThisIsAnotherButton</string>
    </resources>
    复制代码

      colors.xml

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <color name="red">#f00</color>
        <color name="green">#0f0</color>
        <color name="blue">#00f</color>
        <color name="black">#000</color>
    </resources>
    复制代码

    转自:链接

  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/5178233.html
Copyright © 2011-2022 走看看