文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)

2023-08-16 19:47

关注

前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是一、UI界面设计

课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行
课程2:蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)
课程3:蓝牙聊天App设计2:Android Studio制作蓝牙聊天通讯软件(蓝牙搜索配对连接)
课程4:蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

本次项目任务效果图

共有两个界面,一个是蓝牙搜索界面,另一个是聊天界面,效果界面分别如下,文末附有工程源码分享
在这里插入图片描述
在这里插入图片描述

一、创建空项目

创建一个新项目并运行成功第一个程序“Hello World!”
Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行

二、实现第一个界面(蓝牙搜索界面)

1、新建包“MyClass”,然后在包里添加新类“DeviceClass.java”和“DeviceAdapter.java”,用于存储和显示蓝牙内容
在这里插入图片描述
(1)新建包“MyClass”
在这里插入图片描述

(2)新建类“DeviceClass.java”且完整代码如下
在这里插入图片描述

package MyClass;public class DeviceClass {    private String bName; //蓝牙名称    private String bAdress; //蓝牙地址    public DeviceClass(String bName,String bAdress){        this.bName = bName;        this.bAdress = bAdress;    }    public String getbName(){        return bName;    }    public String getbAdress(){        return bAdress;    }}

(3)新建类“DeviceAdapter.java”且完整代码如下
在这里插入图片描述

ppackage MyClass;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.TextView;import com.example.wyb.bluetoothchatui.R;import java.util.List;public class DeviceAdapter extends ArrayAdapter {    private int resourceId;    public DeviceAdapter(Context context, int textViewResourceId, List objects) {        super(context, textViewResourceId, objects);        resourceId = textViewResourceId;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        DeviceClass device = getItem(position);        View view = convertView;        if (view == null) {            view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);        }        TextView textView1 = (TextView) view.findViewById(R.id.textView1);        TextView textView2 = (TextView) view.findViewById(R.id.textView2);        textView1.setText(device.getbName());        textView2.setText(device.getbAdress());        return view;    }}

2、由于原有Button(发送按键)和ListView(蓝牙展示菜单)比较呆板,这里对这两个控件进行自定义样式

在这里插入图片描述

(1)新建“button_style.xml”,且完整代码如下:
在这里插入图片描述

      //设置长和宽      //设置外边框厚度和颜色      //设置内色      //设置圆弧形状的弧度

(2)新建“listview_style1.xml”,且完整代码如下:
在这里插入图片描述

        

3、界面一设计主要代码

(1)在“layout”中新建“device_item.xml”,且完整代码如下:
在这里插入图片描述

                                                

(2)“activity_main.xml”的完整代码如下:

    

(3)“MainActivity.java”的完整代码如下

package com.example.wyb.bluetoothchatui;import android.bluetooth.BluetoothDevice;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import java.util.ArrayList;import java.util.List;import MyClass.DeviceAdapter;import MyClass.DeviceClass;public class MainActivity extends AppCompatActivity {    private DeviceAdapter mAdapter1,mAdapter2;    private List mbondDeviceList = new ArrayList<>();//搜索到的所有已绑定设备保存为列表    private List mfindDeviceList = new ArrayList<>();//搜索到的所有未绑定设备保存为列表    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Show_listView();//显示搜索内容    }    public void Show_listView(){        DeviceClass bondDevice;        DeviceClass findDevice;        //显示已绑定设备        for(int i=1;i<3;i++){            bondDevice = new DeviceClass("蓝牙"+i,"98:EF:22:8A:15:25");            mbondDeviceList.add(bondDevice);        }        mAdapter1 = new DeviceAdapter(MainActivity.this, R.layout.device_item, mbondDeviceList);        ListView listView1 = (ListView)findViewById(R.id.listview1);        listView1.setAdapter(mAdapter1);        mAdapter1.notifyDataSetChanged();        listView1.setOnItemClickListener(toMainActivity2);//设备点击事件,点击设备名称后执行toMainActivity2        //显示未绑定设备        for(int i=1;i<5;i++){            findDevice = new DeviceClass("蓝牙"+i,"98:EF:22:8A:15:25");            mfindDeviceList.add(findDevice);        }        mAdapter2 = new DeviceAdapter(MainActivity.this, R.layout.device_item, mfindDeviceList);        ListView listView2 = (ListView)findViewById(R.id.listview2);        listView2.setAdapter(mAdapter2);        mAdapter2.notifyDataSetChanged();    }    //点击设备后执行的函数    private AdapterView.OnItemClickListener toMainActivity2 =new AdapterView.OnItemClickListener(){        @Override        public void onItemClick(AdapterView adapterView, View view, int i, long l){                }    };}

4、运行界面效果如下

在这里插入图片描述

5、界面色彩微调

我们可以看到,界面的上方颜色在软件中可能不是很协调,那么如果需要,接下来就对颜色进行修改

(1)打开“colors.xml"文件,并修改为如下代码
在这里插入图片描述

    #75b9e6    #75b9e6    #75b9e6

(2)到这里,恭喜你已经完成了第一个界面的设计,
在这里插入图片描述

三、实现第二个界面(聊天界面)

1、新建“Main2Activity”
在这里插入图片描述
在这里插入图片描述

2、添加新类“Msg.java”和“MsgAdapter.java”,用于存储和显示消息内容
在这里插入图片描述

(1)新建“Msg.java”且完整代码如下
在这里插入图片描述

package MyClass;public class Msg {    public static final int TYPE_RECEIVED = 0;    public static final int TYPE_SENT = 1;    private String content;    private int type;    public Msg(String content,int type){        this.content = content;        this.type = type;    }    public String getContent(){        return content;    }    public int getType(){        return type;    }}

(2)新建“MsgAdapter.java”且完整代码如下
在这里插入图片描述

package MyClass;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;import com.example.wyb.bluetoothchatui.R;import java.util.List;public class MsgAdapter extends RecyclerView.Adapter{    private List mMsgList;    static class ViewHolder extends RecyclerView.ViewHolder{        LinearLayout leftLayout;        LinearLayout rightLayout;        TextView leftMsg;        TextView rightMsg;        public ViewHolder(View view){            super(view);            leftLayout = (LinearLayout) view.findViewById(R.id.left_layout);            rightLayout = (LinearLayout) view.findViewById(R.id.right_layout);            leftMsg = (TextView) view.findViewById(R.id.left_msg);            rightMsg = (TextView) view.findViewById(R.id.right_msg);        }    }    public MsgAdapter(List msgList){        mMsgList = msgList;    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.msg_item,parent,false);        return new ViewHolder(view);    }    @Override    public void onBindViewHolder(ViewHolder holder,int position){        Msg msg = mMsgList.get(position);        if(msg.getType() == Msg.TYPE_RECEIVED){            holder.leftLayout.setVisibility(View.VISIBLE);            holder.rightLayout.setVisibility(View.GONE);            holder.leftMsg.setText(msg.getContent());        }        else {            holder.leftLayout.setVisibility(View.GONE);            holder.rightLayout.setVisibility(View.VISIBLE);            holder.rightMsg.setText(msg.getContent());        }    }    @Override    public int getItemCount(){        return mMsgList.size();    }}

