Android开发——实现一个拨号器(一)

安卓开发教程:【天哥】Android开发视频教程最新版 Android Studio开发_哔哩哔哩_bilibili

开发平台:Android Stdio(和idea里面自带的一模一样,直接分开用Android Stdio挺好)

下载地址:Download Android Studio and SDK tools  |  Android Developers

准备工作

下载好开发工具,Android Studio。下载SDK,注意版本,我之前自己默认下载的31,但是好像不适配,R30可以。

查看自己下没下载,以及版本是什么,可以在这个地方管理:

 

开发流程

新建文件

 先来熟悉目录

 

 每当我们需要设计一个页面时,必须在layout下设计一个.xml文档描述布局,在java中设计一个java活动类描述页面逻辑,并且要在配置文件中注册这个活动,具体可以走如下流程:

1.先创建java活动类

 2.发现会同步生成对应的布局文件

3.同时在配置文件中也自动登记了相应的活动 (但如果当时创建的不是活动,而只是一个简单的java文件,23都需要自己手动完成)

coding

先写布局文件activity_main.xml:

  1. 设计整体页面的布局,主要有LinearLayout,RelativeLayout。设计宽高以及内外边距等。
  2. 设计显示号码的输入框,实现拨号可以实时显示在这个输入框中。使用editview部件
  3. 设计拨号盘,可以点击拨号盘实现获取拨号按钮代表的数字、执行按钮所代表的的功能。先设计一个TableLayout,包括4个TableRow,每个TableRow包含3个Button或者ImageButton。

每个组件基本都需要设置id,宽,高,文字,文字大小,文字颜色,内外边距,按钮要设计绑定点击事件。

再完成activity_main.xml布局对应的活动类:

  1. 设计每个按钮点击之后的事件逻辑,例如点击数字1,要让数字显示在编辑框;点击拨号,要检测号码正确性,以及向拨号框所显示的号码,调用安卓所提供的的拨号接口进行拨号;点击删除键,输入不为空的时候将输入框中末尾的数字删掉。
  2. 扩展:当添加联系人按钮的时候,点击联系人键跳转到通讯录页面。
  3. 扩展:设置聊天记录的查询……

补充细节:

设计布局时:

  1. 实现点击按钮的时候有按键被点击的效果,点击之后按钮背景颜色变深。
  2. 按钮可以设置圆角。
  3. 为功能键设置图片。
