Просмотр исходного кода

邀请赚钱中分享的效果图通过比例进行优化;
二维码任务中二维码展示效果与布局修改

zengjiebin лет назад: 7
Родитель
Сommit
bf06400165

+ 53 - 0
app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java

@@ -2,17 +2,21 @@ package com.sheep.gamegroup.util;
 
 import android.content.Intent;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.text.TextUtils;
 import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.RequestOptions;
 import com.sheep.gamegroup.util.glide.GlideCircleTransformWithBorder;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
+import com.sheep.jiuyan.samllsheep.utils.FileUtil;
 import com.uuzuche.lib_zxing.activity.CodeUtils;
 import com.zhy.http.okhttp.OkHttpUtils;
 import com.zhy.http.okhttp.callback.FileCallBack;
@@ -230,4 +234,53 @@ public class GlideImageLoader {
                     .into(iconImgIv);
         }
     }
+
+    /**
+     * 通过下载到本地的方式来加载图片并设置圆角与宽高,需要传入显示的宽度
+     * @param name
+     * @param link
+     * @param imageView
+     * @param width
+     * @param radius
+     */
+    public static void downloadAndRoundedImage(String name, String link, final ImageView imageView, final int width, final int radius) {
+        GlideImageLoader.downLoadImage(name, link, new Action1<File>() {
+            @Override
+            public void call(File file) {
+                BitmapFactory.Options options = FileUtil.getImageOptions(file);
+                int w = options.outWidth;
+                int h = options.outHeight;
+//                int w = width;
+//                int h = width * options.outHeight / options.outWidth;
+                Glide.with(SheepApp.getInstance())
+                        .load(file)
+                        .apply(new RequestOptions().override(w, h).fitCenter().transform(new RoundedCorners(radius)))
+                        .into(imageView);
+            }
+        });
+    }
+    /**
+     * 通过下载到本地的方式来加载图片并设置圆角与宽高
+     * @param name
+     * @param link
+     * @param imageView
+     * @param radius
+     */
+    public static void downloadAndRoundedImage(String name, String link, final ImageView imageView, final int radius, final RequestListener<Drawable> listener) {
+        GlideImageLoader.downLoadImage(name, link, new Action1<File>() {
+            @Override
+            public void call(File file) {
+                BitmapFactory.Options options = FileUtil.getImageOptions(file);
+                int w = options.outWidth;
+                int h = options.outHeight;
+//                int w = width;
+//                int h = width * options.outHeight / options.outWidth;
+                Glide.with(SheepApp.getInstance())
+                        .load(file)
+                        .listener(listener)
+                        .apply(new RequestOptions().override(w, h).transform(new RoundedCorners(radius)))
+                        .into(imageView);
+            }
+        });
+    }
 }

+ 58 - 20
app/src/main/java/com/sheep/gamegroup/view/activity/ActInvitation.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.view.activity;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
@@ -15,15 +16,13 @@ import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.DataSource;
 import com.bumptech.glide.load.engine.GlideException;
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestListener;
-import com.bumptech.glide.request.RequestOptions;
 import com.bumptech.glide.request.target.Target;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.sheep.gamegroup.absBase.BaseActivity;
