安卓程序设计通讯录

这篇博客探讨了如何在安卓程序设计中利用XML和JAVA创建具有交互效果的通讯录界面,包括圆角矩形、边框设计以及按压状态的变化。通过删除不必要的背景和头像元素,实现了理想的通讯录布局。
摘要由CSDN通过智能技术生成

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="@drawable/bj">

    <RelativeLayout
        android:id="@+id/r_1"
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:gravity="center"
        >
        <ImageView
            android:id="@+id/iv_1"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/txl"
            android:layout_marginLeft="60dp"
            android:layout_marginTop="28dp"
            android:layout_toLeftOf="@id/t_1"
            />
        <TextView
            android:id="@+id/t_1"
            android:layout_width="160dp"
            android:layout_height="60dp"
            android:text="通讯录"
            android:textSize="50sp"
            android:layout_marginTop="23dp"
            android:layout_marginRight="60dp"/>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/ld_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ld_phone"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView"
            android:layout_width="15dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="姓   名:"
            android:textSize="25sp" />

        <EditText
            android:id="@+id/et_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPersonName"
            android:textSize="20sp"
            android:hint="请输入姓名" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/ld_phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ld_email"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="14dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="电   话:"
            android:textSize="25sp" />

        <EditText
            android:id="@+id/et_phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPersonName"
            android:textSize="20sp"
            android:hint="请输入电话" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ld_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_above="@+id/ld_btn"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="16dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="学   号:"
            android:textSize="25sp" />

        <EditText
            android:id="@+id/et_email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPersonName"
            android:textSize="20sp"
            android:hint="请输入学号"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ld_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="20sp"
            android:text="添加"
            android:background="@drawable/bt_1"/>

        <Button
            android:id="@+id/btn_update"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="20sp"
            android:text="修改"
            android:background="@drawable/bt_1"/>

        <Button
            android:id="@+id/btn_query"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:layout_weight="1"
            android:text="查询"
            android:background="@drawable/bt_1"/>

        <Button
            android:id="@+id/btn_delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="20sp"
            android:text="删除"
            android:background="@drawable/bt_1"/>
    </LinearLayout>

    <TextView
        android:id="@+id/ld_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:layout_below="@+id/ld_btn"
        android:textSize="20sp" />
</RelativeLayout>

JAVA:

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;//数据库操作助手类
import android.os.Bundle;
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 implements View.OnClickListener {

        MyHelper myHelper;
        private EditText mEtName;
        private EditText mEtPhone;
        private EditText mEtEmail;
        private TextView mTvShow;
        private Button mBtAdd;
        private Button mBtQuery;
        private Button mBtUpdate;
        private Button mBtDelete;
        public String name;
        public String phone;
        public String email;
        public SQLiteDatabase db;
        public ContentValues values;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            myHelper = new MyHelper(this);
            init();
        }
        //实例化界面,获取各个控件的值
        private void init() {
            mEtName = (EditText) findViewById(R.id.et_name);
            mEtPhone = (EditText) findViewById(R.id.et_phone);
            mEtEmail = (EditText) findViewById(R.id.et_email);
            mTvShow = (TextView) findViewById(R.id.ld_show);
            mBtAdd = (Button) findViewById(R.id.btn_add);
            mBtUpdate = (Button) findViewById(R.id.btn_update);
            mBtQuery = (Button) findViewById(R.id.btn_query);
            mBtDelete = (Button) findViewById(R.id.btn_delete);
            mBtAdd.setOnClickListener(this);
            mBtUpdate.setOnClickListener(this);
            mBtQuery.setOnClickListener(this);
            mBtDelete.setOnClickListener(this);
        }

        @Override
        //点击事件
        public void onClick(View v) {
            switch(v.getId()) {
                //添加数据
                case R.id.btn_add:
                    addText();
                    queryText();
                    break;
                //查询数据
                case R.id.btn_query:
                    queryText();
                    break;
                //修改数据
                case R.id.btn_update:
                    updateText();
                    queryText();
                    break;
                //删除数据
                case R.id.btn_delete:
                    deleteText();
                    queryText();
                    break;
            }
        }
        //添加数据
        public void addText() {
            name = mEtName.getText().toString();
            phone = mEtPhone.getText().toString();
            email = mEtEmail.getText().toString();
            //获取可读写的SQLiteDatabase对象
            db = myHelper.getWritableDatabase();
            //创建ContentValues对象
            values = new ContentValues();
            //将数据添加到ContentValues对象
            values.put("name",name);
            values.put("phone",phone);
            values.put("email",email);

            if (name.equals("")||phone.equals("")||email.equals("")){
                Toast.makeText(this,"添加失败",Toast.LENGTH_SHORT).show();
            }else {
                db.insert("information",null,values);
                Toast.makeText(this, "添加数据成功", Toast.LENGTH_SHORT).show();
            }
            db.close();
        }
        //查询数据
        public void queryText() {
            db = myHelper.getWritableDatabase();
            Cursor cursor = db.query("information",null,null,null,null,null,null);
            if(cursor.getCount() == 0) {
                mTvShow.setText("");
                Toast.makeText(this,"没有数据",Toast.LENGTH_SHORT).show();
            }
            else{
                cursor.moveToFirst();
                mTvShow.setText("姓名:" + cursor.getString(1) + "\t" + "电话:" + cursor.getString(2) + "\t" + "学号:" + cursor.getString(3));
            }
            while(cursor.moveToNext()) {
                mTvShow.append("\n" + "姓名:" + cursor.getString(1) + "\t" + "|电话:" + cursor.getString(2) + "\t" + "|学号:" + cursor.getString(3));
            }
            cursor.close();
            db.close();
        }
        //修改数据
        public void updateText() {
            db = myHelper.getWritableDatabase();
            //实例化一个要修改的数据的对象
            values = new ContentValues();
            values.put("phone",phone = mEtPhone.getText().toString());
            values.put("email",email = mEtEmail.getText().toString());
            //更新并得到行数
            db.update("information",values,"name = ?",new String[]{mEtName.getText().toString()});//  信息(Information),values插入一行
            Toast.makeText(this, "数据修改成功", Toast.LENGTH_SHORT).show();
            db.close();
        }
        //删除数据
        public void deleteText() {
            db = myHelper.getWritableDatabase();
            int i = db.delete("information","name=?",new String[]{mEtName.getText().toString()});
            if(i !=0 ) {
                Toast.makeText(this,"删除数据成功",Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this,"删除数据失败",Toast.LENGTH_SHORT).show();
            }
            db.close();
        }
        class MyHelper extends SQLiteOpenHelper {
            public MyHelper(Context context) {
                super(context,"text.db",null,1);
            }

            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("Create table information(_id integer primary key autoincrement, name varchar(20), phone varchar(20), email varchar(20))");// varchar可变长度字符串
            }

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            }
        }
    }

bt_1 XML形状1:圆角矩形

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#59CF5E"/>
<corners android:radius="90dp"/>
</shape>

bt_2 XML形状2:边框

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <stroke android:width="3dp"
        android:color="#EEC347"/>
</shape>

bt_1 XML形状2:按压变化

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

解释:由于内部应用了背景和头像,故需要删除才能实现

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值