登录活动:
class MainActivity : AppCompatActivity() ,View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button)
button.setOnClickListener(this)
val button1: Button = findViewById(R.id.button1)
button1.setOnClickListener{//按退出按钮退出程序
android.os.Process.killProcess(android.os.Process.myPid())
}
}
override fun onClick(v: View?) {
val editText:EditText = findViewById(R.id.editText)
val textView: TextView = findViewById(R.id.textView2)
when(v?.id){
R.id.button -> {
val inputText = editText.text.toString()
val data = textView.getText().toString()
val intent = Intent(this,xryActivity2::class.java)
if ( inputText == "123456" && data == "Xueruoyu"){
intent.putExtra("extra_data",data)
startActivity(intent)
}else{
AlertDialog.Builder(this).apply {
setTitle("提示信息:")
setMessage("用户名和密码错误!")
setCancelable(false)
setPositiveButton("确定"){
dialog,which ->
}
setNegativeButton("取消"){
dialog,which ->finish()
System.exit(0)
}
show()
}
}
}
}
}
}
<?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">
<EditText
android:id="@+id/editText"
android:layout_width="252dp"
android:layout_height="55dp"
android:hint="请输入密码"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.603"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.445"
tools:ignore="SpeakableTextPresentCheck"/>
<TextView
android:id="@+id/textView"
android:layout_width="102dp"
android:layout_height="61dp"
android:text="密码:"
android:textSize="25dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.097"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.461"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/button"
android:layout_width="96dp"
android:layout_height="57dp"
android:text="登录"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.349"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.565" />
<Button
android:id="@+id/button1"
android:layout_width="96dp"
android:layout_height="57dp"
android:text="退出"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.755"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.565" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Xueruoyu"
android:textSize="22dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.333" />
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/img_1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.183"
tools:ignore="MissingClass,MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
聊天列表:
class xryActivity2 : AppCompatActivity(){
private val List = ArrayList<Messages>()
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recyclerview)
val recyclerView=findViewById<RecyclerView>(R.id.recycleViewItem)
initMessages()
recyclerView.layoutManager = LinearLayoutManager(this)
val adapter=MyAdapter(List)
recyclerView.adapter=adapter
val mDivider = androidx.recyclerview.widget.DividerItemDecoration(this,androidx.recyclerview.widget.DividerItemDecoration.VERTICAL)
recyclerView.addItemDecoration(mDivider)
}
private fun initMessages(){
List.add(Messages(R.drawable.img_2,"bob","This is Tom.Nice talking to you"))
List.add(Messages(R.drawable.img_3,"Alice","hi"))
List.add(Messages(R.drawable.img_4,"mom","好的"))
List.add(Messages(R.drawable.img_5,"dad","ok"))
List.add(Messages(R.drawable.img_6,"John","hello"))
List.add(Messages(R.drawable.img_7,"Mike","行" ))
List.add(Messages(R.drawable.img_8,"Sam","666"))
List.add(Messages(R.drawable.img_1,"Bill","嗯"))
List.add(Messages(R.drawable.img_3,"bella","哈哈哈哈哈"))
}
}
界面:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycleViewItem"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="80dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="80dp"
android:layout_height="80dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:paddingRight="8dp"
android:paddingLeft="8dp"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:ellipsize="end"
android:maxLines="1"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:ellipsize="end"
android:maxLines="1"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
对话框功能:
class xryActivity3:AppCompatActivity(),View.OnClickListener {
private val msgList = ArrayList<Msg>()
private lateinit var adapter: MsgAdapter
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_xry3)
initMsg()
val layoutManager = LinearLayoutManager(this)
val recyclerView = findViewById<RecyclerView>(R.id.recycleView)
recyclerView.layoutManager = layoutManager
if (!::adapter.isInitialized){
adapter = MsgAdapter(msgList)
}
recyclerView.adapter = adapter
val send = findViewById<Button>(R.id.send)
send.setOnClickListener(this)
}
override fun onClick(v: View?) {
val editText: EditText = findViewById(R.id.editText)
when(v?.id){
R.id.send->{
val inputText = editText.text.toString()
if(inputText.isNotEmpty()){
val msg = Msg(inputText,Msg.TYPE_SENT)
val recyclerView = findViewById<RecyclerView>(R.id.recycleView)
msgList.add(msg)
adapter?.notifyItemInserted(msgList.size - 1)
recyclerView.scrollToPosition(msgList.size - 1)
editText.setText("")
}
}
}
}
private fun initMsg() {
val msg1 = Msg("Hello guy.",Msg.TYPE_RECEIVED)
msgList.add(msg1)
val msg2 = Msg("Hello.Who is that?",Msg.TYPE_SENT)
msgList.add(msg2)
val msg3 = Msg("This is Tom.Nice talking to you.",Msg.TYPE_RECEIVED)
msgList.add(msg3)
}
}
界面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#d8e0e8">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycleView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Type something here"
android:maxLines="2"/>
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"/>
</LinearLayout>
</LinearLayout>
左边界面:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="@drawable/message_left">
<TextView
android:id="@+id/leftMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:textColor="#fff"/>
</LinearLayout>
</FrameLayout>
右边界面:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:background="@drawable/message_right">
<TextView
android:id="@+id/rightMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:textColor="#000" />
</LinearLayout>
</FrameLayout>
message:
class Messages (var picture:Int,var name:String,var detail:String)
msg:
class Msg(val content:String,val type:Int) {
companion object{
const val TYPE_RECEIVED = 0
const val TYPE_SENT = 1
}
}
msgAdapter:
class MsgAdapter(val msgList: List<Msg>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
inner class LeftViewHolder(view:View):RecyclerView.ViewHolder(view){
val leftMsg:TextView = view.findViewById(R.id.leftMsg)
}
inner class RightViewHolder(view:View):RecyclerView.ViewHolder(view){
val rightMsg:TextView = view.findViewById(R.id.rightMsg)
}
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int) = if(viewType == Msg.TYPE_RECEIVED){
val view = LayoutInflater.from(parent.context).inflate(R.layout.msg_left_item,parent,false)
LeftViewHolder(view)
}else{
val view = LayoutInflater.from(parent.context).inflate(R.layout.msg_right_item,parent,false)
RightViewHolder(view)
}
override fun getItemViewType(position: Int): Int {
val msg = msgList[position]
return msg.type
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val msg = msgList[position]
when(holder){
is LeftViewHolder -> holder.leftMsg.text = msg.content
is RightViewHolder -> holder.rightMsg.text = msg.content
else -> throw IllegalAccessException()
}
}
override fun getItemCount() = msgList.size
}
myAdapter:
class MyAdapter(val myList:List<Messages>): RecyclerView.Adapter<MyAdapter.ViewHolder>() {
inner class ViewHolder(view:View):RecyclerView.ViewHolder(view){
val Image: ImageView = view.findViewById(R.id.imageView)
val Name:TextView=view.findViewById(R.id.textView)
val Message:TextView=view.findViewById(R.id.textView2)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view=LayoutInflater.from(parent.context).inflate(R.layout.activity_xry2,parent,false)
val viewHolder=ViewHolder(view)
viewHolder.Name.setOnClickListener{
val intent = Intent()
intent.setClass(it.context,xryActivity3::class.java)
it.context.startActivity(intent)
}
return ViewHolder(view)
}
override fun getItemCount(): Int {
return myList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val messages=myList[position]
holder.Image.setImageResource(messages.picture)
holder.Name.text= messages.name
holder.Message.text=messages.detail
}
}