@@ -207,26 +206,65 @@ public class ActInvitation extends BaseActivity {
         for (final PictureInvitationEntity item : mPictureList) {
             View itemView = LayoutInflater.from(SheepApp.getInstance()).inflate(R.layout.item_image2, null);
 
+            View image_container = itemView.findViewById(R.id.image_container);
             ImageView image_full = itemView.findViewById(R.id.image_full);
+            View image_bottom_top = itemView.findViewById(R.id.image_bottom_top);
             ImageView image_bottom = itemView.findViewById(R.id.image_bottom);
-            Glide.with(SheepApp.getInstance())
-                    .load(item.getPicture())
-                    .listener(new RequestListener<Drawable>() {
-                        @Override
-                        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
-                            item.setLoaded(false);
-                            return false;
-                        }
+            ImageView image_logo = itemView.findViewById(R.id.image_logo);
+            TextView image_tip = itemView.findViewById(R.id.image_tip);
+            RequestListener<Drawable> listener = new RequestListener<Drawable>() {
+                @Override
+                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
+                    item.setLoaded(false);
+                    return false;
+                }
 
-                        @Override
-                        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
-                            item.setLoaded(true);
-                            return false;
-                        }
-                    })
-                    .apply(new RequestOptions().transform(new RoundedCorners((int) getResources().getDimension(R.dimen.content_padding_8))).fitCenter())
-                    .into(image_full);
-            GlideImageLoader.saveAndSetRqImage(image_bottom, item.getLink(), 800);
+                @Override
+                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
+                    item.setLoaded(true);
+                    return false;
+                }
+            };
+            if(item.getPicture() != null)
+                GlideImageLoader.downloadAndRoundedImage(String.valueOf(item.getPicture().hashCode()), item.getPicture(), image_full, getResources().getDimensionPixelSize(R.dimen.content_padding_8), listener);
+            //之前的方法实际上没有实现圆角效果
+//            Glide.with(SheepApp.getInstance())
+//                    .load(item.getPicture())
+//                    .listener(listener)
+//                    .apply(new RequestOptions().transform(new RoundedCorners((int) getResources().getDimension(R.dimen.content_padding_8))).fitCenter())
+//                    .into(image_full);
+            int vWidth = viewPager.getWidth();
+            float containerWidthRadius = 60 / 216F;
+            float containerHeightRadius = 70 / 216F;
+            float rqRadius = 53 / 216F;
+            float tipRadius = 5 / 216F;
+            float radius = 4 / 216F;
+            float topRadius = 2 / 216F;
+            float logoRadius = rqRadius * 16 / 68;
+            GlideImageLoader.saveAndSetRqImage(image_bottom, item.getLink(), (int) (vWidth * rqRadius));
+            //重新设置logo的宽高
+            ViewGroup.LayoutParams layoutParams = image_logo.getLayoutParams();
+            layoutParams.width = (int) (vWidth * logoRadius);
+            layoutParams.height = (int) (vWidth * logoRadius);
+            image_logo.setLayoutParams(layoutParams);
+            //重新设置二维码上部的距离
+            ViewGroup.LayoutParams layoutParamsTop = image_bottom_top.getLayoutParams();
+            layoutParamsTop.height = (int) (vWidth * topRadius);
+            image_bottom_top.setLayoutParams(layoutParamsTop);
+            //重新设置《扫我开始赚钱》的高度
+            ViewGroup.LayoutParams layoutParamsTip = image_tip.getLayoutParams();
+            layoutParamsTip.height = (int) (vWidth * (tipRadius + topRadius * 3 / 2));
+            image_tip.setLayoutParams(layoutParamsTip);
+            image_tip.setTextSize(vWidth * tipRadius / G.DENSITY);
+            //重新设置整个二维码外容器的高度
+            ViewGroup.LayoutParams layoutParamsContainer = image_container.getLayoutParams();
+            layoutParamsContainer.width = (int) (vWidth * containerWidthRadius);
+            layoutParamsContainer.height = (int) (vWidth * containerHeightRadius);
+            image_container.setLayoutParams(layoutParamsContainer);
+            Drawable bg = image_container.getBackground();
+            if (bg instanceof GradientDrawable) {
+                ((GradientDrawable) bg).setCornerRadius(vWidth * radius);
+            }
             viewArrayList.add(itemView);
             viewList.put(size, itemView);
             size++;

+ 2 - 11
app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonListviewAdp.java

