소스 검색

修复查看大图时崩溃的问题,优化应用启动速度,删除无用导包,优化代码逻辑

master
HJQ 6 년 전
부모
커밋
9256ddd05a
25개의 변경된 파일190개의 추가작업 그리고 174개의 파일을 삭제
  1. BIN
      AndroidProject.apk
  2. 1
    1
      app/src/main/AndroidManifest.xml
  3. 7
    7
      app/src/main/java/com/hjq/demo/ui/activity/LauncherActivity.java
  4. 1
    1
      app/src/main/java/com/hjq/demo/ui/activity/PersonalDataActivity.java
  5. 51
    51
      app/src/main/java/com/hjq/demo/ui/activity/PhotoActivity.java
  6. 1
    1
      app/src/main/java/com/hjq/demo/ui/activity/SettingActivity.java
  7. 1
    1
      app/src/main/java/com/hjq/demo/ui/activity/WebActivity.java
  8. 70
    70
      app/src/main/java/com/hjq/demo/ui/adapter/PhotoPagerAdapter.java
  9. 0
    1
      app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentA.java
  10. 2
    2
      app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentD.java
  11. 34
    0
      app/src/main/java/com/hjq/demo/widget/PhotoViewPager.java
  12. 0
    0
      app/src/main/res/drawable-xxhdpi/bg_launcher.jpg
  13. 0
    0
      app/src/main/res/drawable-xxhdpi/ic_logo.png
  14. 1
    1
      app/src/main/res/layout/activity_about.xml
  15. 2
    2
      app/src/main/res/layout/activity_launcher.xml
  16. 1
    1
      app/src/main/res/layout/activity_login.xml
  17. 9
    9
      app/src/main/res/layout/activity_photo.xml
  18. 1
    1
      app/src/main/res/layout/fragment_test_a.xml
  19. 4
    4
      app/src/main/res/layout/fragment_test_b.xml
  20. 0
    1
      dialog/src/main/java/com/hjq/dialog/InputDialog.java
  21. 2
    1
      dialog/src/main/java/com/hjq/dialog/MenuDialog.java
  22. 2
    1
      dialog/src/main/java/com/hjq/dialog/PayPasswordDialog.java
  23. 0
    15
      umeng/src/main/java/com/hjq/umeng/WeChatActivity.java
  24. 0
    2
      widget/src/main/java/com/hjq/widget/ClearEditText.java
  25. 0
    1
      widget/src/main/java/com/hjq/widget/HintLayout.java

BIN
AndroidProject.apk 파일 보기


+ 1
- 1
app/src/main/AndroidManifest.xml 파일 보기

@@ -107,7 +107,7 @@
android:label="@string/web_title" />
<!-- 查看大图界面 -->
<activity android:name=".ui.activity.ImageActivity" />
<activity android:name=".ui.activity.PhotoActivity" />
<!-- 对话框界面 -->
<activity android:name=".ui.activity.DialogActivity" />

+ 7
- 7
app/src/main/java/com/hjq/demo/ui/activity/LauncherActivity.java 파일 보기

@@ -81,7 +81,7 @@ public final class LauncherActivity extends MyActivity
mTextView.startAnimation(ra);
}

private void requestFilePermission() {
private void requestPermission() {
XXPermissions.with(this)
.permission(Permission.Group.STORAGE)
.request(this);
@@ -102,14 +102,14 @@ public final class LauncherActivity extends MyActivity
if (quick) {
toast("没有权限访问文件,请手动授予权限");
XXPermissions.gotoPermissionSettings(LauncherActivity.this, true);
}else {
} else {
toast("请先授予文件读写权限");
getWindow().getDecorView().postDelayed(new Runnable() {
postDelayed(new Runnable() {
@Override
public void run() {
requestFilePermission();
requestPermission();
}
}, 2000);
}, 1000);
}
}

@@ -125,7 +125,7 @@ public final class LauncherActivity extends MyActivity
if (XXPermissions.isHasPermission(LauncherActivity.this, Permission.Group.STORAGE)) {
hasPermission(null, true);
}else {
requestFilePermission();
requestPermission();
}
}

@@ -144,7 +144,7 @@ public final class LauncherActivity extends MyActivity

@Override
public void onAnimationEnd(Animation animation) {
requestFilePermission();
requestPermission();
}

@Override

+ 1
- 1
app/src/main/java/com/hjq/demo/ui/activity/PersonalDataActivity.java 파일 보기

