真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android驗(yàn)證碼,android驗(yàn)證碼識別

出現(xiàn)android設(shè)備登錄銀行驗(yàn)證碼是什么意思?

工行的手機(jī)銀行/融e聯(lián)等客戶端支持通過短信驗(yàn)證碼登錄或綁定設(shè)備。如您未進(jìn)行過任何操作,收到短信驗(yàn)證碼有以下兩種情況:1.其他客戶在登錄時,輸錯了手機(jī)號導(dǎo)致;2.不法分子正在用您的手機(jī)號嘗試登錄。請您提高警惕,不要隨便告知他人驗(yàn)證碼

10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有凱里免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

android獲取短信驗(yàn)證碼怎么實(shí)現(xiàn)的

要用到短信驗(yàn)證接口的,這個開發(fā)起來不復(fù)雜的。在程序里邊實(shí)現(xiàn)的流程是:用戶注冊會員的時候,先輸入自己的手機(jī)號碼,點(diǎn)擊獲取驗(yàn)證碼;網(wǎng)站隨機(jī)生成一個數(shù)字作為驗(yàn)證碼,同時調(diào)用驗(yàn)證碼短信接口給這個用戶發(fā)送一條短信;用戶收到短信后填寫驗(yàn)證碼,再跟生成的數(shù)字進(jìn)行比對,如果一致,那么說明用戶填寫的手機(jī)號碼是正確的,驗(yàn)證成功

android滑動拼圖驗(yàn)證碼控件

package com.yolanda.code.library.widget;

import android.animation.ValueAnimator;

import android.content.Context;

import android.graphics.Bitmap;

import android.os.Handler;

import android.util.AttributeSet;

import android.view.View;

import android.view.ViewGroup;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.LinearInterpolator;

import android.view.animation.TranslateAnimation;

import android.widget.FrameLayout;

import android.widget.ImageView;

import android.widget.SeekBar;

import android.widget.TextView;

import com.yolanda.code.library.R;

import com.yolanda.code.library.view.DiyStyleTextView;

/**

* @author Created by Yolanda on 2018/10/31.

* @description 滑動拼圖驗(yàn)證碼

*/

public final class DragImageView extends FrameLayout implements SeekBar.OnSeekBarChangeListener {

private final int showTipsTime = 1500;

private final int animeTime = 333;

private final int flashTime = 800;

private ImageView ivCover;

private ImageView ivBlock;

private SeekBar sb;

private TextView tvTips2;

private DiyStyleTextView tvTips;

private View vFlash, flContent;

private Handler handler = new Handler();

private Bitmap cover, block, completeCover;

private boolean isNormal;

public DragImageView(Context context) {

? ? super(context);

? ? init();

}

public DragImageView(Context context, AttributeSet attrs) {

? ? super(context, attrs);

? ? init();

}

public DragImageView(Context context, AttributeSet attrs, int defStyle) {

? ? super(context, attrs, defStyle);

? ? init();

}

private void init() {

? ? View.inflate(getContext(), R.layout.drag_view, this);

? ? flContent = findViewById(R.id.drag_fl_content);

? ? ivCover = findViewById(R.id.drag_iv_cover);

? ? ivBlock = findViewById(R.id.drag_iv_block);

? ? tvTips = findViewById(R.id.drag_tv_tips);

? ? tvTips2 = findViewById(R.id.drag_tv_tips2);

? ? vFlash = findViewById(R.id.drag_v_flash);

? ? tvTips.setColorRegex("拼圖|成功|失敗|正確|[\\d\\.%]+", 0xfff75151);

? ? sb = findViewById(R.id.drag_sb);

? ? sb.setMax(getContext().getResources().getDisplayMetrics().widthPixels);

? ? sb.setOnSeekBarChangeListener(this);

? ? reset();

}

/**

* 設(shè)置資源

*

* @param cover? ? ? ? 拼圖

* @param block? ? ? ? 滑塊

* @param completeCover 完成的拼圖

* @param block_y? ? ? 滑塊Y值比例

*/

public void setUp(Bitmap cover, Bitmap block, Bitmap completeCover, float block_y) {

? ? this.cover = cover;

? ? this.block = block;

? ? this.completeCover = completeCover;

? ? ivCover.setImageBitmap(completeCover);

? ? ivBlock.setImageBitmap(block);

? ? setLocation(1f * cover.getWidth() / cover.getHeight(), 1f * block.getHeight() / cover.getHeight(), block_y);

}

/**

* 設(shè)置比例大小

*

* @param cover_wph? 圖片bili

* @param block_size 滑塊大小占高比

* @param block_y? ? 滑塊位置占高比

*/

private void setLocation(final float cover_wph, final float block_size, final float block_y) {

? ? post(new Runnable() {

? ? ? ? @Override

? ? ? ? public void run() {

? ? ? ? ? ? final int w = flContent.getMeasuredWidth();

? ? ? ? ? ? int h = (int) (w / cover_wph);

? ? ? ? ? ? ViewGroup.LayoutParams l = flContent.getLayoutParams();

? ? ? ? ? ? l.width = w;

? ? ? ? ? ? l.height = h;

? ? ? ? ? ? flContent.setLayoutParams(l);

? ? ? ? ? ? ViewGroup.MarginLayoutParams l2 = (MarginLayoutParams) ivBlock.getLayoutParams();

? ? ? ? ? ? l2.height = (int) (h * block_size);

? ? ? ? ? ? l2.width = l2.height * block.getWidth() / block.getHeight();

? ? ? ? ? ? l2.topMargin = (int) (h * block_y);

? ? ? ? ? ? ivBlock.setLayoutParams(l2);

? ? ? ? }

? ? });

}

public void ok() {

? ? ivCover.setImageBitmap(completeCover);

? ? blockHideAnime();

? ? int penset = (int) (99 - (timeUse 1 ? timeUse - 1 : 0) / 0.1f);

? ? if (penset 1) penset = 1;

? ? tvTips.setText(String.format("拼圖成功: 耗時%.1f秒,打敗了%d%%的用戶!", timeUse, penset));

? ? tipsShowAnime(true);

? ? flashShowAnime();

? ? sb.setEnabled(false);

}

public void fail() {

? ? twinkleImage(ivBlock);

? ? tvTips.setText("拼圖失敗: 請重新拖曳滑塊到正確的位置!");

? ? tipsShowAnime(true);

? ? handler.postDelayed(resetRun, showTipsTime);

? ? sb.setEnabled(false);

}

public void reset() {

? ? final int position = sb.getProgress();

? ? if (position != 0) {

? ? ? ? ValueAnimator animator = ValueAnimator.ofFloat(1f, 0);

? ? ? ? animator.setDuration(animeTime).start();

? ? ? ? animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void onAnimationUpdate(ValueAnimator animation) {

? ? ? ? ? ? ? ? float f = (Float) animation.getAnimatedValue();

? ? ? ? ? ? ? ? sb.setProgress((int) (position * f));

? ? ? ? ? ? }

? ? ? ? });

? ? }

