清理一个文件项目

时间:2018-01-19 13:53:52

标签: java android code-cleanup

所以我正在开发一个项目,并且在一个文件中使用了大量代码或至少相当数量,我想知道是否有办法将其清理成多个文件。我只使用单个文件。因此,当添加更多文件时,我不确定如何解决这个问题,所以我会请求帮助清理项目。理想的结果是通过其他文件中的小块来更清楚地理解CoreActivity。或者如果你看到一种方法将一些代码清理成一种更简单,更简洁的编写方式,那么就修复

CoreActivity.java

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.TextView;

import com.github.pwittchen.gesture.library.Gesture;
import com.github.pwittchen.gesture.library.GestureListener;
import com.github.pwittchen.swipe.library.rx2.Swipe;
import com.github.pwittchen.swipe.library.rx2.SwipeListener;

 public class CoreActivity extends AppCompatActivity {

//Widgets
ConstraintLayout m_Preference_Toolbar;
ConstraintLayout m_Toolbar;
ConstraintLayout m_Preferences;

EditText m_WebView_Search;
WebView m_WebView;

private Swipe WebSwipe;
private Gesture WebGesture;

//Variables
String Url = "https://www.Google.ca";
int WebS =0;

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_core);


    //Find Views
    m_Toolbar = findViewById(R.id.m_Toolbar);
    m_Preferences = findViewById(R.id.m_Preferences);
    m_WebView_Search = findViewById(R.id.m_WebView_Search);
    m_WebView = findViewById(R.id.m_WebView);
    m_Preference_Toolbar = findViewById(R.id.m_Preferences_Toolbar);

    m_Preference_Toolbar.setVisibility(View.GONE);


    m_Preferences.setOnTouchListener(new View.OnTouchListener() {
        Animation ToolbarGone,ToolbarPrefVisible;
        int x = 0;
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            m_Preferences.setVisibility(View.GONE);
            x =1;

            ToolbarGone = AnimationUtils.loadAnimation(CoreActivity.this, R.anim.m_toolbar_gone);
            m_Toolbar.startAnimation(ToolbarGone);

            if(m_Preferences.getVisibility() == View.GONE || x == 1) {
                ToolbarPrefVisible = AnimationUtils.loadAnimation(CoreActivity.this, R.anim.m_preference_toolbar_appear);
                m_Preference_Toolbar.startAnimation(ToolbarPrefVisible);
            }
          return false;
        }
    });


    //m_WebView
    final WebSettings m_WebViewSetting = m_WebView.getSettings();
    m_WebView.setWebViewClient(new WebViewClient());
    m_WebViewSetting.setJavaScriptEnabled(true);
    m_WebViewSetting.setSupportZoom(true);
    m_WebViewSetting.setLoadWithOverviewMode(true);
    m_WebViewSetting.setUseWideViewPort(true);
    m_WebView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3");
    m_WebView.loadUrl(Url); //Default HomePage




    //m_WebView_Search TextView and Keyboard
    m_WebView_Search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                if (m_WebView_Search.getText().toString().contains(".com")
                        || m_WebView_Search.getText().toString().contains(".ca")
                        || m_WebView_Search.getText().toString().contains(".net")
                        || m_WebView_Search.getText().toString().contains(".org")) {
                    Url = m_WebView_Search.getText().toString();
                    m_WebView.loadUrl("https://www." + Url);
                    m_WebView_Search.clearFocus();
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(m_WebView_Search.getWindowToken(), 0);
                } else {
                    if (m_WebView_Search.getText().toString().contains("")) {
                        Url = m_WebView_Search.getText().toString();
                        m_WebView.loadUrl("https://www.google.ca/search?q=" + Url);
                        m_WebView_Search.clearFocus();
                        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.hideSoftInputFromWindow(m_WebView_Search.getWindowToken(), 0);
                    }
                }
            }
            return false;
        }
    });
    //Swipe Events WebSwipe
    WebSwipe = new Swipe(350, 700);

    WebSwipe.setListener(new SwipeListener() {
        int Web = 0;
        Animation WebShrink, WebEnlarge;
        @Override
        public void onSwipingLeft(final MotionEvent event) {
            if(m_WebView.canGoForward()){
                m_WebView.goForward();
            }
            else{
                m_WebView.reload();
            }
        }

        @Override
        public void onSwipedLeft(final MotionEvent event) {
        }

        @Override
        public void onSwipingRight(final MotionEvent event) {
            if(m_WebView.canGoBack()){
                m_WebView.goBack();
            }
            else{
                m_WebView.reload();
            }
        }

        @Override
        public void onSwipedRight(final MotionEvent event) {
        }

        @Override
        public void onSwipingUp(final MotionEvent event) {
        }

        @Override
        public void onSwipedUp(final MotionEvent event) {
            //WebView Animation (Enlarge)
            if(Web == 0){
                  WebEnlarge = AnimationUtils.loadAnimation(CoreActivity.this, R.anim.m_webview_enlarge);
                m_WebView.startAnimation(WebEnlarge);
                Web = 1;

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        m_Toolbar.setVisibility(View.GONE);
                    }
                }, 350);
            }
        }

            @Override
        public void onSwipingDown(final MotionEvent event) {
        }

        @Override
        public void onSwipedDown(final MotionEvent event) {
            //WebView Animation (Shrink)
            if(Web == 1){
                WebShrink = AnimationUtils.loadAnimation(CoreActivity.this,R.anim.m_webview_shrink);
                m_WebView.startAnimation(WebShrink);
                m_Preference_Toolbar.setVisibility(View.GONE);
                Web = 0;
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        m_Toolbar.setVisibility(View.VISIBLE);
                    }
                }, 350);
            }
        }
    });

    WebGesture = new Gesture();
    WebGesture.addListener(new GestureListener() {
        @Override public void onPress(MotionEvent motionEvent) {

        }

        @Override public void onTap(MotionEvent motionEvent) {


            }

        @Override public void onDrag(MotionEvent motionEvent) {

        }

        @Override public void onMove(MotionEvent motionEvent) {
        }

        @Override public void onRelease(MotionEvent motionEvent) {
        }

        @Override public void onLongPress(MotionEvent motionEvent) {
        }

        @Override public void onMultiTap(MotionEvent motionEvent, int clicks) {
        }
    });
}

    @Override
    public boolean dispatchTouchEvent (MotionEvent event){
        WebSwipe.dispatchTouchEvent(event);
        WebGesture.dispatchTouchEvent(event);
        return super.dispatchTouchEvent(event);
    }
}

1 个答案:

答案 0 :(得分:0)

分割代码的最简单方法是考虑单一责任(根据SOLID原则)。

作为代码中的示例,您的触摸侦听器可以分开。这需要创建一个扩展触摸侦听器类(View.OnTouchListener)而不是扩展活动的类。

代码中的这个块:

m_Preferences.setOnTouchListener(new View.OnTouchListener() {
    ...
});

将成为 MyTouchListener.java

public class MyTouchListener implements View.OnTouchListener {

    Animation ToolbarGone,ToolbarPrefVisible;
    int x = 0;

    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        ... // keep exactly your same code here
    }

}

然后您的活动变为:

m_Preferences.setOnTouchListener(new MyTouchListener());