安卓(Button的两种事件处理方式、imageView、imageButton)

1、按钮(Button)与图片视图(ImageView)

Button继承自TextView。Button本身还有几个子孙类,包括CheckBox、RadioButton(单选框)、Switch(开关)和ToggleButton等。使用Button的时候,首先在XML文件中定义,指定其上显示的文本信息,即按钮名称,然后在代码中定义它所完成的事件,这样用户在点击它的时候就会自动运行点击事件的代码段。

2、Button的两种事件处理方式

(1)现在配置文件中第一两个Button:

        <Button 
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/tv"
            android:layout_alignTop="@id/tv"
            android:onClick="showText"
            android:text="确认"
            />
    
       <Button 
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/btn1"
        android:layout_alignTop="@id/tv"
        android:text="Button2"
        />

定义两个Button分别为btn1和btn2,btn1调用的是MainActivity类里面的函数:

    public void showText(View v) {
        Button btn=(Button)v;
        String string=btn.getText().toString();
        tv.setText(string);
        
    }

效果为显示button上面的文字:

安卓(Button的两种事件处理方式、imageView、imageButton)

 

 对bttton2的设置是通过一个匿名内部类完成的:

    btn2.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                tv.setText("");
                Toast.makeText(getApplicationContext(), "Button 2", 2000).show();
                
            }
        });

点击按钮显示提示信息:

安卓(Button的两种事件处理方式、imageView、imageButton)

 

3、ImageView和ImageButton

ImageView控件可以显示图片,ImageButton控件继承与ImageView,是一个图片按钮。

4、imageView

(1)导入照片:

安卓(Button的两种事件处理方式、imageView、imageButton)

 

 (2)书写配置文件:

图片:

 <ImageView
        android:id="@+id/image"
        android:layout_width="290dp"
        android:layout_height="290dp"
        android:src="@drawable/i1"/>

按钮:

 <Button 
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="88dp"
        android:layout_marginLeft="328dp"
        android:text="@string/change1"
        android:onClick="changeAheadImage" />
    
     <Button 
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="128dp"
        android:layout_marginLeft="328dp"
        android:text="@string/change2"
        android:onClick="changeNextImage" />

(3)书写代码,实现按钮切换图片的功能:

public class MainActivity extends Activity {
    private ImageView image=null;
    private Button btn1=null;
    private Button btn2=null;
    private int ids[]= {
            R.drawable.i1,
            R.drawable.i2,
            R.drawable.i3,
            R.drawable.i4,
            R.drawable.i5,
            
    };
    int count=0;
    int alpha=100;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initViews();
    }

    private void initViews() {
        image=(ImageView)findViewById(R.id.image);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
    }
    
    public void changeAheadImage(View v) {
        image.setImageResource(ids[count-- % ids.length]);
    }

    public void changeNextImage(View v) {
        image.setImageResource(ids[count++ % ids.length]);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

 5、imageButton

(1)导入图片后书写配置文件:

安卓(Button的两种事件处理方式、imageView、imageButton)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!--被点击的话-->
    <item android:state_pressed="true" android:drawable="@drawable/hook"></item>
    <!--上面的不符合条件的话-->
    <item android:drawable="@drawable/cross"></item>
</selector>

(2)对文本和ImageButton进行配置:

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <ImageView 
        android:id="@+id/imageBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/image_selector"
        android:onClick="press"
        />

(3)书写java代码,对ImageButton进行初始化、书写onClick被调用的函数:

public class MainActivity extends Activity {
    private TextView text=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text=(TextView)findViewById(R.id.text);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    public void press(View v) {
        text.setText("中国加油,武汉加油!!");
    }

}

安卓(Button的两种事件处理方式、imageView、imageButton)

 

 

总结:

1、Alt+Shift+M 把一段函数内的代码抽取成方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)

安卓(Button的两种事件处理方式、imageView、imageButton)

 

 处理前:

private void initViews() {
        tv=(TextView)findViewById(R.id.tv);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
    }

处理后:

private void initViews() {
        init();
    }//btn1的事件处理

    private void init() {
        tv=(TextView)findViewById(R.id.tv);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);
    }

 

安卓(Button的两种事件处理方式、imageView、imageButton)

上一篇:django执行迁移命令时报错django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.


下一篇:h5+app 开启位置服务