Skip to content

Commit

Permalink
合并ImageLoaderManager库,重构代码
Browse files Browse the repository at this point in the history
  • Loading branch information
juhonggang committed Dec 19, 2018
1 parent 8ca6e11 commit 341697f
Show file tree
Hide file tree
Showing 47 changed files with 2,185 additions and 558 deletions.
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
4 changes: 3 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'android-aspectjx'

android {
compileSdkVersion 26
Expand Down Expand Up @@ -26,5 +27,6 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

compile project(path: ':imageset')
implementation project(':imageset')
//implementation 'com.github.JuHonggang:PermissionManager:0.16'
}
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sxu.imageset">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand Down
106 changes: 83 additions & 23 deletions app/src/main/java/com/sxu/imageset/AlbumActivity.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
package com.sxu.imageset;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.sxu.smartpicture.album.listener.OnSelectPhotoListener;
import com.sxu.smartpicture.album.PhotoPicker;
import com.sxu.smartpicture.imageloader.ImageLoaderManager;
import com.sxu.smartpicture.imageloader.WrapImageView;
import com.sxu.smartpicture.imageloader.instance.FrescoInstance;
import com.sxu.smartpicture.imageloader.instance.GlideInstance;
import com.sxu.smartpicture.imageloader.instance.UILInstance;
import com.sxu.smartpicture.utils.DisplayUtil;

import java.util.ArrayList;
Expand All @@ -23,46 +31,98 @@

public class AlbumActivity extends AppCompatActivity {

private LinearLayout photoLayout;
private ArrayList<String> selectedPhotos;
private GridView photoGrid;
private BaseAdapter photoAdapter;
private ArrayList<String> selectedPhotos = new ArrayList<>();

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album_layout);
Button chooseButton = (Button)findViewById(R.id.choose_button);
photoLayout = (LinearLayout) findViewById(R.id.photo_layout);
photoGrid = (GridView) findViewById(R.id.photo_grid);

int type = getIntent().getIntExtra("type", 0);
if (!ImageLoaderManager.getInstance().isInit()) {
if (type == 0) {
ImageLoaderManager.getInstance().init(getApplicationContext(), new FrescoInstance());
} else if (type == 1) {
ImageLoaderManager.getInstance().init(getApplicationContext(), new UILInstance());
} else if (type == 2) {
ImageLoaderManager.getInstance().init(getApplicationContext(), new GlideInstance());
} else {
/**
* Nothing
*/
}
}

chooseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new PhotoPicker.Builder()
PhotoPicker picker = new PhotoPicker.Builder()
.setIsDialog(false)
.setIsShowCamera(false)
.setMaxPhotoCount(3)
.setMaxPhotoCount(9)
.setSelectedPhotos(selectedPhotos)
.builder().chooseImage(AlbumActivity.this);
.builder();
picker.chooseImage(AlbumActivity.this, new OnSelectPhotoListener() {
@Override
public void onSelected(ArrayList<String> selectedPhotoList) {
selectedPhotos.clear();
selectedPhotos.addAll(selectedPhotoList);
setPhotoAdapter();
}
});
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PhotoPicker.REQUEST_CODE_CHOOSE_PHOTO && data != null) {
selectedPhotos = data.getStringArrayListExtra(PhotoPicker.SELECTED_PHOTOS);
if (selectedPhotos != null && selectedPhotos.size() > 0) {
photoLayout.removeAllViews();
int size =(DisplayUtil.getScreenWidth() - DisplayUtil.dpToPx(48)) / 3;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(size, size);
params.leftMargin = DisplayUtil.dpToPx(8);
for (String photo : selectedPhotos) {
ImageView imageView = new ImageView(AlbumActivity.this);
imageView.setImageURI(Uri.parse("file://" + photo));
public static void enter(Context context, int imageLoaderType) {
Intent intent = new Intent(context, AlbumActivity.class);
intent.putExtra("type", imageLoaderType);
context.startActivity(intent);
}

private void setPhotoAdapter() {
if (photoAdapter == null) {
final int itemSize = (DisplayUtil.getScreenWidth() - DisplayUtil.dpToPx(72)) / 3;
final ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, itemSize);
photoAdapter = new BaseAdapter() {
@Override
public int getCount() {
return selectedPhotos.size();
}

@Override
public Object getItem(int position) {
return selectedPhotos.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
WrapImageView imageView = new WrapImageView(AlbumActivity.this);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
photoLayout.addView(imageView, params);
ImageLoaderManager.getInstance().displayImage("file://" + getItem(position), imageView, itemSize, itemSize);
imageView.setLayoutParams(params);
return imageView;
}
}
};

photoGrid.setAdapter(photoAdapter);
} else {
photoAdapter.notifyDataSetChanged();
}
}

@Override
protected void onDestroy() {
super.onDestroy();
ImageLoaderManager.getInstance().onDestroy();
}
}
37 changes: 6 additions & 31 deletions app/src/main/java/com/sxu/imageset/ChooseAndCropImageActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
Expand All @@ -14,10 +13,9 @@
import android.widget.Toast;

