gpt4 book ai didi

java - 如何刷新 View

转载 作者:行者123 更新时间:2023-12-02 12:38:50 25 4
gpt4 key购买 nike

有一些与此相关的问题,但我找不到任何对我有帮助的内容。我对 Android Studio 还很陌生。这是我的情况:我想要发生的是,当我单击触摸屏时,它会存储我在 Globals.touchX 和 Globals.touchY 中按下的位置的 x 和 y 坐标,并将它们显示到屏幕上。似乎发生的情况是,当我按下屏幕时,触摸坐标已正确存储,但显示它们的 View 不会刷新以显示其新值。从我找到的答案中,我尝试调用 invalidate() 但没有成功。我还看到有人推荐一个处理程序。如果这是要走的路,有人可以尽可能简单地解释它们是什么以及它们如何工作。我的代码如下。谢谢:)

public class NonmultiplierSixGame extends AppCompatActivity implements View.OnTouchListener {

private NonmultiplierSixView nonmultiplierSixView;

@Override
public boolean onTouch(View v, MotionEvent event) {
Globals.touchX = (int)event.getX();
Globals.touchY = (int)event.getY();


Log.i("GAME", Integer.toString(Globals.touchX));
Log.i("GAME", Integer.toString(Globals.touchY));

switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
Globals.SetSelect(1);
break;
case MotionEvent.ACTION_UP:
Globals.SetSelect(2);
break;
}

return true;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nonmultiplier_six_game);

nonmultiplierSixView = (NonmultiplierSixView)findViewById(R.id.nonmultiplierSixView);
nonmultiplierSixView.setOnTouchListener(this);

}


}

activity_nonmultiplier_six_game.xml:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.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="com.example.alexandermain.example_5.NonmultiplierSixGame">



<com.example.alexandermain.example_5.views.NonmultiplierSixView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/nonmultiplierSixView"
/>

public class NonmultiplierSixView extends View{

public NonmultiplierSixView(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

int x = getWidth();
int y = getHeight();

Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
canvas.drawPaint(paint);
paint.setColor(Color.parseColor("#da4747"));
canvas.drawText(Integer.toString(Globals.touchX), 27 * x / 30, 70 * y / 84, paint);
}






}

最佳答案

您确定在正确的位置调用了 invalidate() 吗?尝试将您的 invalidate() 放在每个案例中,就在 switch 中的 break 语句之前。

关于java - 如何刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com