安卓开发教程:【天哥】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:
- 设计整体页面的布局,主要有LinearLayout,RelativeLayout。设计宽高以及内外边距等。
- 设计显示号码的输入框,实现拨号可以实时显示在这个输入框中。使用editview部件
- 设计拨号盘,可以点击拨号盘实现获取拨号按钮代表的数字、执行按钮所代表的的功能。先设计一个TableLayout,包括4个TableRow,每个TableRow包含3个Button或者ImageButton。
每个组件基本都需要设置id,宽,高,文字,文字大小,文字颜色,内外边距,按钮要设计绑定点击事件。
再完成activity_main.xml布局对应的活动类:
- 设计每个按钮点击之后的事件逻辑,例如点击数字1,要让数字显示在编辑框;点击拨号,要检测号码正确性,以及向拨号框所显示的号码,调用安卓所提供的的拨号接口进行拨号;点击删除键,输入不为空的时候将输入框中末尾的数字删掉。
- 扩展:当添加联系人按钮的时候,点击联系人键跳转到通讯录页面。
- 扩展:设置聊天记录的查询……
补充细节:
设计布局时:
- 实现点击按钮的时候有按键被点击的效果,点击之后按钮背景颜色变深。
- 按钮可以设置圆角。
- 为功能键设置图片。
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.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/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/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/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/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/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/Biangbangbing/ByDial
更多推荐
Android开发——实现一个拨号器(一)
发布评论