-
Notifications
You must be signed in to change notification settings - Fork 413
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
29ddbf5
commit 5e2ff9f
Showing
10 changed files
with
445 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
99 changes: 97 additions & 2 deletions
99
app/src/main/java/com/nanchen/compressimage/MainActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,108 @@ | ||
package com.nanchen.compressimage; | ||
|
||
import android.support.v7.app.AppCompatActivity; | ||
import android.content.Intent; | ||
import android.graphics.BitmapFactory; | ||
import android.graphics.Color; | ||
import android.os.Bundle; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.view.View; | ||
import android.widget.ImageView; | ||
import android.widget.TextView; | ||
import android.widget.Toast; | ||
|
||
import com.nanchen.compresshelper.CompressHelper; | ||
import com.nanchen.compresshelper.FileUtil; | ||
|
||
import java.io.File; | ||
import java.io.IOException; | ||
import java.text.DecimalFormat; | ||
import java.util.Random; | ||
|
||
public class MainActivity extends AppCompatActivity{ | ||
|
||
private ImageView mImageOld; | ||
private ImageView mImageNew; | ||
|
||
private static final int PICK_IMAGE_REQUEST = 1; | ||
private TextView mTextOld; | ||
private TextView mTextNew; | ||
|
||
private File oldFile; | ||
private File newFile; | ||
|
||
public class MainActivity extends AppCompatActivity { | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
initInstances(); | ||
|
||
} | ||
|
||
private void initInstances() { | ||
mImageOld = (ImageView) findViewById(R.id.main_image_old); | ||
mImageNew = (ImageView) findViewById(R.id.main_image_new); | ||
mTextOld = (TextView) findViewById(R.id.main_text_old); | ||
mTextNew = (TextView) findViewById(R.id.main_text_new); | ||
} | ||
|
||
public void compress(View view) { | ||
newFile = CompressHelper.getDefault(this).compressToFile(oldFile); | ||
mImageNew.setImageBitmap(BitmapFactory.decodeFile(newFile.getAbsolutePath())); | ||
mTextNew.setText(String.format("Size : %s", getReadableFileSize(newFile.length()))); | ||
} | ||
|
||
public void takePhoto(View view) { | ||
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | ||
intent.setType("image/*"); | ||
startActivityForResult(intent, PICK_IMAGE_REQUEST); | ||
} | ||
|
||
@Override | ||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
super.onActivityResult(requestCode, resultCode, data); | ||
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK) { | ||
if (data == null) { | ||
showError("Failed to open picture!"); | ||
return; | ||
} | ||
try { | ||
oldFile = FileUtil.getTempFile(this, data.getData()); | ||
mImageOld.setImageBitmap(BitmapFactory.decodeFile(oldFile.getAbsolutePath())); | ||
mTextOld.setText(String.format("Size : %s", getReadableFileSize(oldFile.length()))); | ||
clearImage(); | ||
} catch (IOException e) { | ||
showError("Failed to read picture data!"); | ||
e.printStackTrace(); | ||
} | ||
} | ||
} | ||
|
||
public void showError(String errorMessage) { | ||
Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show(); | ||
} | ||
|
||
private int getRandomColor() { | ||
Random rand = new Random(); | ||
return Color.argb(100, rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)); | ||
} | ||
|
||
|
||
private void clearImage() { | ||
mImageOld.setBackgroundColor(getRandomColor()); | ||
mImageNew.setImageDrawable(null); | ||
mImageNew.setBackgroundColor(getRandomColor()); | ||
mTextNew.setText("Size : -"); | ||
} | ||
|
||
|
||
public String getReadableFileSize(long size) { | ||
if (size <= 0) { | ||
return "0"; | ||
} | ||
final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"}; | ||
int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); | ||
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,93 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<RelativeLayout | ||
<LinearLayout | ||
xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:tools="http://schemas.android.com/tools" | ||
android:id="@+id/activity_main" | ||
android:orientation="vertical" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent" | ||
android:paddingBottom="@dimen/activity_vertical_margin" | ||
android:paddingLeft="@dimen/activity_horizontal_margin" | ||
android:paddingRight="@dimen/activity_horizontal_margin" | ||
android:paddingTop="@dimen/activity_vertical_margin" | ||
tools:context="com.nanchen.compressimage.MainActivity"> | ||
|
||
<TextView | ||
android:layout_width="wrap_content" | ||
<RelativeLayout | ||
android:layout_width="match_parent" | ||
android:layout_height="wrap_content" | ||
android:text="Hello World!"/> | ||
</RelativeLayout> | ||
android:paddingLeft="50dp" | ||
android:paddingRight="50dp"> | ||
|
||
<Button | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
android:onClick="takePhoto" | ||
android:layout_alignParentLeft="true" | ||
android:layout_alignParentStart="true" | ||
android:text="@string/take_photo"/> | ||
|
||
<Button | ||
|
||
android:layout_width="wrap_content" | ||
android:layout_alignParentRight="true" | ||
android:layout_alignParentEnd="true" | ||
android:layout_height="wrap_content" | ||
android:text="@string/compress" | ||
android:onClick="compress"/> | ||
</RelativeLayout> | ||
|
||
<LinearLayout | ||
android:paddingRight="20dp" | ||
android:paddingLeft="20dp" | ||
android:layout_width="match_parent" | ||
android:layout_height="wrap_content" | ||
android:orientation="horizontal"> | ||
|
||
<LinearLayout | ||
android:layout_width="0dp" | ||
android:layout_marginRight="10dp" | ||
android:layout_height="wrap_content" | ||
android:layout_weight="1" | ||
android:orientation="vertical"> | ||
|
||
<ImageView | ||
android:layout_width="match_parent" | ||
android:layout_height="200dp" | ||
android:background="@color/colorPrimary" | ||
android:scaleType="centerCrop" | ||
android:id="@+id/main_image_old"/> | ||
|
||
<TextView | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
android:layout_marginTop="10dp" | ||
android:layout_gravity="center_horizontal" | ||
android:id="@+id/main_text_old" | ||
android:text="10M"/> | ||
|
||
</LinearLayout> | ||
|
||
<LinearLayout | ||
android:layout_marginLeft="10dp" | ||
android:layout_width="0dp" | ||
android:layout_height="wrap_content" | ||
android:layout_weight="1" | ||
android:orientation="vertical"> | ||
|
||
<ImageView | ||
android:layout_width="match_parent" | ||
android:layout_height="200dp" | ||
android:background="@color/colorAccent" | ||
android:scaleType="centerCrop" | ||
android:id="@+id/main_image_new"/> | ||
|
||
<TextView | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
android:layout_marginTop="10dp" | ||
android:id="@+id/main_text_new" | ||
android:layout_gravity="center_horizontal" | ||
android:text="10M"/> | ||
|
||
</LinearLayout> | ||
|
||
|
||
</LinearLayout> | ||
|
||
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
<resources> | ||
<string name="app_name">CompressImage</string> | ||
<string name="take_photo">照片</string> | ||
<string name="compress">压缩</string> | ||
</resources> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.