Android第三讲笔记(Activity简单操作)

Activity的概念

Activity是Android四大组件之一,为用户提供与系统交互的界面,对页面进行逻辑的操作
例如:QQ的界面每个人信息不一样,点击登陆按钮后的操作等等

Activity的操作

获得控件的方法

首先,在对控件进行交互时,要获得控件。通过**findViewById(R.id.控件id)**获得控件。然后可以对控件进行操作,下面是简单的演示。(关于R,创建的每一个工程出来src文件夹之外还有一个gen文件夹,gen里面有一个R.java,你在res目录下使用的图片,布局等资源都会在gen目录里的R。java自动生成对应的id。方便你调用)
在这里插入图片描述

按钮点击事件

点击事件
1.实现类继承View.OnClickListener并且重写onClick方法
2.匿名类实现
3.拉姆达表达式实现。用此方法接口名字可以省略,方法名字也可以省略,但接口中只能有一个方法。
详细见代码
在这里插入图片描述

示例一:点击按钮打印日志

Log.i(“标签名字”,“打印内容”);
在这里插入图片描述
Activity代码:

package com.hnucm.android_03;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        通过代码修改文本的值
//        第一步 拿到文本的引用   根据文本的内存地址找到这个控件
        TextView textView= findViewById(R.id.textView5);
        textView.setText("湖南中医药大学");
        //给浮点类型的数据,浮点类型可以转成sp
        textView.setTextSize(50);

        //拿到按钮的引用
        Button button = findViewById(R.id.button);

        //创建了一个类,实现了接口,匿名内部类
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("MainActivity","MyOnClick");
            }
        });

        //接口的名字也可以省略,方法的名字也可以省略,参数名字也可以省略
        //拉姆达表达式  接口只能有一个方法
        button.setOnClickListener(
                (v) -> {
                    Log.i("MainActivity","MyOnClick");
                }
        );


    }
}

示例二:获取文本值并判断正误

这里用到了在app中打印的方法。
核心代码:Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_LONG).show();
这个方法需要传递三个参数,第一个是Context,是Toast的上下文,由于活动本身继承了Context对象,使用当前Activity即可。第二个参数是Toast显示的内容。第三个参数是Toast显示的时长。
在这里插入图片描述
在这里插入图片描述
Activity代码

package com.hnucm.android_03;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText usernameText = findViewById(R.id.editTextTextPersonName);
        EditText passwordText = findViewById(R.id.editTextTextPersonName2);


//        MainActivity的父类的父类的父类的......是Context
        Button button=findViewById(R.id.button2);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = usernameText.getText().toString();
                String password = passwordText.getText().toString();

                if(username.equals("hnucm")&&password.equals("123456")){
                    Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_LONG).show();
                }
                else{
                    Toast.makeText(MainActivity.this,"登陆失败",Toast.LENGTH_LONG).show();
                }
            }
        });

    }
}

示例三:简单加法计算器

在获得文本控件的数值之后,经过计算返回结果给另一个文本控件
在这里插入图片描述
Activity代码

package com.hnucm.android_03;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText num1 = findViewById(R.id.textView2);
        EditText num2 = findViewById(R.id.textView3);
        EditText result=findViewById(R.id.textView4);
//        MainActivity的父类的父类的父类的......是Context
        Button button=findViewById(R.id.button3);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int i = Integer.parseInt(num1.getText().toString());
                int j = Integer.parseInt(num2.getText().toString());
                result.setText((i+j)+"");
            }
        });

    }
}

示例四:实现了加减乘除的计算器

预告:过几天会将实现的多个数字加减乘除的计算器代码放出来(虽然已经完成了,因为这个是作业,很多同学还未完成,作业截止后发出)先放几张图。

