android 学习:




button布局


<RelativeLayout xmlns:android=" 
 http:///apk/res/android" 
 
     xmlns:tools=" 
 http:///tools" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     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="com.example.kn_day03_1_button.MainActivity" > 
 
      
 
     
  <!-- 当按钮显示的是纯文字的时候,只需要设置
     android:text属性即可
      --> 
 
     <Button android:id="@+id/btn1" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_alignParentTop="true" 
 
         android:layout_alignParentLeft="true" 
 
         android:layout_alignParentStart="true" 
 
         android:layout_marginTop="10dp" 
 
         android:layout_marginLeft="20dp" 
 
         android:layout_marginStart="20dp" 
 
         android:text="text button" /> 
 
      
 
      
 <!--  当Button只显示一张纯图片的时候
     android:background  设置button上要显示的图片
             纯图片的时候,除了使用Button之外,也可以使用ImageButtuon--> 
 
     <Button android:id="@+id/btn2" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_below="@+id/btn1" 
 
         android:layout_alignRight="@+id/btn1" 
 
         android:layout_alignEnd="@+id/btn1" 
 
         android:layout_marginTop="10dp" 
 
         android:layout_marginLeft="30dp" 
 
         android:layout_marginStart="30dp" 
 
          
 
          
 android:background="@drawable/ic_launcher" 
 
         /> 
 
      
 <!-- 
      当想要让button既显示文字 又显示图片的时候
     1.图片和文字的位置关系是:文字覆盖在图片的上方
     android:backround + android:text属性
      --> 
 
     <Button android:id="@+id/btn3" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_below="@+id/btn2" 
 
         android:layout_alignRight="@+id/btn2" 
 
         android:layout_alignEnd="@+id/btn2" 
 
         android:layout_marginTop="10dp" 
 
          
 
         
  android:background="@drawable/ic_launcher"
         android:text="textpic buttion"
         android:textColor="#f00" 
 
         /> 
 
      
 <!-- 
             当想要让button又显示又显示图片的时候
     2.图片和文字的位置关系,图片显示在文字的周围的时候
     android:text + android:drawable***
     ***代表4个方向
      --> 
 
     <Button android:id="@+id/btn4" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_below="@+id/btn3" 
 
         android:layout_alignRight="@+id/btn3" 
 
         android:layout_alignEnd="@+id/btn3" 
 
         android:layout_marginTop="10dp" 
 
          
 
         
  android: 
 drawableTop 
 ="@drawable/ic_launcher" 
 
         android:text="text below pic button" 
 
         /> 
 
      
 <!-- 当想要让设置了背景的button也具备这种点击和未点击时的区分效果的话,
                需要自己去设置,设置方式:
                在drawable文件夹下创建xml文件,xml文件的跟标签是selector
               将这个xml文件看做一个图片资源设置给背景
       --> 
 
      <Button android:id="@+id/btn5" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_below="@+id/btn4" 
 
         android:layout_alignRight="@+id/btn2" 
 
         android:layout_alignEnd="@+id/btn2" 
 
         android:layout_marginTop="10dp" 
 
          
 
        
   
  android:drawableTop="@drawable/ 
 btn_bg 
 " 
 
         /> 
 
 </RelativeLayout>



btn_bg .xml内容如下:



<?xml version="1.0" encoding="utf-8"?> 
 
 <selector xmlns:android=" 
 http:///apk/res/android" > 
 
     
  <!-- selector  背景选择器
     特点:自动根据当前情况去选择相应的要显示的图片
     创建item标签,标签中去设置当前的状态,以及此状态下对应要显示那张图
      --> 
 
      <!-- 代表按钮被点击 --> 
 
      <item android:state_pressed="true"  android:drawable="@drawable/pic6"></item> 
 
 <!-- 按钮没有被点击 --> 
 
 <item android:state_pressed="false"  android:drawable="@drawable/pic7"></item> 
 

 </selector> 
  
 
 
 
button 点击事件
 
