Share Screenshot using cache

This commit is contained in:
tanvidadu 2018-05-12 20:43:41 +05:30
parent 2a6ac7a5c6
commit 22766fc634

View file

@ -1,23 +1,34 @@
package fr.free.nrw.commons;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.Toolbar;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Random;
import fr.free.nrw.commons.theme.NavigationBaseActivity;
public class Achievements extends AppCompatActivity {
private static final double badge_image_ratio_width = 0.5;
private static final double badge_image_ratio_height = 0.5;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -28,7 +39,7 @@ public class Achievements extends AppCompatActivity {
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
ImageView imageView = (ImageView)findViewById(R.id.achievement_badge);
imageView = (ImageView)findViewById(R.id.achievement_badge);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
imageView.getLayoutParams();
@ -38,11 +49,56 @@ public class Achievements extends AppCompatActivity {
imageView.requestLayout();
android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_about);
setSupportActionBar(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.menu_about, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.share_app_icon) {
View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
Bitmap screenShot = getScreenShot(rootView);
imageView.setImageBitmap(screenShot);
shareScreen(screenShot);
}
return super.onOptionsItemSelected(item);
}
public static Bitmap getScreenShot(View view) {
View screenView = view.getRootView();
screenView.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
screenView.setDrawingCacheEnabled(false);
return bitmap;
}
void shareScreen ( Bitmap bitmap){
try {
File file = new File(this.getExternalCacheDir(),"screen.png");
FileOutputStream fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
file.setReadable(true, false);
final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
intent.setType("image/png");
startActivity(Intent.createChooser(intent, "Share image via"));
} catch (Exception e) {
e.printStackTrace();
}
}
}