xml布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/five"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="5"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/two"
        app:layout_constraintEnd_toStartOf="@+id/six"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/four" />

    <TextView
        android:id="@+id/six"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="6"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/three"
        app:layout_constraintEnd_toStartOf="@+id/minus"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/five" />

    <TextView
        android:id="@+id/seven"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="7"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/four"
        app:layout_constraintEnd_toStartOf="@+id/eight"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/nine"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="9"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/six"
        app:layout_constraintEnd_toStartOf="@+id/multiplication"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/eight" />

    <TextView
        android:id="@+id/multiplication"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="*"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/minus"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/nine" />

    <TextView
        android:id="@+id/eight"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="8"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/five"
        app:layout_constraintEnd_toStartOf="@+id/nine"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/seven" />

    <TextView
        android:id="@+id/zero"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="0"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/point"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/op" />

    <TextView
        android:id="@+id/add"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="+"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/equal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/three" />

    <TextView
        android:id="@+id/one"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="1"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/op"
        app:layout_constraintEnd_toStartOf="@+id/two"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/three"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="3"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/point"
        app:layout_constraintEnd_toStartOf="@+id/add"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/two" />

    <TextView
        android:id="@+id/minus"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="-"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/add"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/six" />

    <TextView
        android:id="@+id/two"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="2"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/zero"
        app:layout_constraintEnd_toStartOf="@+id/three"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/one" />

    <TextView
        android:id="@+id/four"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="4"
        android:background="?android:attr/selectableItemBackground"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/one"
        app:layout_constraintEnd_toStartOf="@+id/five"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/point"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="."
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/equal"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/zero" />

    <ImageView
        android:id="@+id/op"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:background="?android:attr/selectableItemBackground"
        android:src="@drawable/op"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/zero"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

    <ImageView
        android:id="@+id/clear1"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:src="@drawable/cancel"
        android:text="TextView"
        android:background="?android:attr/selectableItemBackground"
        app:layout_constraintBottom_toTopOf="@+id/eight"
        app:layout_constraintEnd_toStartOf="@+id/present"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/ac" />

    <TextView
        android:id="@+id/ac"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="AC"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/seven"
        app:layout_constraintEnd_toStartOf="@+id/clear1"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/division"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="/"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/multiplication"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/present" />

    <TextView
        android:id="@+id/present"
        android:layout_width="104dp"
        android:layout_height="70dp"
        android:gravity="center"
        android:text="%"
        android:background="?android:attr/selectableItemBackground"
        android:textColor="#FF7433"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/nine"
        app:layout_constraintEnd_toStartOf="@+id/division"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/clear1" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="32dp"
        android:ems="10"
        android:gravity="right"
        android:focusable="false"
        android:inputType="textPersonName"
        android:textSize="40sp"
        app:layout_constraintBottom_toTopOf="@+id/clear1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent" />

    <ImageView
        android:id="@+id/equal"
        android:layout_width="104dp"
        android:layout_height="70dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/point"
        android:background="?android:attr/selectableItemBackground"
        app:srcCompat="@drawable/equal" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity代码

package com.hnucm.c201901020241;

import androidx.appcompat.app.AppCompatActivity;

import android.media.Image;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import java.sql.SQLOutput;
import java.util.Vector;

public class MainActivity extends AppCompatActivity {
    int ju=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String pre=null;


        TextView clear = findViewById(R.id.ac);//清空
        ImageView equal = findViewById(R.id.equal);//等于

        ImageView clear1=findViewById(R.id.clear1);//删除一个


        final EditText result = findViewById(R.id.editText);//显示运算



        TextView add = findViewById(R.id.add);//加
        TextView minus = findViewById(R.id.minus);//减
        TextView multiplication = findViewById(R.id.multiplication);//乘
        TextView division = findViewById(R.id.division);//除
        TextView remainder = findViewById(R.id.present);//取余

        TextView zero = findViewById(R.id.zero);//0
        TextView one = findViewById(R.id.one);//1
        TextView two = findViewById(R.id.two);//2
        TextView three = findViewById(R.id.three);//3
        TextView four = findViewById(R.id.four);//4
        TextView five = findViewById(R.id.five);//5
        TextView six = findViewById(R.id.six);//6
        TextView seven = findViewById(R.id.seven);//7
        TextView eight = findViewById(R.id.eight);//8
        TextView nine = findViewById(R.id.nine);//9
        TextView point=findViewById(R.id.point);//.

        class onClick implements View.OnClickListener {