@@ -17,7 +17,7 @@ import butterknife.OnClick;
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/04/20
* desc : 个人资料界面
* desc : 个人资料
*/
public final class PersonalDataActivity extends MyActivity {


app/src/main/java/com/hjq/demo/ui/activity/ImageActivity.java → app/src/main/java/com/hjq/demo/ui/activity/PhotoActivity.java 파일 보기

@@ -1,52 +1,52 @@
package com.hjq.demo.ui.activity;
import android.support.v4.view.ViewPager;
import com.hjq.demo.R;
import com.hjq.demo.common.MyActivity;
import com.hjq.demo.ui.adapter.ImagePagerAdapter;
import java.util.ArrayList;
import butterknife.BindView;
/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/03/05
* desc : 查看大图
*/
public final class ImageActivity extends MyActivity {
@BindView(R.id.vp_image_pager)
ViewPager mViewPager;
@Override
protected int getLayoutId() {
return R.layout.activity_image;
}
@Override
protected int getTitleId() {
return 0;
}
@Override
protected void initView() {
}
@Override
protected void initData() {
ArrayList<String> data = new ArrayList<>();
data.add("https://www.baidu.com/img/bd_logo.png");
data.add("https://www.baidu.com/img/bd_logo.png");
data.add("https://www.baidu.com/img/bd_logo.png");
mViewPager.setAdapter(new ImagePagerAdapter(this, data));
}
@Override
public boolean statusBarDarkFont() {
return !super.statusBarDarkFont();
}
package com.hjq.demo.ui.activity;
import android.support.v4.view.ViewPager;
import com.hjq.demo.R;
import com.hjq.demo.common.MyActivity;
import com.hjq.demo.ui.adapter.PhotoPagerAdapter;
import java.util.ArrayList;
import butterknife.BindView;
/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/03/05
* desc : 查看大图
*/
public final class PhotoActivity extends MyActivity {
@BindView(R.id.vp_photo_pager)
ViewPager mViewPager;
@Override
protected int getLayoutId() {
return R.layout.activity_photo;
}
@Override
protected int getTitleId() {
return 0;
}
@Override
protected void initView() {
}
@Override
protected void initData() {
ArrayList<String> data = new ArrayList<>();
data.add("https://www.baidu.com/img/bd_logo.png");
data.add("https://www.baidu.com/img/bd_logo.png");
data.add("https://www.baidu.com/img/bd_logo.png");
mViewPager.setAdapter(new PhotoPagerAdapter(this, data));
}
@Override
public boolean statusBarDarkFont() {
return !super.statusBarDarkFont();
}
}

+ 1
- 1
app/src/main/java/com/hjq/demo/ui/activity/SettingActivity.java 파일 보기

@@ -6,8 +6,8 @@ import com.hjq.demo.R;
import com.hjq.demo.common.MyActivity;
import com.hjq.demo.helper.ActivityStackManager;
import com.hjq.demo.helper.CacheDataManager;
import com.hjq.widget.SettingBar;
import com.hjq.image.ImageLoader;
import com.hjq.widget.SettingBar;
import com.hjq.widget.SwitchButton;

import butterknife.BindView;

+ 1
- 1
app/src/main/java/com/hjq/demo/ui/activity/WebActivity.java 파일 보기

@@ -67,7 +67,7 @@ public final class WebActivity extends MyActivity {
}

// 加快HTML网页加载完成的速度,等页面finish再加载图片
if(Build.VERSION.SDK_INT >= 19) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
settings.setLoadsImagesAutomatically(true);
} else {
settings.setLoadsImagesAutomatically(false);

app/src/main/java/com/hjq/demo/ui/adapter/ImagePagerAdapter.java → app/src/main/java/com/hjq/demo/ui/adapter/PhotoPagerAdapter.java 파일 보기

@@ -1,71 +1,71 @@
package com.hjq.demo.ui.adapter;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import com.github.chrisbanes.photoview.PhotoView;
import com.hjq.image.ImageLoader;
import java.util.List;
/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/03/05
* desc : 图片加载适配器
*/
public final class ImagePagerAdapter extends PagerAdapter implements View.OnClickListener {
private Activity mActivity;
private List<String> mData;
public ImagePagerAdapter(Activity activity, List<String> data) {
mActivity = activity;
mData = data;
}
// 加载数量,自动回调
@Override
public int getCount() {
return mData.size();
}
// 返回真表示不会重新创建,使用缓存加载。返回假则重新创建
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
/**
* 实例化条目
* ViewPager预加载机制:最多保存3个page,超过的将需要被销毁掉
* 由于最多3个page,所以不需要设置ViewHolder
* 用于将数据设置给ViewItem
*/
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
PhotoView view = new PhotoView(mActivity);
view.setOnClickListener(this);
ImageLoader.loadImage(view, mData.get(position));
// 将View添加到ViewPager
container.addView(view);
return view;
}
// 销毁条目
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
@Override
public void onClick(View v) {
// 点击退出当前的 Activity
mActivity.finish();
}
package com.hjq.demo.ui.adapter;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import com.github.chrisbanes.photoview.PhotoView;
import com.hjq.image.ImageLoader;
import java.util.List;
/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/03/05
* desc : 图片加载适配器
*/
public final class PhotoPagerAdapter extends PagerAdapter implements View.OnClickListener {
private Activity mActivity;
private List<String> mData;
public PhotoPagerAdapter(Activity activity, List<String> data) {
mActivity = activity;
mData = data;
}
// 加载数量,自动回调
@Override
public int getCount() {
return mData.size();
}
// 返回真表示不会重新创建,使用缓存加载。返回假则重新创建
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
/**
* 实例化条目
* ViewPager预加载机制:最多保存3个page,超过的将需要被销毁掉
* 由于最多3个page,所以不需要设置ViewHolder
* 用于将数据设置给ViewItem
*/
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
PhotoView view = new PhotoView(mActivity);
view.setOnClickListener(this);
ImageLoader.loadImage(view, mData.get(position));
// 将View添加到ViewPager
container.addView(view);
return view;
}
// 销毁条目
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
@Override
public void onClick(View v) {
// 点击退出当前的 Activity
mActivity.finish();
}
}

+ 0
- 1
app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentA.java 파일 보기

@@ -2,7 +2,6 @@ package com.hjq.demo.ui.fragment;

import android.support.design.widget.AppBarLayout;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.widget.TextView;

import com.gyf.barlibrary.ImmersionBar;

+ 2
- 2
app/src/main/java/com/hjq/demo/ui/fragment/TestFragmentD.java 파일 보기

@@ -10,7 +10,7 @@ import com.hjq.demo.common.MyLazyFragment;
import com.hjq.demo.ui.activity.AboutActivity;
import com.hjq.demo.ui.activity.DialogActivity;
import com.hjq.demo.ui.activity.HomeActivity;
import com.hjq.demo.ui.activity.ImageActivity;
import com.hjq.demo.ui.activity.PhotoActivity;
import com.hjq.demo.ui.activity.LoginActivity;
import com.hjq.demo.ui.activity.PasswordForgetActivity;
import com.hjq.demo.ui.activity.PasswordResetActivity;
@@ -99,7 +99,7 @@ public final class TestFragmentD extends MyLazyFragment<HomeActivity> {
startActivity(WebActivity.class);
break;
case R.id.btn_test_image:
startActivity(ImageActivity.class);
startActivity(PhotoActivity.class);
break;
case R.id.btn_test_pay:
new MessageDialog.Builder(getBindingActivity())

+ 34
- 0
app/src/main/java/com/hjq/demo/widget/PhotoViewPager.java 파일 보기

@@ -0,0 +1,34 @@
package com.hjq.demo.widget;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/05/07
* desc : ViewPager 中使用 PhotoView 时出现 pointerIndex out of range 异常
*/
public final class PhotoViewPager extends ViewPager {
public PhotoViewPager(Context context) {
super(context);
}
public PhotoViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// 当PhotoView 和 ViewPager 组合时 ,用双指进行放大时 是没有问题的,但是用双指进行缩小的时候,程序就会崩掉
// 并且抛出java.lang.IllegalArgumentException: pointerIndex out of range
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException | ArrayIndexOutOfBoundsException ignored) {
return false;
}
}
}

