galeridetail.xml
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#fff" >
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="6dip" >
<TextView android:id="@+id/txtMarquee" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="14sp" android:typeface="sans" android:textColor="#ffffff" android:background="#000000" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever">
</TextView>
<ImageView android:id="@+id/myGambar" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/gallery" />
/>
<ZoomControls android:layout_marginTop="10dip" android:id="@+id/simpleZoomControl" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#000" />
<TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_marginTop="6dip" android:layout_height="wrap_content" android:text="Judul" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" />
<TextView android:id="@+id/title2" android:layout_width="fill_parent" android:layout_marginTop="6dip" android:layout_height="wrap_content" android:text="Keterangan" android:textColor="#000000" android:textSize="20sp" />
<TextView android:id="@+id/title3" android:layout_width="fill_parent" android:layout_marginTop="6dip" android:layout_height="wrap_content" android:text="Tgl" android:textColor="#000000" android:textSize="20sp" />
<TextView android:id="@+id/title4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="6dip" android:text="Pengriim" android:textColor="#000000" android:textSize="20sp"/>
<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center">
<Button android:id="@+id/btnShare" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Share" android:textColor="#000000" android:textStyle="bold" />
<Button android:id="@+id/btnsave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Download" android:textColor="#000000" android:textStyle="bold" />
</TableRow>
<TextView
android:layout_width="fill_parent" android:layout_marginTop="6dip" android:layout_height="wrap_content" android:text="" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" />
</LinearLayout>
</ScrollView>
package com.kriptograph.mygaleri;
import android.Manifest;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ZoomControls;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Calendar;
public class DetailGaleri extends AppCompatActivity {
JSONParser jsonParser = new JSONParser();
String tkode="",tnama="",tmail="",thp="",tlati="",tlongi="",talamat="",tangkatan="",tstatus="",tgambar="",waktu="";
String skodelogin="",snamalogin="",smaillogin="";
String myLati="-6.352953";
String myLongi="106.831389";
String myPosisi="UI";
ZoomControls simpleZoomControls;
ImageView myGambar;
String ip="";
private ProgressDialog pDialog;
JSONParser jParser = new JSONParser();
String title,title2, title3, title4, gambar;
String currentImage = "";
private static final int MY_PERMISSION_REQUEST = 1;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.galeridetail);
myGambar=(ImageView) findViewById(R.id.myGambar);
simpleZoomControls = (ZoomControls) findViewById(R.id.simpleZoomControl);
simpleZoomControls.setOnZoomInClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
float x=simpleZoomControls.getScaleX();
float y=simpleZoomControls.getScaleY();
myGambar.setScaleX((float) (x+1));
myGambar.setScaleY((float) (y+1));
}
});
simpleZoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
float x=simpleZoomControls.getScaleX();
float y=simpleZoomControls.getScaleY();
myGambar.setScaleX((float) (x-1));
myGambar.setScaleY((float) (y-1));
}
});
//meminta izin penyimpanan if (ContextCompat.checkSelfPermission(DetailGaleri.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(DetailGaleri.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
ActivityCompat.requestPermissions(DetailGaleri.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
} else {
ActivityCompat.requestPermissions(DetailGaleri.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSION_REQUEST);
}
} else {
//DO NOTHING }
ip=jParser.getIP();
title = getIntent().getStringExtra("title");
//int gb= getIntent().getIntExtra("gambar",R.drawable.ic_produk); //Bitmap bitmap = getIntent().getParcelableExtra("image");
String arUrlFoto=ip+"ypathfile/"+gambar;
new DownloadImageTask(myGambar).execute(arUrlFoto);
Button btnShare=(Button)findViewById(R.id.btnShare);
btnShare.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Judul :"+title+"\n\nKet :"+title3+"\n\nWaktu :"+waktu+"\n\nPengirim :"+title4);
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}});
Button btnsave=(Button)findViewById(R.id.btnsave);btnsave.setText("Download");
btnsave.setVisibility(View.VISIBLE);
btnsave.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
savepicture();
}});
callMarquee();
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
}
catch (Exception e) {
Log.e("Error", e.getMessage());e.printStackTrace();}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {bmImage.setImageBitmap(result); }
}
void callMarquee(){
Calendar cal = Calendar.getInstance();
int jam = cal.get(Calendar.HOUR);
int menit= cal.get(Calendar.MINUTE);
int detik= cal.get(Calendar.SECOND);
int tgl= cal.get(Calendar.DATE);
int bln= cal.get(Calendar.MONTH)+1;
int thn= cal.get(Calendar.YEAR);
String stgl= String.valueOf(tgl)+"-"+ String.valueOf(bln)+"-"+ String.valueOf(thn);
String sjam= String.valueOf(jam)+":"+ String.valueOf(menit)+":"+ String.valueOf(detik);
TextView txtMarquee=(TextView)findViewById(R.id.txtMarquee);
txtMarquee.setSelected(true);
String kata=jsonParser.getNama()+stgl+"/"+sjam+" #";
String kalimat= String.format("%1$s", TextUtils.htmlEncode(kata));
txtMarquee.setText(Html.fromHtml(kalimat+kalimat+kalimat));
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void savepicture() {
AlertDialog.Builder ad = new AlertDialog.Builder(DetailGaleri.this);
ad.setTitle("Save Picture");
ad.setMessage(title+" \n"+title3+"\n"+title4);
ad.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
View content = findViewById(R.id.myGambar);
Bitmap bitmap = getScreenShot(content);
// currentImage = "image" + System.currentTimeMillis() + ".jpg"; currentImage = title+" \n"+title3+"\n"+title4+".jpg";
store(bitmap, currentImage);
// b_share.setEnabled(true); // finish(); }
});
ad.setNegativeButton("Cancle", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
ad.show();
}
private static Bitmap getScreenShot(View view) {
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
return bitmap;
}
private void store(Bitmap bm, String fileName) {
String dirPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/FILEPROJEK";
File dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(dirPath, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
Toast.makeText(this, "Saved to "+dirPath +"..!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "Profile");
menu.add(0, 2, 0, "Call");
menu.add(0, 3, 0, "Mail");
menu.add(0, 4, 0, "Message");
menu.add(0, 5, 0, "Location");
menu.add(0, 6, 0, "Direction");
menu.add(0, 7, 0, "Activity");
menu.add(0, 8, 0, "Back");
return true;
}
final Context c = this;
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Intent i1 = new Intent(getApplicationContext(), Galeri.class);
i1.putExtra("pk",tkode);
startActivityForResult(i1, 100);
return true;
case 2:
String toDial="tel:"+thp;
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(toDial)));
return true;
case 3:
//Mail LayoutInflater layoutInflaterAndroid = LayoutInflater.from(c);
View mView = layoutInflaterAndroid.inflate(R.layout.user_input_dialog_box, null);
AlertDialog.Builder alertDialogBuilderUserInput = new AlertDialog.Builder(c);
alertDialogBuilderUserInput.setView(mView);
final EditText userInputDialogEditText = (EditText) mView.findViewById(R.id.userInputDialog);
alertDialogBuilderUserInput
.setCancelable(false)
.setPositiveButton("Send", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogBox, int id) {
//========================
String pesan=userInputDialogEditText.getText().toString();
if(pesan.length()>0) {
String to = tmail;
String subject = "Kirim Pesan Via APP-M8 ";
String message = pesan + "\nTertanda:" + snamalogin + " /" + skodelogin + " (" + smaillogin + ")";
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{to});
//email.putExtra(Intent.EXTRA_CC, new String[]{ to}); //email.putExtra(Intent.EXTRA_BCC, new String[]{to}); email.putExtra(Intent.EXTRA_SUBJECT, subject);
email.putExtra(Intent.EXTRA_TEXT, message);
//need this to prompts email client only email.setType("message/rfc822");
startActivity(Intent.createChooser(email, "Fr:" + smaillogin));
new AlertDialog.Builder(DetailGaleri.this)
.setTitle("Mail to "+tnama)
.setMessage("Sukses Kirim mail ke "+tmail+" /"+tnama+" ("+tkode+")")
.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
finish();
}}).show();
}
else{
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,(ViewGroup) findViewById(R.id.custom_toast_layout_id));
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.logochat);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Silakan isi pesan Mail Anda");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
//======================== }
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogBox, int id) {
dialogBox.cancel();
}
});
AlertDialog alertDialogAndroid = alertDialogBuilderUserInput.create();
alertDialogAndroid.show();
return true;
case 4:
//Inbox message Intent i2 = new Intent(getApplicationContext(), Galeri.class);
i2.putExtra("tkode",tkode);
i2.putExtra("tnama",tnama);
startActivityForResult(i2, 100);
return true;
case 5:
//Location Intent i3 = new Intent(getApplicationContext(), Galeri.class);
i3.putExtra("tkode",tkode);
i3.putExtra("tnama",tnama);
i3.putExtra("myLati",myLati);
i3.putExtra("myLongi",myLongi);
i3.putExtra("myPosisi",myPosisi);
i3.putExtra("myLati2",tlati);
i3.putExtra("myLongi2",tlongi);
i3.putExtra("myPosisi2",talamat);
startActivityForResult(i3, 100);
return true;
case 6:
//direction Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://maps.google.com/maps?saddr="+myLati+","+myLongi+"&daddr="+tlati+","+tlongi));
startActivity(intent);
return true;
case 7:
//activity Intent i4 = new Intent(getApplicationContext(), Galeri.class);
i4.putExtra("tkode",tkode);
i4.putExtra("tnama",tnama);
i4.putExtra("tangkatan",tangkatan);
i4.putExtra("tstatus",tstatus);
i4.putExtra("tgambar",tgambar);
startActivityForResult(i4, 100);
return true;
case 8:
//back finish();
return true;
}
return false;
}
}
user_input_dialog_box.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_dialog_layout_design_user_input" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp">
<TextView android:id="@+id/dialogTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send Mail" android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText android:id="@+id/userInputDialog" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Pesan Mail" android:inputType="text" />
</LinearLayout>
custom_toast.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_toast_layout_id" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFF" android:orientation="horizontal" android:padding="5dp" >
<ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="5dp" />
<TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#000" />
</LinearLayout>