import com.qiniu.android.http.ResponseInfo;
import com.sxu.smartpicture.choosePicture.ChoosePhotoDialog;
import com.sxu.smartpicture.choosePicture.ChoosePhotoManager;
import com.sxu.smartpicture.choosePicture.OnChoosePhotoListener;
import com.sxu.smartpicture.utils.PermissionUtil;
import com.sxu.smartpicture.choosepicture.ChoosePhotoDialog;
import com.sxu.smartpicture.choosepicture.ChoosePhotoManager;
import com.sxu.smartpicture.choosepicture.OnSimpleChoosePhotoListener;
import com.sxu.smartpicture.utils.UploadUtils;

import org.json.JSONObject;
Expand Down Expand Up @@ -50,29 +48,12 @@ public void onClick(View v) {
dialog.setOnItemListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ChoosePhotoManager.getInstance().setAutoCrop(true);
if (i == 0) {
ChoosePhotoManager.getInstance().choosePhotoFromCamera(ChooseAndCropImageActivity.this);
ChoosePhotoManager.getInstance().takePicture(ChooseAndCropImageActivity.this, true);
} else {
ChoosePhotoManager.getInstance().choosePhotoFromAlbum(ChooseAndCropImageActivity.this);
ChoosePhotoManager.getInstance().choosePhotoFromAlbum(ChooseAndCropImageActivity.this, true);
}
ChoosePhotoManager.getInstance().setChoosePhotoListener(new OnChoosePhotoListener() {
@Override
public void choosePhotoFromAlbum(Uri uri) {
if (uri != null) {
filePath = uri.getPath();
imageView.setImageURI(uri);
}
}

@Override
public void choosePhotoFromCamera(Uri uri) {
if (uri != null) {
filePath = uri.getPath();
imageView.setImageURI(uri);
}
}

ChoosePhotoManager.getInstance().setChoosePhotoListener(new OnSimpleChoosePhotoListener() {
@Override
public void cropPhoto(Uri uri) {
if (uri != null) {
Expand Down Expand Up @@ -131,10 +112,4 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ChoosePhotoManager.getInstance().onActivityResult(this, requestCode, data);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
PermissionUtil.requestCallback(this, requestCode, permissions, grantResults);
}
}
21 changes: 8 additions & 13 deletions app/src/main/java/com/sxu/imageset/ImageLoaderActivity.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,23 @@
package com.sxu.imageset;

import android.app.SharedElementCallback;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.sxu.imageloader.ImageLoaderManager;
import com.sxu.imageloader.WrapImageView;
import com.sxu.imageloader.instance.FrescoInstance;
import com.sxu.imageloader.instance.GlideInstance;
import com.sxu.imageloader.instance.UILInstance;
import com.sxu.imageloader.listener.ImageLoaderListener;
import com.sxu.smartpicture.album.PhotoPreviewActivity;
import com.sxu.smartpicture.album.activity.PhotoPreviewActivity;
import com.sxu.smartpicture.imageloader.ImageLoaderManager;
import com.sxu.smartpicture.imageloader.WrapImageView;
import com.sxu.smartpicture.imageloader.instance.FrescoInstance;
import com.sxu.smartpicture.imageloader.instance.GlideInstance;
import com.sxu.smartpicture.imageloader.instance.UILInstance;
import com.sxu.smartpicture.imageloader.listener.ImageLoaderListener;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


/**
Expand Down Expand Up @@ -65,7 +60,7 @@ protected void onCreate(Bundle savedInstanceState) {
ViewCompat.setTransitionName(blurImage, PhotoPreviewActivity.TRANSITION_NAME_PREFIX + "1");
ViewCompat.setTransitionName(rectangleImage, PhotoPreviewActivity.TRANSITION_NAME_PREFIX + "2");
ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", image);
ImageLoaderManager.getInstance().displayImage("http://img.tuku.cn/file_thumb/201602/m2016021513470744.jpg", blurImage);
ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", blurImage);
ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKzUt", rectangleImage);
ImageLoaderManager.getInstance().displayImage("http://t.cn/RTRKJvS", circleImage);

Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/com/sxu/imageset/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package com.sxu.imageset;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioGroup;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

Expand Down Expand Up @@ -53,9 +54,10 @@ public void onClick(View v) {
startActivity(intent);
break;
case R.id.album_button:
startActivity(new Intent(this, AlbumActivity.class));
AlbumActivity.enter(this, imageLoaderType);
break;
case R.id.choose_image_button:
//test();
startActivity(new Intent(this, ChooseAndCropImageActivity.class));
break;
default:
Expand Down
13 changes: 8 additions & 5 deletions app/src/main/res/layout/activity_album_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@
android:text="选择图片"
android:textColor="@android:color/white"
android:background="#4db6ac"/>
<LinearLayout
android:id="@+id/photo_layout"
<GridView
android:id="@+id/photo_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:paddingLeft="8dp"
android:paddingRight="16dp"
android:orientation="horizontal"/>
android:paddingLeft="24dp"
android:paddingRight="24dp"
android:horizontalSpacing="12dp"
android:verticalSpacing="12dp"
android:numColumns="3"
android:scrollbars="none"/>
</LinearLayout>
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,13 @@
android:text="上传图片到七牛"
android:textColor="@android:color/white"
android:background="#7986cb"/>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
android:text="说明:\n1. 上传到服务器需要设置服务器的URL;\n2. 上传到七牛云需要到token,具体参考七牛云开发者中心;"
android:lineSpacingMultiplier="1.25"/>
</LinearLayout>
8 changes: 4 additions & 4 deletions app/src/main/res/layout/activity_image_loader_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<com.sxu.imageloader.WrapImageView
<com.sxu.smartpicture.imageloader.WrapImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="150dp"
Expand All @@ -14,7 +14,7 @@
android:scaleType="centerCrop"
app:placeHolder="@drawable/default_placeholder_image"
app:failureHolder="@drawable/default_placeholder_image"/>
<com.sxu.imageloader.WrapImageView
<com.sxu.smartpicture.imageloader.WrapImageView
android:id="@+id/blur_image"
android:layout_width="match_parent"
android:layout_height="180dp"
Expand All @@ -33,7 +33,7 @@
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:orientation="horizontal">
<com.sxu.imageloader.WrapImageView
<com.sxu.smartpicture.imageloader.WrapImageView
android:id="@+id/rectangle_image"
android:layout_width="0dp"
android:layout_height="match_parent"
Expand All @@ -44,7 +44,7 @@
app:radius="10dp"
app:borderColor="#e1f5fe"
app:shapeBorderWidth="5dp"/>
<com.sxu.imageloader.WrapImageView
<com.sxu.smartpicture.imageloader.WrapImageView
android:id="@+id/circle_image"
android:layout_width="0dp"
android:layout_height="match_parent"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
Expand Down
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Expand Down
Loading

0 comments on commit 341697f

Please sign in to comment.