app/src/main/res/mipmap/bg_launcher.jpg → app/src/main/res/drawable-xxhdpi/bg_launcher.jpg 파일 보기


app/src/main/res/mipmap/ic_logo.png → app/src/main/res/drawable-xxhdpi/ic_logo.png 파일 보기


+ 1
- 1
app/src/main/res/layout/activity_about.xml 파일 보기

@@ -19,7 +19,7 @@
android:layout_height="@dimen/space_200"
android:layout_marginTop="@dimen/space_80"
android:layout_marginBottom="@dimen/space_80"
android:src="@mipmap/ic_logo" />
android:src="@drawable/ic_logo" />
<LinearLayout
android:layout_width="match_parent"

+ 2
- 2
app/src/main/res/layout/activity_launcher.xml 파일 보기

@@ -11,7 +11,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@mipmap/bg_launcher" />
android:src="@drawable/bg_launcher" />
<LinearLayout
android:layout_width="wrap_content"
@@ -25,7 +25,7 @@
android:id="@+id/iv_launcher_icon"
android:layout_width="@dimen/space_400"
android:layout_height="@dimen/space_400"
android:src="@mipmap/ic_logo" />
android:src="@drawable/ic_logo" />
<TextView
android:id="@+id/iv_launcher_name"

+ 1
- 1
app/src/main/res/layout/activity_login.xml 파일 보기