给Button设置点击事件的方式一
 

 
public class MainActivity extends Activity {
 

 
 /*
 
  * Button 按钮
 
  * 可以显示一些文字,可以显示一张图片,或者说显示文字加图片,
 
  * 被点击并给予回应的效果
 
  *
 
  * 需求:
 
  * 页面上显示一个TextView,一个Button
 
  * 每当点击Button之后,TextView上显示的文字要加加
 
  *
 
  * 获取Button被点击的时候,--设置Button的点击监听事件
 
  * 方式:
 
  * 一:
 
  * 在xml布局文件中,给Button设置一个onClick属性
 
  * 属性值的设置:任意字符串 (点击方法的名称)
 
  *
 
  *  在当前的页面处理类,即Activity的子类中
 
  *  自定义一个方法,要求有以下几点:
 
  *  1. 
 该方法的方法名必须与onClick属性的属性值(点击方法的名称)完全一致
 
  *  2. 
 该方法的访问修饰符和返回值类型必须是public void
 
  *  3. 
 该方法必须定义一个参数列表,要求参数列表中有且只能有一个View类型的参数
 
  *  
 
  *  当定义的方法满足以上3条条件的时候,每当点击按钮的时候都会运行此方法
 
  *
 
  * */
 
 TextView tv1=null;
 
 int num = 0;
 
 @Override
 
 protected void onCreate(Bundle savedInstanceState) {
 
  super.onCreate(savedInstanceState);
 
  setContentView(R.layout 
 .clickbtn 
 );
 
  tv1 = (TextView)findViewById(.textview1);
 
 
 
  System.out.println(""+tv1.getText());
 
 }
 

 
 public void btn_add(View view){
 
  num++;
 
  /*
 
   * 注意:当要让TextView上显示自定义的int数值时,必须将此值转成String
 
   * 类型再去显示
 
   *
 
   * 原因:系统默认当setText方法的参数是int值,默认认为此int是R中的int值
 
   * 即会将此int值当做资源文件的id去进行查找,我们通常自定义的1,2,等数字在R中肯定
 
   * 没有对应的资源,因此,抛出一个ResourceNotFoundException
 
   * */
 
  tv1.setText(num+"");
 
 }
 
 public void btn_minus(View view){
 
  num--;
 
  tv1.setText(num+"");
 
 }
 
}
 
clickbtn.xml:
 

  <?xml version="1.0" encoding="utf-8"?> 
 
 <RelativeLayout xmlns:android=" 
 http:///apk/res/android" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" > 
 
      
 
     <TextView android:id="@+id/textview1" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_alignParentTop="true" 
 
         android:layout_alignParentLeft="true" 
 
         android:layout_alignParentStart="true" 
 
         android:layout_marginLeft="30dp" 
 
         android:layout_marginStart="30dp" 
 
         android:layout_marginTop="30dp" 
 
         android:text="0" 
 
         /> 
 

     <Button 
 
         android:id="@+id/btn1" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
         android:layout_alignLeft="@+id/textview1" 
 
         android:layout_alignStart="@+id/textview1" 
 
         android:layout_below="@+id/textview1" 
 
         android:layout_marginTop="23dp" 
 
         
  android:onClick="btn_add" 
 
         android:text="自增" /> 
 
     <Button 
 
         android:id="@+id/btn2" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
         android:layout_alignLeft="@+id/btn1" 
 
         android:layout_alignStart="@+id/btn1" 
 
         android:layout_below="@+id/btn1" 
 
         android:layout_marginTop="23dp" 
 
        
   android:onClick="btn_minus" 
 
         android:text="自减" /> 
 

 </RelativeLayout>


*******************************************************


给Button设置点击事件的方式二


public class ButtonOnclick extends Activity { 

 
 
 
 

   /* 

 

    * 给Button设置点击事件的方式二: 

 

    * 

 

    * */ 

 

   int num = 0; 

 

   TextView textview1; 

 

   @Override 

 