@@ -276,17 +276,8 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
             ar_code_layout.setVisibility(View.GONE);
         }else {
             if(taskReleaseEty.isIs_running()){
-                GlideImageLoader.downLoadImage(taskReleaseEty.getTask().getTask_name(), taskReleaseEty.getTask().getQr_code(), new Action1<File>() {
-                    @Override
-                    public void call(File file) {
-                        BitmapFactory.Options options = FileUtil.getImageOptions(file);
-                        int width = context.getResources().getDimensionPixelSize(R.dimen.content_padding_150);
-                        Glide.with(SheepApp.getInstance())
-                                .load(file)
-                                .apply(new RequestOptions().override(width, width * options.outHeight / options.outWidth).transform(new RoundedCorners(context.getResources().getDimensionPixelSize(R.dimen.content_padding_8))))
-                                .into((ImageView) qr_code_iv);
-                    }
-                });
+                GlideImageLoader.downloadAndRoundedImage(taskReleaseEty.getTask().getTask_name(), taskReleaseEty.getTask().getQr_code(), (ImageView) qr_code_iv,
+                        context.getResources().getDimensionPixelSize(R.dimen.content_padding_150), context.getResources().getDimensionPixelSize(R.dimen.content_padding_8));
                 btn_task_item.setVisibility(View.VISIBLE);
                 qr_code_notice_tv.setVisibility(View.GONE);
                 btn_task_item.setOnClickListener(new View.OnClickListener() {

+ 1 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/G.java

@@ -32,7 +32,7 @@ public class G {
     public static int HEIGHT = 1280;//屏幕高
     public static int WIDTH = 720;//屏幕宽
     public static float DENSITY = 2;//屏幕的Density
-    public static int DENSITY_DPI = 2;//屏幕的Density
+    public static int DENSITY_DPI = 320;//屏幕的Density
     public static int BAR_HEIGHT = 50;//状态栏高度
 
     /**

+ 1 - 1
app/src/main/res/drawable/shape_white_solid_rectangle_2.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
-    <corners android:radius="2dp" />
+    <corners android:radius="5dp" />
     <solid android:color="#ffffff" />
 </shape>

+ 11 - 10
app/src/main/res/layout/item_image2.xml

@@ -11,20 +11,21 @@
         android:layout_centerHorizontal="true" />
 
     <LinearLayout
-        android:layout_width="70dp"
-        android:layout_height="80dp"
+        android:id="@+id/image_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
-        android:background="@drawable/shape_white_solid_rectangle_2"
+        android:background="@drawable/shape_white_solid_rectangle_5"
         android:orientation="vertical">
-
+        <View
+            android:id="@+id/image_bottom_top"
+            android:layout_width="match_parent"
+            android:layout_height="1dp"/>
         <RelativeLayout
             android:layout_width="wrap_content"
             android:layout_height="0dp"
             android:layout_gravity="center_horizontal"
-            android:layout_marginLeft="4dp"
-            android:layout_marginTop="4dp"
-            android:layout_marginRight="4dp"
             android:layout_weight="1">
 
             <ImageView
@@ -35,6 +36,7 @@
                 android:src="@drawable/loading_01" />
 
             <ImageView
+                android:id="@+id/image_logo"
                 android:layout_width="10dp"
                 android:layout_height="10dp"
                 android:layout_centerInParent="true"
@@ -42,11 +44,10 @@
         </RelativeLayout>
 
         <TextView
+            android:id="@+id/image_tip"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="1dp"
-            android:layout_marginBottom="3dp"
-            android:gravity="center"
+            android:gravity="top|center"
             android:text="扫我开始赚钱"
             android:textColor="#ff999999"
             android:textSize="8sp" />

+ 8 - 8
app/src/main/res/layout/taskdetail_mylistview_item.xml

@@ -120,7 +120,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginBottom="@dimen/content_padding_15"
-            android:visibility="gone">
+            android:visibility="visible">
 
             <TextView
                 android:id="@+id/qr_code_blue_line"
@@ -144,7 +144,7 @@
 
             <ImageView
                 android:id="@+id/qr_code_iv"
-                android:layout_width="150dp"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/content_padding_18"
                 android:src="@mipmap/qr_code_taskdetail_zhanwei"
@@ -155,7 +155,7 @@
                 android:id="@+id/btn_task_item"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="@dimen/content_padding_15"
+                android:layout_marginTop="@dimen/content_padding_15"
                 android:background="@drawable/selector_button_full_main"
                 android:gravity="center"
                 android:paddingBottom="@dimen/content_padding_3"
@@ -165,19 +165,19 @@
                 android:text="保存二维码"
                 android:textColor="@color/white"
                 android:textSize="@dimen/text_size_12"
-                app:layout_constraintBottom_toBottomOf="@+id/qr_code_iv"
-                app:layout_constraintStart_toEndOf="@+id/qr_code_iv" />
+                app:layout_constraintTop_toBottomOf="@+id/qr_code_iv"
+                app:layout_constraintStart_toStartOf="parent" />
 
             <TextView
                 android:id="@+id/qr_code_notice_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="@dimen/content_padding_15"
+                android:layout_marginTop="@dimen/content_padding_15"
                 android:text="领取任务后可获得二维码"
                 android:textColor="@color/gray"
                 android:textSize="@dimen/text_size_12"
-                app:layout_constraintStart_toEndOf="@+id/qr_code_iv"
-                app:layout_constraintTop_toTopOf="@+id/qr_code_iv" />
+                app:layout_constraintTop_toBottomOf="@+id/qr_code_iv"
+                app:layout_constraintStart_toStartOf="parent" />
         </android.support.constraint.ConstraintLayout>