记录WebView中的每个触摸,包括触摸JavaScript元素。 Android的

时间:2014-08-31 10:51:41

标签: java javascript android webview touch

所以,我要做的是制作一个半自动页面监视器,当屏幕的某些部分发生变化时会提醒用户,我的应用程序的最大好处是用户可以记录某些操作,因为有些登录或注册通过单击JavaScript元素更改表单,而不仅仅是通过刷新。到目前为止我所做的是我制作了可缩放的WebView并编写了一个启动和停止触摸移动记录的按钮。除非用户按下JavaScript微调器,否则一切都像魅力一样。当它出现时,我的应用程序停止录制触摸,并且,android布局按钮隐藏。所以,我想要做的是强迫我的触摸录制系统响应每个可能的元素,事件是用JavaScript编写的。     这是我的代码:

package com.example.automatikaandroidui;

import java.util.ArrayList;

import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnClickListener, OnTouchListener {

    WebView webView;
    Button mygtukasSeka;
    boolean isPressed = false;
    boolean halfWay = false;
    boolean eile = false;
    ArrayList<PointF> masyvas = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        masyvas = new ArrayList<PointF>();

        webView = (WebView)findViewById(R.id.webView1);
        webView.loadUrl("https://www.eregitra.lt/viesa/interv/Index.php");
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setOnTouchListener(this);


        mygtukasSeka = (Button)findViewById(R.id.mygtukas_seka);
        mygtukasSeka.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch(v.getId()){

        case R.id.mygtukas_seka: {
            TextView notify = (TextView)findViewById(R.id.ispek_irasyma);

            if(!isPressed){

                notify.setTextColor(Color.RED);
                notify.setText("Įrašoma...");
                isPressed = true;

            }

            else { 
                notify.setText("");
                isPressed = false;
            }
        }

        }

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getActionMasked()){

        case MotionEvent.ACTION_DOWN : {
            if(!halfWay && isPressed)
                halfWay = true;
        }

        case MotionEvent.ACTION_UP : {
            if(halfWay && isPressed){
                PointF taskas = new PointF(event.getX(),event.getY());
                masyvas.add(taskas);
                halfWay = false;
                Toast.makeText(MainActivity.this, taskas.x+" "+taskas.y, Toast.LENGTH_SHORT).show();
                Toast.makeText(MainActivity.this, masyvas.size()+"", Toast.LENGTH_SHORT).show();
            }
        }

        }

        if(isPressed){
            if(eile)
                eile = false;
            else eile = true;
        }

        return eile;
    }

}

以下是一些截图: 这是注册表。当您按下B旋转器时,当您更改其中的不同元素时,所有页面都会刷新。如你所见,底部有三个按钮,中间一个叫Seka记录触摸。

http://i.stack.imgur.com/UJxjg.png

我之前谈过的是旋转器。忽略吐司消息

http://i.stack.imgur.com/ekWTo.png

提前致谢! :)

0 个答案:

没有答案