|
|
@ -8,17 +8,15 @@ import android.view.HapticFeedbackConstants; |
|
|
|
import android.view.LayoutInflater; |
|
|
|
import android.view.LayoutInflater; |
|
|
|
import android.view.View; |
|
|
|
import android.view.View; |
|
|
|
import android.view.ViewGroup; |
|
|
|
import android.view.ViewGroup; |
|
|
|
|
|
|
|
import android.view.animation.DecelerateInterpolator; |
|
|
|
import android.widget.BaseAdapter; |
|
|
|
import android.widget.BaseAdapter; |
|
|
|
|
|
|
|
|
|
|
|
import org.floens.chan.R; |
|
|
|
import org.floens.chan.R; |
|
|
|
import org.floens.chan.utils.AndroidUtils; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
public class CaptchaNoJsV2Adapter extends BaseAdapter { |
|
|
|
public class CaptchaNoJsV2Adapter extends BaseAdapter { |
|
|
|
private static final int ANIMATION_DURATION = 50; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private LayoutInflater inflater; |
|
|
|
private LayoutInflater inflater; |
|
|
|
private int imageSize = 0; |
|
|
|
private int imageSize = 0; |
|
|
|
|
|
|
|
|
|
|
@ -57,9 +55,13 @@ public class CaptchaNoJsV2Adapter extends BaseAdapter { |
|
|
|
public View getView(final int position, View convertView, ViewGroup parent) { |
|
|
|
public View getView(final int position, View convertView, ViewGroup parent) { |
|
|
|
if (convertView == null) { |
|
|
|
if (convertView == null) { |
|
|
|
convertView = inflater.inflate(R.layout.layout_captcha_challenge_image, parent, false); |
|
|
|
convertView = inflater.inflate(R.layout.layout_captcha_challenge_image, parent, false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
AppCompatImageView imageView = convertView.findViewById(R.id.captcha_challenge_image); |
|
|
|
AppCompatImageView imageView = convertView.findViewById(R.id.captcha_challenge_image); |
|
|
|
|
|
|
|
imageView.setScaleX(1.0f); |
|
|
|
|
|
|
|
imageView.setScaleY(1.0f); |
|
|
|
ConstraintLayout blueCheckmarkHolder = convertView.findViewById(R.id.captcha_challenge_blue_checkmark_holder); |
|
|
|
ConstraintLayout blueCheckmarkHolder = convertView.findViewById(R.id.captcha_challenge_blue_checkmark_holder); |
|
|
|
|
|
|
|
blueCheckmarkHolder.setAlpha(0.0f); |
|
|
|
|
|
|
|
|
|
|
|
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(imageSize, imageSize); |
|
|
|
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(imageSize, imageSize); |
|
|
|
imageView.setLayoutParams(layoutParams); |
|
|
|
imageView.setLayoutParams(layoutParams); |
|
|
@ -70,14 +72,22 @@ public class CaptchaNoJsV2Adapter extends BaseAdapter { |
|
|
|
imageList.get(position).toggleChecked(); |
|
|
|
imageList.get(position).toggleChecked(); |
|
|
|
boolean isChecked = imageList.get(position).isChecked; |
|
|
|
boolean isChecked = imageList.get(position).isChecked; |
|
|
|
|
|
|
|
|
|
|
|
AndroidUtils.animateViewScale(imageView, isChecked, ANIMATION_DURATION); |
|
|
|
imageView.animate() |
|
|
|
blueCheckmarkHolder.setVisibility(isChecked ? View.VISIBLE : View.GONE); |
|
|
|
.scaleX(isChecked ? 0.8f : 1.0f) |
|
|
|
|
|
|
|
.scaleY(isChecked ? 0.8f : 1.0f) |
|
|
|
|
|
|
|
.setInterpolator(new DecelerateInterpolator(2.0f)) |
|
|
|
|
|
|
|
.setDuration(200) |
|
|
|
|
|
|
|
.start(); |
|
|
|
|
|
|
|
blueCheckmarkHolder.animate() |
|
|
|
|
|
|
|
.alpha(isChecked ? 1.0f : 0.0f) |
|
|
|
|
|
|
|
.setInterpolator(new DecelerateInterpolator(2.0f)) |
|
|
|
|
|
|
|
.setDuration(200) |
|
|
|
|
|
|
|
.start(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
if (position >= 0 && position <= imageList.size()) { |
|
|
|
if (position >= 0 && position <= imageList.size()) { |
|
|
|
imageView.setImageBitmap(imageList.get(position).getBitmap()); |
|
|
|
imageView.setImageBitmap(imageList.get(position).getBitmap()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return convertView; |
|
|
|
return convertView; |
|
|
|
} |
|
|
|
} |
|
|
|