Skip to content

Commit

Permalink
编写例子
Browse files Browse the repository at this point in the history
  • Loading branch information
nanchen2251 committed Mar 16, 2017
1 parent 29ddbf5 commit 5e2ff9f
Show file tree
Hide file tree
Showing 10 changed files with 445 additions and 39 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nanchen.compressimage">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand Down
99 changes: 97 additions & 2 deletions app/src/main/java/com/nanchen/compressimage/MainActivity.java
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];
}
}
93 changes: 84 additions & 9 deletions app/src/main/res/layout/activity_main.xml
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>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
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>
4 changes: 4 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'


// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Expand Down
30 changes: 29 additions & 1 deletion compresshelper/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'

group='com.github.nanchen2251' // 指定group,com.github.<用户名>

android {
compileSdkVersion 25
Expand All @@ -22,10 +25,35 @@ android {
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.1'
testCompile 'junit:junit:4.12'
compile 'io.reactivex:rxandroid:1.2.1'
}

// build a jar with source files
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}

task javadoc(type: Javadoc) {
failOnError false
source = android.sourceSets.main.java.sourceFiles
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
classpath += configurations.compile
}

// build a jar with javadoc
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}

artifacts {
archives sourcesJar
archives javadocJar
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import java.io.IOException;

/**
* Bitmap压缩相关操作工具类
* Bitmap 压缩相关操作工具类
*
*
*
* 原理不明白请查看我博客:http://www.cnblogs.com/liushilin/p/6116759.html
*
Expand Down
Loading

0 comments on commit 5e2ff9f

Please sign in to comment.