package com.example.bydialer;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private Button num1,num2,num3,num4,num5,num6,num7,num8,num9,num0,numX,numJ,Dial,contact,delete;
    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.display);

    }
    public void clickNum(View view){
        String str = editText.getText().toString();
        str += view.getTag().toString();
        editText.setText(str);
    }

    public void contacts(View view){   //查看联系人的功能还没讲完,这个部分的函数体可以先空着
        //Intent intent = new Intent(MainActivity.this,ContactActivity.class);
        //startActivity(intent);
    }


    public void dial(View view){
        String str = editText.getText().toString();
        if ((str !=null) && (!str.trim().equals(""))){
            Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+str));
            startActivity(intent);
        }
        else{
            Toast.makeText(MainActivity.this,"请输入号码",Toast.LENGTH_LONG).show();
        }
    }

    public void delete(View view){
        String str = editText.getText().toString();
        if((str != null) && (!str.trim().equals(""))) {
            str = str.substring(0, str.length() - 1);
            editText.setText(str);
        }
    }

}

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="0dp">

    <TextView
        android:id="@+id/tV_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textColor="#000000"
        android:textSize="24sp"/>

    <LinearLayout
        android:id="@+id/dialpad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginEnd="0dp"
        android:layout_marginBottom="0dp"
        android:background="@color/white"
        android:orientation="vertical"
        android:padding="20dp">

        <EditText
            android:id="@+id/display"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:layout_weight="2"
            android:background="#FFFFFF"
            android:ems="10"
            android:focusable="false"
            android:gravity="center"
            android:hint="请输入号码"
            android:textColor="#000000"
            android:textSize="24sp">

            <requestFocus></requestFocus>
        </EditText>

        <TableLayout
            android:id="@+id/buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="@color/cardview_light_background">

            <TableRow
                android:id="@+id/buttonRow1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:orientation="horizontal"
                android:padding="5dp">

                <Button
                    android:id="@+id/num1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="1"
                    android:text="1"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="2"
                    android:text="2"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="3"
                    android:text="3"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>
            </TableRow>

            <TableRow
                android:id="@+id/buttonRow2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:orientation="horizontal"
                android:padding="5dp">

                <Button
                    android:id="@+id/num4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="4"
                    android:text="4"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num5"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="5"
                    android:text="5"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num6"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="6"
                    android:text="6"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>
            </TableRow>

            <TableRow
                android:id="@+id/buttonRow3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:orientation="horizontal"
                android:padding="5dp">

                <Button
                    android:id="@+id/num7"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="7"
                    android:text="7"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num8"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="8"
                    android:text="8"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num9"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="9"
                    android:text="9"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>
            </TableRow>

            <TableRow
                android:id="@+id/buttonRow4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:orientation="horizontal"
                android:padding="5dp">

                <Button
                    android:id="@+id/numX"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="*"
                    android:text="*"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/num0"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="0"
                    android:text="0"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>

                <Button
                    android:id="@+id/numJ"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/num"
                    android:onClick="clickNum"
                    android:tag="#"
                    android:text="#"
                    android:textColor="@color/black"
                    android:textSize="24sp"></Button>
            </TableRow>
        </TableLayout>

        <TableRow
            android:id="@+id/buttonRow5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="10dp"
            android:background="@color/white"
            android:orientation="horizontal"
            android:padding="0dp">

            <ImageButton
                android:id="@+id/Contact"
                android:layout_width="1dp"
                android:layout_height="50dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:background="@drawable/contacts"
                android:onClick="contacts"
                android:text="10"
                android:textColor="@color/black"
                android:textSize="24sp"></ImageButton>

            <ImageButton
                android:id="@+id/Dial1"
                android:layout_width="1dp"
                android:layout_height="50dp"
                android:layout_gravity="center"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/dialer"
                android:onClick="dial"
                android:text=""
                android:textColor="@color/black"
                android:textSize="24sp"></ImageButton>

            <ImageButton
                android:id="@+id/Dial2"
                android:layout_width="1dp"
                android:layout_height="50dp"
                android:layout_gravity="center"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/dialer"
                android:onClick="dial"
                android:text="9"
                android:textColor="@color/black"
                android:textSize="24sp"></ImageButton>

            <ImageButton
                android:id="@+id/Dial3"
                android:layout_width="1dp"
                android:layout_height="50dp"
                android:layout_gravity="center"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/delete"
                android:onClick="delete"
                android:text="9"
                android:textColor="@color/black"
                android:textSize="24sp"></ImageButton>
        </TableRow>
    </LinearLayout>

</RelativeLayout>

 contacts.xml(设计联系人按钮的格式)

<?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/contact1">
        <shape>
            <solid android:color="#999999"/>
            <corners android:radius="5dp"/>
        </shape>

    </item>
    <item android:state_pressed="false"
        android:drawable="@drawable/contact0">
        <shape>
            <solid android:color="#FFFFFF"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
</selector>

delete.xml(设计删除按钮的格式)

<?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/delete2">
        <shape>
            <solid android:color="#999999"/>
            <corners android:radius="5dp"/>
        </shape>


    </item>
    <item android:state_pressed="false"
        android:drawable="@drawable/delete2">
        <shape>
            <solid android:color="#FFFFFF"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
</selector>

 dialer.xml(设计拨号按钮的格式)

<?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/dial3">
        <shape>
            <solid android:color="#999999"/>
            <corners android:radius="5dp"/>
        </shape>


    </item>
    <item android:state_pressed="false"
        android:drawable="@drawable/dial2">
        <shape>
            <solid android:color="#FFFFFF"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
</selector>

num.xml(设计数字1-0,*,#按钮的格式)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#999999"/>
            <corners android:radius="5dp"/>
        </shape>

    </item>
    <item android:state_pressed="false">
        <shape>
            <solid android:color="#FFFFFF"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
</selector>

ps:@drawable/照片名(这些照片我都放在了res/drawable-xxxhdpi,等下会有整个工程文件的链接)

运行模拟

让代码跑起来,验证方式有两种,模拟器&真机验证。

模拟器:配置avd模拟器

 

选择系统镜像文件

 

 运行项目

真机:

手机打开开发者模式。

开发者模式下允许usb传输数据。

用数据线连接到电脑。

上侧会自动弹出识别手机型号。     

 启动项目,安装app,就可以了。

效果如下图:

         

工程文件:

https://github.com/Biangbangbing/ByDial

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值