   protected void onCreate(Bundle savedInstanceState) { 

 

    // TODO Auto-generated method stub 

 

    super.onCreate(savedInstanceState); 

 

    setContentView(R.layout.onclickbtn); 

 

    

 

    textview1 = (TextView)findViewById(.textview1); 

 

    Button btn_add = (Button)findViewById(.btn_add); 

 

    Button btn_minus = (Button)findViewById(.btn_minus); 

 

    //给button设置点击事件 

 
 btn_add.setOnClickListener(new OnClickListener() {
 

      

 

     @Override 

 

     public void onClick(View v) { 

 

      // TODO Auto-generated method stub 

 

      num++; 

 

      textview1.setText(""+num); 

 

     } 

 

    }); 

 

    //那么都会运行BtnOnClick类中的onClick方法 

 
  btn_minus.setOnClickListener(new BtnOnClick());
 

   } 

 
 
 
 
BtnOnClick implements OnClickListener{ 

 
 
 
 

    @Override 

 

    public void onClick(View v) { 

 

     // TODO Auto-generated method stub 

 

     num--; 

 

     textview1.setText(""+num); 

 

    } 

 

   } 

 

  } 

 
onclickbtn.xml: 
 
 

  <?xml version="1.0" encoding="utf-8"?> 
 
 <RelativeLayout xmlns:android=" 
 http:///apk/res/android" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" > 
 
      
 
     <TextView android:id="@+id/textview1" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_alignParentTop="true" 
 
         android:layout_alignParentLeft="true" 
 
         android:layout_alignParentStart="true" 
 
         android:layout_marginTop="30dp" 
 
         android:layout_marginLeft="30dp" 
 
         android:layout_marginStart="30dp" 
 
         android:text="0" 
 
         /> 
 
     <Button android:id="@+id/btn_add" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_alignLeft="@+id/textview1" 
 
         android:layout_alignStart="@+id/textview1" 
 
         android:layout_marginTop="30dp" 
 
         android:layout_below="@+id/textview1" 
 
         android:text="自增"/> 
 
     <Button android:id="@+id/btn_minus" 
 
         android:layout_width="wrap_content" 
 
         android:layout_height="wrap_content" 
 
          
 
         android:layout_alignLeft="@+id/textview1" 
 
         android:layout_alignStart="@+id/textview1" 
 
         android:layout_marginTop="30dp" 
 
         android:layout_below="@+id/btn_add" 
 
         android:text="自减"/> 
 

 </RelativeLayout>


**************************************************************


给Button设置点击事件的方式三




public class ButtonOnClick3 extends Activity implements OnClickListener 

 
 
  

 
 
  /*给Button设置点击事件的方式三*/ 

 
 
  int num = 0; 

 
 
  TextView textview1; 

 
 
  Button btn_add; 

 
 
  Button btn_minus; 

 
 
  @Override 

 
 
  protected void onCreate(Bundle savedInstanceState) { 

 
 
   super.onCreate(savedInstanceState); 

 
 
   setContentView(R.layout.onclickbtn); 

 
 
   textview1 = (TextView)findViewById(.textview1); 

 
 
   btn_add = (Button)findViewById(.btn_add); 

 
 
   btn_minus = (Button)findViewById(.btn_minus); 

 
 
   btn_add.setOnClickListener(this); 

 
 
   btn_minus.setOnClickListener(this); 

 
 
  }; 

 
 
  @Override 

 
 
  public void onClick(View v) { 

 
 
   // TODO Auto-generated method stub 

 
 
 // 通过getId方法获取当前被点击对象的id值 

 
 
   switch (v.getId()) { 

 
 
 case .btn_add: 

 
 
    num++; 

 
 
    textview1.setText("" + num); 

 
 
    /* 

 
 
     * 在Android中输出推荐使用 

 
 
     * Log.i的方法 

 
 
     * 参数一:自定义的字符串,描述当前输出的Tag信息? 

 
 
     * 参数 二:自定义的字符串,代表要输出的信息 

 
 
     * 稍后再LogCat窗口中输出的时候, 

 
 
     * 参数一显示在Tag标签下,参数二显示在Text标签下 

 
 
     * 

 
 
     * 实现LogCat过滤的方式: 

 
 
     * 点击旁边的+号,添加相应的过滤条件 

 
 
     * */ 

 
 
    Log.i("====", "num  ======= "+num); 

 
 
    break; 

 
 
   case .btn_minus: 

 
 
    num--; 

 
 
    textview1.setText("" + num); 

 
 
    break; 

 
 
  

 
 
   default: 

 
 
    num = 0; 

 
 
    textview1.setText("" + num); 

 
 
    break; 

 
 
   } 

 
 
   

 
 
  } 

 
 
  

 
 
 }