Java tutorial
package com.hsr.hemant.ppp; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.GravityCompat; import android.support.v4.view.MenuItemCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.ShareActionProvider; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.daimajia.androidanimations.library.Techniques; import com.daimajia.androidanimations.library.YoYo; import com.google.android.gms.common.GooglePlayServicesUtil; import java.util.List; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, MainFragment.OnFragmentInteractionListener, GmapFragment.OnFragmentInteractionListener { final MainFragment fragment = new MainFragment(); FloatingActionButton fab; String LicenseInfo; private ShareActionProvider mShareActionProvider; public static void openAppRating(Context context) { Intent rateIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://dev?id=6565132919084735503")); boolean marketFound = false; // find all applications able to handle our rateIntent final List<ResolveInfo> otherApps = context.getPackageManager().queryIntentActivities(rateIntent, 0); for (ResolveInfo otherApp : otherApps) { // look for Google Play application if (otherApp.activityInfo.applicationInfo.packageName.equals("com.android.vending")) { ActivityInfo otherAppActivity = otherApp.activityInfo; ComponentName componentName = new ComponentName(otherAppActivity.applicationInfo.packageName, otherAppActivity.name); rateIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); rateIntent.setComponent(componentName); context.startActivity(rateIntent); marketFound = true; break; } } // if GP not present on device, open web browser if (!marketFound) { Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/dev?id=6565132919084735503")); context.startActivity(webIntent); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); RateMeMaybe rmm = new RateMeMaybe(this); rmm.setPromptMinimums(10, 7, 20, 14); rmm.setDialogMessage("You really seem to like this app, " + "since you have already used it for 7 days! " + "It would be great if you took a moment to rate it."); rmm.setDialogTitle("Give your feedback"); rmm.setPositiveBtn("Yeeha! :)"); rmm.setNegativeBtn("Later :("); rmm.run(); YoYo.with(Techniques.BounceInUp).duration(500).playOn(findViewById(R.id.toolbar)); fab = (FloatingActionButton) findViewById(R.id.fab); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { fab.setElevation(10); } fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { YoYo.with(Techniques.Tada).duration(500).playOn(findViewById(R.id.fab)); fragment.nextSet(); // Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) // .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); drawer.setDrawerElevation(10); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.frame, fragment); fragmentTransaction.commit(); new Thread(new Runnable() { public void run() { LicenseInfo = GooglePlayServicesUtil.getOpenSourceSoftwareLicenseInfo(getApplicationContext()); } }).start(); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); YoYo.with(Techniques.BounceInDown).duration(500).playOn(findViewById(R.id.toolbar)); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); MenuItem item = menu.findItem(R.id.menu_item_share); mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); return true; } private void setShareIntent(Intent shareIntent) { if (mShareActionProvider != null) { mShareActionProvider.setShareIntent(shareIntent); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.license) { AlertDialog.Builder LicenseDialog = new AlertDialog.Builder(MainActivity.this); LicenseDialog.setTitle("Legal Notices"); LicenseDialog.setMessage(LicenseInfo); LicenseDialog.show(); return true; } //noinspection SimplifiableIfStatement // if (id == R.id.action_settings) { // return true; // } if (id == R.id.menu_item_share) { Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_SUBJECT, "Picoroid"); String sAux = "\nLet me recommend you this application\n\n"; sAux = sAux + "https://play.google.com/store/apps/details?id=com.hsr.hemant.ppp \n\n"; i.putExtra(Intent.EXTRA_TEXT, sAux); setShareIntent(i); return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camara) { fab.show(); setTitle("Nearby Photos"); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager() .beginTransaction(); fragmentTransaction.replace(R.id.frame, fragment); fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out, android.R.anim.fade_in, android.R.anim.fade_out); fragmentTransaction.commit(); } else if (id == R.id.nav_share) { fab.hide(); setTitle("Photos on Map"); GmapFragment myMapFragment = new GmapFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager() .beginTransaction(); fragmentTransaction.replace(R.id.frame, myMapFragment); fragmentTransaction.commit(); } // } else if (id == R.id.nav_gallery) { // // } else if (id == R.id.nav_slideshow) { // // } else if (id == R.id.nav_manage) { // else if (id == R.id.nav_aboutus) { openAppRating(MainActivity.this); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); YoYo.with(Techniques.Shake).duration(500).playOn(findViewById(R.id.drawer_layout)); drawer.closeDrawer(GravityCompat.START); return true; } @Override public void onFragmentInteraction(Uri uri) { } }