Skip to content

Commit 22766fc

Browse files
committed
Share Screenshot using cache
1 parent 2a6ac7a commit 22766fc

File tree

1 file changed

+60
-4
lines changed

1 file changed

+60
-4
lines changed

app/src/main/java/fr/free/nrw/commons/Achievements.java

+60-4
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
package fr.free.nrw.commons;
22

3+
import android.content.Intent;
4+
import android.graphics.Bitmap;
5+
import android.net.Uri;
6+
import android.os.Environment;
37
import android.support.v7.app.AppCompatActivity;
48
import android.os.Bundle;
59
import android.util.DisplayMetrics;
10+
import android.util.Log;
611
import android.view.Menu;
712
import android.view.MenuInflater;
13+
import android.view.MenuItem;
814
import android.view.View;
915
import android.widget.ImageView;
1016
import android.widget.LinearLayout;
1117
import android.widget.RelativeLayout;
18+
import android.widget.Toast;
1219
import android.widget.Toolbar;
1320

21+
import java.io.File;
22+
import java.io.FileOutputStream;
23+
import java.util.Random;
24+
1425
import fr.free.nrw.commons.theme.NavigationBaseActivity;
1526

1627
public class Achievements extends AppCompatActivity {
1728

1829
private static final double badge_image_ratio_width = 0.5;
1930
private static final double badge_image_ratio_height = 0.5;
20-
31+
private ImageView imageView;
2132
@Override
2233
protected void onCreate(Bundle savedInstanceState) {
2334
super.onCreate(savedInstanceState);
@@ -28,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) {
2839
int height = displayMetrics.heightPixels;
2940
int width = displayMetrics.widthPixels;
3041

31-
ImageView imageView = (ImageView)findViewById(R.id.achievement_badge);
42+
imageView = (ImageView)findViewById(R.id.achievement_badge);
3243

3344
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
3445
imageView.getLayoutParams();
@@ -38,11 +49,56 @@ protected void onCreate(Bundle savedInstanceState) {
3849
imageView.requestLayout();
3950

4051
android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
41-
toolbar.inflateMenu(R.menu.menu_about);
52+
setSupportActionBar(toolbar);
53+
54+
}
55+
56+
@Override
57+
public boolean onCreateOptionsMenu(Menu menu) {
58+
// Inflate the menu; this adds items to the action bar if it is present.
59+
getMenuInflater().inflate(R.menu.menu_about, menu);
60+
return true;
61+
}
62+
63+
@Override
64+
public boolean onOptionsItemSelected(MenuItem item) {
65+
int id = item.getItemId();
66+
if (id == R.id.share_app_icon) {
67+
View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
68+
Bitmap screenShot = getScreenShot(rootView);
69+
imageView.setImageBitmap(screenShot);
70+
shareScreen(screenShot);
71+
}
72+
73+
return super.onOptionsItemSelected(item);
74+
}
75+
76+
public static Bitmap getScreenShot(View view) {
77+
View screenView = view.getRootView();
78+
screenView.setDrawingCacheEnabled(true);
79+
Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
80+
screenView.setDrawingCacheEnabled(false);
81+
return bitmap;
82+
}
4283

84+
void shareScreen ( Bitmap bitmap){
85+
try {
86+
File file = new File(this.getExternalCacheDir(),"screen.png");
87+
FileOutputStream fOut = new FileOutputStream(file);
88+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
89+
fOut.flush();
90+
fOut.close();
91+
file.setReadable(true, false);
92+
final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
93+
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
94+
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
95+
intent.setType("image/png");
96+
startActivity(Intent.createChooser(intent, "Share image via"));
97+
} catch (Exception e) {
98+
e.printStackTrace();
99+
}
43100
}
44101

45-
46102

47103

48104
}

0 commit comments

Comments
 (0)