Technology10/15/2019

How to add Base Activity in a Project in Android

Sponsored Intelligence Dispatch






To add Base Activity in a project we have to follow this code which is depected below:-



import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;


import com.areteit.fettle.Admin.Utils.ConnectionDetector;
import com.areteit.fettle.Admin.Utils.Constants;
import com.areteit.fettle.Admin.Utils.LoadingBox;
import com.areteit.fettle.Admin.Utils.RequestPermissions;
import com.areteit.fettle.R;

import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;

abstract public class BaseActivity extends AppCompatActivity {
  private RequestPermissions requestPermissions;
//  private GPSTracker gpsTracker;
  private ConnectionDetector connectionDetector;

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }

//  protected GPSTracker getGpsTracker(Activity activity, boolean isHome) {
//    if (gpsTracker == null) {
//      gpsTracker = new GPSTracker(activity, isHome);
//    }
//    return gpsTracker;
//  }

  protected ConnectionDetector getConnectionDetector() {
    if (connectionDetector == null) {
      connectionDetector = new ConnectionDetector(this);
    }
    return connectionDetector;
  }

//  public RequestPermissions getRequestPermissions(Activity activity) {
//    if (requestPermissions == null) {
//      requestPermissions = new RequestPermissions(activity);
//    }
//    return requestPermissions;
//  }

  @Override
  public void startActivity(Intent intent) {
    super.startActivity(intent);
    overridePendingTransition(R.anim.parallax_right_in, R.anim.parallax_left_out);
  }

  public void showProgress() {
    if (!LoadingBox.isDialogShowing()) {
      LoadingBox.showLoadingDialog(this, "");
    }
  }

  public void dismissProgress() {
    if (LoadingBox.isDialogShowing()) {
      LoadingBox.dismissLoadingDialog();
    }
  }

  @Override
  public void startActivityForResult(Intent intent, int requestCode) {
    super.startActivityForResult(intent, requestCode);
    overridePendingTransition(R.anim.parallax_right_in, R.anim.parallax_left_out);
  }

//    @Override
//    public void finish() {
//        super.finish();
//        overridePendingTransition(R.anim.parallax_left_in, R.anim.parallax_right_out);
//    }

  @Override
  public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.parallax_left_in, R.anim.parallax_right_out);
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
       /* if (gpsTracker != null) {
            gpsTracker.onDestroy();
        }*/
  }

//  @Override
//  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//    super.onActivityResult(requestCode, resultCode, data);
//    if (requestCode == Constants.REQUEST_CHECK_SETTINGS) {
//      if (resultCode == Activity.RESULT_OK) {
//        getGpsTracker(this, false).displayLocationSettingsRequest();
//        // gpsTracker.displayLocationSettingsRequest();
//      } else {
//        LoadingBox.dismissLoadingDialog();
//      }
//    }
//  }

/*
    public static Locale getLocale(Context context) {
        String lang = PrefsManager.with(context).getString(Constants.PREF_LANGUAGE, Constants.ARABIC);

        switch (lang) {
            case Constants.ENGLISH:
                lang = "en";
                break;
            case Constants.ARABIC:
                lang = "ar";
                break;
        }
        return new Locale(lang);
    }
*/

  @Override
  protected void attachBaseContext(Context base) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(base));

  }

  @Override
  @Nullable
  public boolean dispatchTouchEvent(final MotionEvent ev) {
    // all touch events close the keyboard before they are processed except EditText instances.
    // if focus is an EditText we need to check, if the touchevent was inside the focus editTexts
    final View currentFocus = getCurrentFocus();
    if (currentFocus != null){
      if (!(currentFocus instanceof EditText) || !isTouchInsideView(ev, currentFocus)) {
        ((InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE))
                .hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
      }
    }

    return super.dispatchTouchEvent(ev);
  }

  /**
   * determine if the given motionevent is inside the given view.
   *
   * @param ev
   *            the given view
   * @param  currentFocus
   *            the motion event.
   * @return if the given motionevent is inside the given view
   */
  private boolean isTouchInsideView(final MotionEvent ev, final View currentFocus) {
    final int[] loc = new int[2];
    currentFocus.getLocationOnScreen(loc);
    return ev.getRawX() > loc[0] && ev.getRawY() > loc[1] && ev.getRawX() < (loc[0] + currentFocus.getWidth())
            && ev.getRawY() < (loc[1] + currentFocus.getHeight());
  }
}


Add Appcontroller in manifest.xml file:

<application
    android:name="AppController"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

In AppController.java add this code:

public class AppController extends Application {
    public static final String TAG = AppController.class.getSimpleName();

    private static AppController mInstance;



    @Override
    public void onCreate() {
        super.onCreate();
        Fabric.with(this, new Crashlytics());

        mInstance = this;


        CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                .setDefaultFontPath("fonts/Poppins-Regular.ttf")
                .setFontAttrId(R.attr.fontPath)
                .build());


    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);

    }


}










Deep Structural Diagnostics.

Mastering JSON is only the first step. Use our industrial-grade workbench to format, validate, and synthesize models for your production APIs.

Sponsored Infrastructure

Industrial Analysis Active