            @Override
            public void onClick(View v) {
                System.out.println(v);
                String str = result.getText().toString();
                if(ju==1){
                    ju=0;
                    str="";
                }
                if (v instanceof TextView) {
                    if(v.getId()==R.id.ac)result.setText("");
                    else{
                        char k='1';
                        String now=((TextView) v).getText().toString();
                        if(str.length()>1) k=str.charAt(str.length()-1);
                        if((now.equals("+")||now.equals("-")||now.equals("*")||now.equals("/"))&&(k=='+'||k=='-'||k=='*'||k=='/')) {
                            result.setText(str.substring(0,str.length()-1) + ((TextView) v).getText().toString());
                            System.out.println(now);
                            System.out.println(k);
                        }
                        else result.setText(str+((TextView) v).getText().toString());
                    }
                }
                else if(v instanceof ImageView){
                    if(v.getId()==R.id.clear1){//删除一个

                        if(str!=null&&!str.equals("")){
                            result.setText(str.substring(0,str.length()-1));
                        }
                    }
                    else if(v.getId()==R.id.equal) {
                        str+="=";
                        result.setText(str);
                        String sum = getResult(result.getText().toString());
                        result.setText(str+sum);
                        ju=1;
                    }
                }
            }
        }

        zero.setOnClickListener(new onClick());
        one.setOnClickListener(new onClick());
        two.setOnClickListener(new onClick());
        three.setOnClickListener(new onClick());
        four.setOnClickListener(new onClick());
        five.setOnClickListener(new onClick());
        six.setOnClickListener(new onClick());
        seven.setOnClickListener(new onClick());
        eight.setOnClickListener(new onClick());
        nine.setOnClickListener(new onClick());
        add.setOnClickListener(new onClick());
        minus.setOnClickListener(new onClick());
        multiplication.setOnClickListener(new onClick());
        division.setOnClickListener(new onClick());
        remainder.setOnClickListener(new onClick());
        clear.setOnClickListener(new onClick());
        result.setOnClickListener(new onClick());
        equal.setOnClickListener(new onClick());
        clear1.setOnClickListener(new onClick());
        point.setOnClickListener(new onClick());

    }
    public String getResult(String s){//开始计算
        if(s==null||s.equals(""))return "";
        double num=0;
        int i,flag=0,ju=0;
        double temp=0;
        Vector<Double> a = new Vector<Double>();
        Vector<Character>b=new Vector<Character>();
        char op1,op2;
        for(i=0;i<s.length();i++){//将数字和操作符存下来
            char k=s.charAt(i);
            if(k>='0'&&k<='9'&&flag==0){
                temp*=10;
                temp+=k-'0';ju=1;
            }
            else if(k>='0'&&k<='9'&&flag>0){
                temp+=(k-'0')/Math.pow(10,flag);
                flag++;
                ju=1;
            }
            else if(k=='.')flag=1;
            else {
                a.add(temp);b.add(k);temp=0;flag=0;ju=0;
            }
        }
        if(ju==1)a.add(temp);
        if(a.size()==1)return a.get(0)+"";
        int ans=1;
        char pre,now;
        pre=b.get(0);
        double l=a.get(0),r=a.get(1);
        for(i=2;i<a.size();i++){
            double rr=a.get(i);
            now=b.get(ans++);
            if(now=='+'||now=='-'){
                if(pre=='+') {
                    l += r;
                    r = rr;
                }
                else if(pre=='-'){
                    l-=r;
                    r=rr;
                }
                else if(pre=='*'){//这两种情况只在第一个预算符是乘除时出现
                    l*=r;
                    r=rr;
                }
                else if(pre=='/'){
                    if(r==0)return "ERROR";
                    l/=r;
                    r=rr;
                }
                else if(pre=='%'){
                    l%=r;
                    r=rr;
                }
                pre=now;
            }
            else if(now=='*'){
                r=rr*r;
            }
            else if(now=='/'){
                if(rr==0)return "ERROR";
                r=r/rr;
            }
            else if(now=='%'){
                r=r%rr;
            }
        }
        if(pre=='+') return l+r+"";
        else if(pre=='-')return l-r+"";
        else if(pre=='*')return l*r+"";
        else if(pre=='/'){
            if(r!=0) return l/r+"";
            else return "ERROR";
        }
        else if(pre=='%')return (int)l%(int)r+"";
        else return "";
    }
}

在这里插入图片描述
在这里插入图片描述

补充

出现错误解决方法(在模拟器中出现错误)
报错了,没有这个id
在这里插入图片描述
1.查看日志在这里插入图片描述
2.分析错误的位置
在这里插入图片描述
欢迎批评指正,未完待续…

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a碟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值