• 安卓(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上面的文字:

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

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

    点击按钮显示提示信息:

    3、ImageView和ImageButton

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

    4、imageView

    (1)导入照片:

     (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)导入图片后书写配置文件:

    <?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("中国加油,武汉加油!!");
        }
    
    }

    总结:

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

     处理前:

    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);
        }
  • 相关阅读:
    Jenkins理解逻辑图
    什么是Jenkins?
    SpringBoot Test及注解详解
    如何熟悉一个新项目
    调用百度OCR模块进行文字识别
    python安装包的方法&安装遇到的问题总结_2020_11_19
    怎么让谷歌浏览器记住密码(不需要任何插件)
    excel以一列数据为x一列为y作折线图
    java创建新java文件的方法
    Mathematics释放变量的方法
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12499970.html
Copyright © 2020-2023  润新知