赞
踩
在前一篇文章 1中实现了使用Android Studio开发Hello World App 2,在这里继续研究Android Studio的使用方法,熟悉简单控件TextView的使用。本文的目标是开发一个简单的聊天室App,实现点击聊天室窗口添加一条聊天记录,长按聊天窗口可以清除所有聊天记录的功能。
一个简单的聊天室布局如下:
为了实现百分比布局,可以在ConstraintLayout中采用添加辅助线(Guideline)的方法 3。在这个聊天室中,可以在0.10的位置添加一条水平辅助线,这样标题、聊天窗口的比例就是10%,90%。然后把2个textview的layout_width和layout_height都设置为0,用辅助线来限制 4。
activity_main.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"> <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/guideline_1" app:layout_constraintGuide_percent=".10" android:orientation="horizontal"/> <TextView android:id="@+id/tv_control" android:layout_width="0dp" android:layout_height="0dp" android:gravity="center" android:text="聊天室效果,点击添加聊天记录,长按删除聊天记录" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="@+id/guideline_1" /> <TextView android:id="@+id/tv_bbs" android:layout_width="0dp" android:layout_height="0dp" android:scrollbars="vertical" android:textColor="#000000" android:textSize="17sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline_1" app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
布局文件activity_main.xml
写好了,然后就要编写代码文件MainActivity.java
。思路是建立两个TextView
变量,在onCreate()
方法中用findViewById()
方法与上面设计的2个TextView
控件对应,然后在tv_bbs
控件上绑定点击和长按监听器。
MainActivity.java的完整代码如下:
package com.example.helloworld; import androidx.appcompat.app.AppCompatActivity; import android.widget.TextView; import android.view.View; import android.view.View.*; import java.text.SimpleDateFormat; import java.util.Date; import android.text.method.ScrollingMovementMethod; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private TextView tv_bbs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_bbs = findViewById(R.id.tv_bbs); tv_bbs.setMovementMethod(new ScrollingMovementMethod()); OnClickListener clickT = new ClickTAction(); OnLongClickListener clickL = new ClickLAction(); tv_bbs.setOnClickListener(clickT); tv_bbs.setOnLongClickListener(clickL); } private final String[] mChatStr = {"您用餐了吗?", "今天是个好日子。", "我赢了!", "我们去看电影,好吗?", "我晚上做什么好呢?" }; private class ClickTAction implements OnClickListener { @Override public void onClick(View v) { if (v.getId() == R.id.tv_bbs) { int r = (int)(Math.random()*10) % 5; String s = String.format("%s\n%s %s", tv_bbs.getText().toString(), getNowTime(), mChatStr[r]); tv_bbs.setText(s); } } } private class ClickLAction implements OnLongClickListener { @Override public boolean onLongClick(View v) { if (v.getId() == R.id.tv_bbs) { tv_bbs.setText(""); } return true; } } private String getNowTime() { SimpleDateFormat s = new SimpleDateFormat("HH:mm:ss"); return s.format(new Date()); } }
ClickTAction
和ClickLAction
是两个分别实现了View.OnClickListener
和View.OnLongClickListener
接口的类,这两个类可以作为公共类MainActivity
的内部类 5。
chatStr
数组存放了要显示的聊天文本,getNowTime()
方法是个自编的函数,用来获取当前的系统时间 6。
为了实现文本的显示,需要使用基本控件TextView。TextView是最基础的文本显示控件 2,用于在界面上显示文本信息 7。在布局文件activity_main.xml
中,可以设置TextView的text
属性,以改变显示文本的内容。textColor
属性用于改变显示文本的颜色,textSize
属性用于改变字体大小。scrollbars
属性用来使文本视图能够上下滑动,显示区域外的文字 8,添加这个属性要同时在代码文件中添加一句:
tv_bbs.setMovementMethod(new ScrollingMovementMethod());
按之前探索的方法 1生成APK文件,然后传输到手机上运行。
Core Java Volume I - Fundamentals (10th Edition), Cay S. Horstmann著. 周立新等译. 机械工业出版社. 2016.8 ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。