java - 如何仅在特定时间调用函数

标签 java android android-framelayout motionevent

我有一个 EditText 和一个 FrameLayout。我这样做的方式是,如果用户在 FrameLayout 内拖动,背景会根据 (X,Y) 坐标中的像素更改颜色 (RGB),并使用从 RGB 值转换的十六进制值更新 EditText。

这是我的整个代码的 Pastebin 链接: http://pastebin.com/7P3QSmb4

我遇到的问题是以下代码:

if (s.length() == 6) {
    int color = Integer.parseInt(etHexVal.getText().toString(), 16);
    int r = (color >> 16) & 0xFF;
    int g = (color >> 8) & 0xFF;
    int b = (color >> 0) & 0xFF;
    getXY(r, g, b);
    hexToRGB();
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(etHexVal.getWindowToken(), 0);
}

我想在 EditText 的文本发生更改时调用函数 getXY(r, g, b) 不要在 FrameLayout 内拖动,否则会使我的应用程序滞后。 如何修改现有代码?

最佳答案

使用变量锁定 getXY() 的调用

声明一个新变量

Boolean callGetXY = true;

在 ACTION_DOWN 时将其设置为 false,在 ACTION_UP 时将其恢复为 true

View.OnTouchListener flTouch = new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
       // your current content of the method here
       // ...
       if (event.getAction() == MotionEvent.ACTION_DOWN) {
           callGetXY = false;
       }

       if (event.getAction() == MotionEvent.ACTION_UP) {
           callGetXY = true;
       }

    }
};

将第 82 行更改为:

if (callGetXY) {
    getXY()
}

关于java - 如何仅在特定时间调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21767103/

相关文章:

java - 错误 : "Cannot make a static reference to the non-static method startActivity(Intent) from the type Activity"

android - 非库存相机的相机应用拍摄照片时未保存图像

java - TabHost 的后期膨胀过程中出错

android - 尝试将 fragment 添加到我的 fragment 容器 FrameLayout

java - 如何从父类(super class)创建一个类而不进行向下转型?

java - 爆炸 WAR 文件的优点/缺点

Java 类加载器安全处理

java - 空字符串和单个分隔符字符串上的字符串拆分行为

java - 超几何分布不能很好地工作java

android - 将 FrameLayout 高度与其中的 ImageView 匹配