? ? tipsShowAnime(false);

? ? tips2ShowAnime(true);

? ? sb.setEnabled(true);

? ? ivBlock.setVisibility(GONE);

? ? vFlash.setVisibility(GONE);

? ? ivCover.setImageBitmap(completeCover);

? ? isNormal = true;

}

//===================seekbar監(jiān)聽===================

private long timeTemp;

private float timeUse;

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

? ? int cw = ivCover.getMeasuredWidth();

? ? int bw = ivBlock.getMeasuredWidth();

? ? ViewGroup.MarginLayoutParams l = (MarginLayoutParams) ivBlock.getLayoutParams();

? ? l.leftMargin = (cw - bw) * progress / seekBar.getMax();

? ? ivBlock.setLayoutParams(l);

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

? ? ivBlock.setVisibility(VISIBLE);

? ? ivCover.setImageBitmap(cover);

? ? tips2ShowAnime(false);

? ? timeTemp = System.currentTimeMillis();

? ? isNormal = false;

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

? ? timeUse = (System.currentTimeMillis() - timeTemp) / 1000.f;

? ? if (dragListenner != null)

? ? ? ? dragListenner.onDrag(seekBar.getProgress() * 1f / seekBar.getMax());

}

//===================seekbar監(jiān)聽===================

//閃爍滑塊

private void twinkleImage(final View view) {

? ? ValueAnimator animator = ValueAnimator.ofFloat(0, 1.0F);

? ? animator.setTarget(view);

? ? animator.setInterpolator(new LinearInterpolator());

? ? animator.setDuration(showTipsTime).start();

? ? animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

? ? ? ? @Override

? ? ? ? public void onAnimationUpdate(ValueAnimator animation) {

? ? ? ? ? ? float f = (Float) animation.getAnimatedValue();

? ? ? ? ? ? int time = (int) (showTipsTime * f);

? ? ? ? ? ? if (time 125)

? ? ? ? ? ? ? ? view.setVisibility(INVISIBLE);

? ? ? ? ? ? else if (time 250)

? ? ? ? ? ? ? ? view.setVisibility(VISIBLE);

? ? ? ? ? ? else if (time 375)

? ? ? ? ? ? ? ? view.setVisibility(INVISIBLE);

? ? ? ? ? ? else

? ? ? ? ? ? ? ? view.setVisibility(VISIBLE);

? ? ? ? }

? ? });

}

//提示文本顯示隱藏

private void tipsShowAnime(boolean isShow) {

? ? if ((tvTips.getVisibility() == VISIBLE) == isShow)

? ? ? ? return;

? ? TranslateAnimation translateAnimation = new TranslateAnimation(

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, 0f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, 0f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, isShow ? 1f : 0f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, isShow ? 0f : 1f);

? ? translateAnimation.setDuration(animeTime);

? ? //translateAnimation.setInterpolator(new LinearInterpolator());

? ? tvTips.setAnimation(translateAnimation);

? ? tvTips.setVisibility(isShow ? VISIBLE : GONE);

}

