《Android Studio开发实战》学习(四) - TextView和ImageView的点击响应
前言一、布局文件的编写二、代码文件的编写总结前言
这篇文章记录了作者学习Android Studio开发App的心得体会1。Android Studio提供的最基础的控件是TextView
、ImageView
和Button
,通常TextView
用来显示文本,ImageView
用来显示图片,而Button
用来响应用户的点击。但是TextView
、ImageView
同样有setOnClickListener()
方法,所以可以用TextView
、ImageView
代替Button
,来实现响应用户点击的功能。
现在想要设计一个简单的响应用户点击的界面,从上到下分别是:
TextView
,宽度整个屏幕,高度50%,点击后随机增加聊天内容。ImageView
,宽度整个屏幕,高度50%,点击后有序改变图片内容。
一、布局文件的编写
activity_main.xml
的完整代码如下:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.constraintlayout.widget.Guidelineandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/guideline_1"app:layout_constraintGuide_percent=".50"android:orientation="horizontal"/><TextViewandroid:id="@+id/tv_bbs"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" /><ImageViewandroid:id="@+id/iv_scale"android:layout_width="match_parent"android:layout_height="400dp"android:src="@color/white"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>
为了实现百分比布局,可以在ConstraintLayout中采用添加辅助线(Guideline)的方法2。在这个简单界面中,添加了一条水平辅助线,位于0.50的位置,然后两个控件用辅助线来限制。如图所示: 在这里建立了一个 用户在 以上就是今天要讲的内容,本文简单介绍了Android Studio中 欧阳燊. Android Studio开发实战. 清华大学出版社. . ↩︎ androidx.percentlayout.widget | Android Developers ↩︎ (android:点击换图系列一)通过ImageView点击更换图片_今人不见古时月,今月曾经照古人的博客-CSDN博客_imageview更换图片 ↩︎二、代码文件的编写
MainActivity.java
的完整代码如下:package com.example.textviewclick;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.*;import android.view.View;import android.view.View.*;import android.text.method.ScrollingMovementMethod;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity {private ImageView iv_scale;private TextView tv_bbs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_bbs = findViewById(R.id.tv_bbs);tv_bbs.setMovementMethod(new ScrollingMovementMethod());iv_scale = findViewById(R.id.iv_scale);iv_scale.setOnClickListener(new ClickTAction());tv_bbs.setOnClickListener(new ClickCAction());tv_bbs.setOnLongClickListener(new ClickLAction());}private class ClickTAction implements OnClickListener {private int flag = 0;@Overridepublic void onClick(View v) {if (v.getId() == R.id.iv_scale) {flag = (flag + 1) % 3;if (flag == 0) {iv_scale.setImageResource(android.R.color.holo_blue_bright);} else if (flag == 1) {iv_scale.setImageResource(android.R.color.holo_red_dark);} else if (flag == 2) {iv_scale.setImageResource(android.R.color.holo_green_dark);}}}}private final String[] mChatStr = {"您用餐了吗?","今天是个好日子。","我赢了!","我们去看电影,好吗?","我晚上做什么好呢?" };private class ClickCAction implements OnClickListener {@Overridepublic 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 {@Overridepublic 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());}}
TextView
私有变量和一个ImageView
变量,在onCreate()
方法中用findViewById()
方法与上面设计的2个控件对应,然后用setOnClickListener()
方法在控件上绑定点击监听器。ImageView
上点击改变图片内容采用了setImageResource()
方法3。总结
TextView
和ImageView
点击响应功能的实现。