我是一个非常新手的Java学习者, 我正试图将 typewriter 效果添加到我的Android工作室的应用程序中.我已经为效果定义了" typewriter "类,但在我的应用程序中使用它仍然有问题.具体地说,就是使用其他类中的文本.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_screen);
    image = (ImageView) findViewById(R.id.IntroImage);
    text = (TextView) findViewById(R.id.HelpAndDefine);
    button1 = (Button) findViewById(R.id.button3);
    button2 = (Button) findViewById(R.id.button5);
    button3 = (Button) findViewById(R.id.button7);
    button1.setTransformationMethod(null);
    button2.setTransformationMethod(null);
    button3.setTransformationMethod(null);
    typeWriter txtView = findViewById(R.id.HelpAndDefine);
    txtView.setText("");
    txtView.setCharacterDelays(150);
    txtView.animateText("");


    story.startingPoint();

推荐答案

Welcome to StackOverflow!

下面是一个quick and dirty实现,让您对此有所了解.您将需要建立一个基于您的需求的better logic.这里的 idea 是使用Handlerword(在下面的示例中是Hello)的字符后面附加特定的delay,以使其具有typewriter种效果.

MainActivity.java

public class MainActivity extends AppCompatActivity {
      
    TextView typingt;
    Button typingb;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        typingb = findViewById(R.id.typingb);
        typingt = findViewById(R.id.typingt);
          
        typingb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        typingt.setText("H");
                    }
                }, 300);
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        typingt.append("e");
                    }
                }, 400);
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        typingt.append("e");
                    }
                }, 500);
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        typingt.append("l");
                    }
                }, 600);
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        typingt.append("o");
                    }
                }, 700);
                
              }
        });
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:orientation="vertical"
    android:padding="20dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/typingt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="15dp"
        android:text="Hello"
        android:textColor="@color/black"
        android:textSize="30dp" />

    <Button
        android:id="@+id/typingb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:background="@color/black"
        android:padding="20dp"
        android:text="Typing Animation" />
    
</LinearLayout>

希望这篇文章能给你一些启发.

Java相关问答推荐

当列顺序更改时,Table View列列表的Change. wasPermanted()总是返回假

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

如果给定层次 struct 级别,如何从其预序穿越构造n元树

使用java访问具体子类特定方法的最佳方法是什么?

给定Java枚举类,通过值查找枚举

使用联接和分页的SpringBoot Spring数据JPA

蒙蒂霍尔比赛结果不正确

与Spring Boot相关的实体未正确保存

把一条整型短裤和两条短裤装成一条长的

如何在一行中使用Dijkstra中的Java Stream

与IntArray相比,ArrayList<;Int>;对于大量元素的性能极差

Android Java:已设置但未读取SharedPreferences

如何以编程方式保存workBench.xmi?

FETCH类型设置为LAZY,但它仍会发送第二个请求

STREAMS减少部分结果的问题

Android Studio模拟器没有互联网

寻找Thread.sky()方法的清晰度

Java中HashSet的搜索时间与TreeSet的搜索时间

获取401未经授权,即使在标头中设置了浏览器名称和cookie

转换为JSON字符串时,日期按天递减-Java