//提示文本顯示隱藏

private void tips2ShowAnime(boolean isShow) {

? ? if ((tvTips2.getVisibility() == VISIBLE) == isShow)

? ? ? ? return;

? ? AlphaAnimation translateAnimation = new AlphaAnimation(isShow ? 0 : 1, isShow ? 1 : 0);

? ? translateAnimation.setDuration(animeTime);

? ? //translateAnimation.setInterpolator(new LinearInterpolator());

? ? tvTips2.setAnimation(translateAnimation);

? ? tvTips2.setVisibility(isShow ? VISIBLE : GONE);

}

//成功完成拼圖滑塊消失

private void blockHideAnime() {

? ? AlphaAnimation translateAnimation = new AlphaAnimation(1, 0);

? ? translateAnimation.setDuration(animeTime);

? ? //translateAnimation.setInterpolator(new LinearInterpolator());

? ? ivBlock.setAnimation(translateAnimation);

? ? ivBlock.setVisibility(GONE);

}

//失敗震動動畫

private void failAnime() {

}

//成功高亮動畫

private void flashShowAnime() {

? ? TranslateAnimation translateAnimation = new TranslateAnimation(

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, 1f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, -1f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, 0f,

? ? ? ? ? ? Animation.RELATIVE_TO_SELF, 0f);

? ? translateAnimation.setDuration(flashTime);

? ? //translateAnimation.setInterpolator(new LinearInterpolator());

? ? vFlash.setAnimation(translateAnimation);

? ? vFlash.setVisibility(VISIBLE);

? ? translateAnimation.setAnimationListener(new Animation.AnimationListener() {

? ? ? ? @Override

? ? ? ? public void onAnimationStart(Animation animation) {

? ? ? ? }

? ? ? ? @Override

? ? ? ? public void onAnimationEnd(Animation animation) {

? ? ? ? ? ? vFlash.setVisibility(GONE);

? ? ? ? }

? ? ? ? @Override

? ? ? ? public void onAnimationRepeat(Animation animation) {

? ? ? ? }

? ? });

}

//失敗延時重置控件

private Runnable resetRun = new Runnable() {

? ? @Override

? ? public void run() {

? ? ? ? tipsShowAnime(false);

? ? ? ? tips2ShowAnime(true);

? ? ? ? sb.setEnabled(true);

? ? ? ? final int position = sb.getProgress();

? ? ? ? ValueAnimator animator = ValueAnimator.ofFloat(1f, 0);

? ? ? ? animator.setDuration(animeTime).start();

? ? ? ? animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void onAnimationUpdate(ValueAnimator animation) {

? ? ? ? ? ? ? ? float f = (Float) animation.getAnimatedValue();

? ? ? ? ? ? ? ? sb.setProgress((int) (position * f));

? ? ? ? ? ? }

? ? ? ? });

? ? ? ? isNormal = true;

? ? }

};

//監(jiān)聽

private DragListenner dragListenner;

public interface DragListenner {

? ? void onDrag(float position);

}

public void setDragListenner(DragListenner dragListenner) {

? ? this.dragListenner = dragListenner;

}

}

android獲取到驗(yàn)證碼

你好請問是問android獲取到驗(yàn)證碼的方法是什么嗎?android獲取到驗(yàn)證碼的方法是通過Mob官網(wǎng)提供的ShareSDK即可獲得。android獲取短信驗(yàn)證碼還是比較簡單的,是通過Mob官網(wǎng)提供的ShareSDK,調(diào)用其中內(nèi)部的方法,就可以獲取到短信的驗(yàn)證碼了。

『Android』一個簡單易用的驗(yàn)證碼輸入框(6位)

??之前開發(fā)中驗(yàn)證碼輸入的時候,找了各種各樣的驗(yàn)證碼輸入框,各種奇葩= =,最近抽空寫了一個,正好熟悉一下自定義控件。

github 地址:

之前在看其他人的之前方式,大概有以下幾類:

??我使用的就是最后一種:后邊使用一個 EditText 接收輸入內(nèi)容,在頁面上放置多個 TextView 展示輸入框中輸入的內(nèi)容。

null

在根目錄 build.build中加入:

添加依賴:

因?yàn)槠渲酗@示的光標(biāo)我使用的是動圖,所以還需要引入 glide 的依賴:

xml文件中:

a 下邊線樣式:

xml文件內(nèi)容:

b 四周都有框樣式:

xml文件內(nèi)容:

建議使用 gif 圖片,在控件中可以設(shè)置光標(biāo)的高度,光標(biāo)在輸入框中上下居中。效果圖片:

?

有需要的功能或者使用中遇到問題,可以留言或者發(fā)郵件給我:

郵箱: ymwmlxl@gmail.com


新聞名稱:android驗(yàn)證碼,android驗(yàn)證碼識別
轉(zhuǎn)載來于:http://weahome.cn/article/dscodgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部