
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);
}
}
Comments