@@ -24,7 +24,7 @@
android:layout_width="@dimen/space_200"
android:layout_height="wrap_content"
android:layout_margin="@dimen/space_60"
android:src="@mipmap/ic_logo" />
android:src="@drawable/ic_logo" />
<com.hjq.widget.ClearEditText
android:id="@+id/et_login_phone"

app/src/main/res/layout/activity_image.xml → app/src/main/res/layout/activity_photo.xml 파일 보기

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/vp_image_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".ui.activity.ImageActivity" />
<?xml version="1.0" encoding="utf-8"?>
<com.hjq.demo.widget.PhotoViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/vp_photo_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".ui.activity.PhotoActivity" />

+ 1
- 1
app/src/main/res/layout/fragment_test_a.xml 파일 보기

@@ -27,7 +27,7 @@
android:layout_height="wrap_content"
android:paddingTop="@dimen/space_300"
android:scaleType="centerCrop"
android:src="@mipmap/bg_launcher"
android:src="@drawable/bg_launcher"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar

+ 4
- 4
app/src/main/res/layout/fragment_test_b.xml 파일 보기

@@ -33,13 +33,13 @@
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="@dimen/space_180"
android:layout_height="@dimen/space_180"
android:src="@mipmap/bg_launcher" />
android:src="@drawable/bg_launcher" />
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="@dimen/space_180"
android:layout_height="@dimen/space_180"
android:layout_marginLeft="@dimen/space_40"
android:src="@mipmap/ic_logo"
android:src="@drawable/ic_logo"
app:civ_border_color="@color/white60"
app:civ_border_width="@dimen/space_2" />
@@ -47,7 +47,7 @@
android:layout_width="@dimen/space_180"
android:layout_height="@dimen/space_180"
android:layout_marginLeft="@dimen/space_40"
android:src="@mipmap/ic_logo"
android:src="@drawable/ic_logo"
app:civ_border_color="@color/black60"
app:civ_border_width="@dimen/space_2" />
@@ -210,7 +210,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@mipmap/bg_launcher" />
android:src="@drawable/bg_launcher" />
</LinearLayout>

+ 0
- 1
dialog/src/main/java/com/hjq/dialog/InputDialog.java 파일 보기

@@ -2,7 +2,6 @@ package com.hjq.dialog;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.View;

+ 2
- 1
dialog/src/main/java/com/hjq/dialog/MenuDialog.java 파일 보기

@@ -29,7 +29,8 @@ public final class MenuDialog {

public static final class Builder
extends BaseDialogFragment.Builder<Builder>
implements View.OnClickListener, BaseRecyclerViewAdapter.OnItemClickListener {
implements View.OnClickListener,
BaseRecyclerViewAdapter.OnItemClickListener {

private OnListener mListener;
private boolean mAutoDismiss = true;

+ 2
- 1
dialog/src/main/java/com/hjq/dialog/PayPasswordDialog.java 파일 보기

@@ -30,7 +30,8 @@ public final class PayPasswordDialog {

public static final class Builder
extends BaseDialogFragment.Builder<Builder>
implements BaseRecyclerViewAdapter.OnItemClickListener, View.OnClickListener {
implements BaseRecyclerViewAdapter.OnItemClickListener,
View.OnClickListener {

// 输入键盘文本
private static final String[] KEYBOARD_TEXT = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "", "0", ""};

+ 0
- 15
umeng/src/main/java/com/hjq/umeng/WeChatActivity.java 파일 보기

@@ -1,15 +0,0 @@
package com.hjq.umeng;

import android.os.Bundle;

import com.umeng.socialize.weixin.view.WXCallbackActivity;

/**
* author : Android 轮子哥
* github : https://github.com/getActivity/AndroidProject
* time : 2019/04/29
* desc : 微信回调 Activity
*/
public class WeChatActivity extends WXCallbackActivity {

}

+ 0
- 2
widget/src/main/java/com/hjq/widget/ClearEditText.java 파일 보기

@@ -2,14 +2,12 @@ package com.hjq.widget;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;

+ 0
- 1
widget/src/main/java/com/hjq/widget/HintLayout.java 파일 보기

@@ -12,7 +12,6 @@ import android.support.annotation.StringRes;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

Loading…
취소
저장