3、添加相关依赖

在build.gradle中添加“compile ‘com.android.support:recyclerview-v7:26.+’”依赖,注意版本号与上面一致,然后点击右上角“Sync Now”重新加载资源
在这里插入图片描述

dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:26.+'    compile 'com.android.support:recyclerview-v7:26.+'//注意版本号与上面一致    testCompile 'junit:junit:4.12'}

在这里插入图片描述

4、对发送按键和输入框进行自定义样式,不至于看起来呆板

在这里插入图片描述

(1)新建“send_text.xml”且完整代码如下
在这里插入图片描述

          //设置圆弧形状的弧度

(2)新建“send_btn.xml”且完整代码如下
在这里插入图片描述

          //设置圆弧形状的弧度

5、界面一设计主要代码

(1)“activity_main2”完整代码如下

                                    

(2)在drawable中添加图片
在这里插入图片描述
在这里插入图片描述

(3)在“layout”中新建“msg_item.xml”且完整代码如下
在这里插入图片描述
在这里插入图片描述

                                

(4)“Main2Activity ”的完整代码如下

package com.example.wyb.bluetoothchatui;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Button;import android.widget.EditText;import java.util.ArrayList;import java.util.List;import MyClass.Msg;import MyClass.MsgAdapter;import static com.example.wyb.bluetoothchatui.R.id.send;public class Main2Activity extends AppCompatActivity {    private EditText inputText;    private Button send;    private RecyclerView msgRecyclerView;    private MsgAdapter adapter;    private List msgList = new ArrayList<>();//聊天信息列表    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        inputText = (EditText) findViewById(R.id.input_text);        send = (Button) findViewById(R.id.send);        msgRecyclerView = (RecyclerView) findViewById(R.id.msg_recycler_view);        //适配器匹配        LinearLayoutManager layoutManager = new LinearLayoutManager(this);        msgRecyclerView.setLayoutManager(layoutManager);        adapter = new MsgAdapter(msgList);        msgRecyclerView.setAdapter(adapter);        Show_msgRecyclerView();//聊天信息初始化        //输入发送内容        send.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                String content = inputText.getText().toString();                if(!"".equals(content)){                    Msg msg = new Msg(content, Msg.TYPE_SENT);                    msgList.add(msg);                    adapter.notifyItemInserted(msgList.size()-1);                    msgRecyclerView.scrollToPosition(msgList.size()-1);                    inputText.setText("");                }            }        });    }    //聊天信息初始化    public void Show_msgRecyclerView(){        Msg msg1 = new Msg("通道已连接,我们可以开始聊天了",Msg.TYPE_RECEIVED);        msgList.add(msg1);        Msg msg2 = new Msg("你好,收得到消息不?",Msg.TYPE_SENT);        msgList.add(msg2);        Msg msg3 = new Msg("你好,我收到了",Msg.TYPE_RECEIVED);        msgList.add(msg3);        adapter.notifyDataSetChanged();    }}

6、运行界面效果如下
在这里插入图片描述
7、界面效果微调

我们发现上图的消息框变形拉扯了,不美观,接下来就进行修改完善

(1)选择图片,打开“Create 9-Patch…”,然后点击“OK”
在这里插入图片描述
在这里插入图片描述

(2)点击鼠标拖动,画黑线,如果要取消黑线,按住“Shift”按键并点击鼠标拖动。黑线的作用代表这范围内的可以拉长,效果如下
在这里插入图片描述
在这里插入图片描述
(3)画完黑线后会生成图片“message_left.9.png”和“message_right.9.png”,记得把原来的图片“message_left.png”和“message_right.png”删除,否则运行出错
在这里插入图片描述
在这里插入图片描述

(4)修改完的效果如下
在这里插入图片描述

四、项目效果视频

到这里,本项目就已经完成了,你已经完成了蓝牙聊天软件的界面设计部分,运行效果视频如下

基于Android的蓝牙聊天软件UI效果视频

五、完整项目分享

项目链接:https://pan.baidu.com/s/1SpgNVe72GqEa8b9bixboKg 提取码:2osc

六、蓝牙聊天功能实现

可以看课程蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

来源地址:https://blog.csdn.net/weiybin/article/details/130403706

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