안드로이드 사용자 정의보기는 완전한 검증을 달성하기 위해 슬라이더를 드래그

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/Utzw0p0985/article/details/98548587

이 문서는 이상, 약 10 분 읽기

이 효과는 질문의 행성의 스타 친구에서 온다 :

640? wx_fmt = PNG      

효과에서 주말 휴식은 대부분의 휴대 전화 앱, 사실,이 효과는 일반적으로 웹에 대한 확인, 거의 달성, 또는 SMS 확인 코드 등, 또는 웹보기이 적용 JS로드, 그러나 당신이보기 모양을 사용자 정의 할, 나는 여기에 나는 내 아이디어는 먼저 우리가 확인 코드의 구성 요소를 분석, 오픈 소스, 많은 세부 사항 더 관심을 쓰고 싶지 않아, 사용자 정의보기를 쓸 수 있지만 Silu 하에 초점을 맞추고합니다

BACKGROUND 1.도.

그림 2. 공석

(3) 이동

4. 성공 팁

5. 진행 바가 슬라이더

그래서 우리는 먼저, PictureV라는, 그것의 배경을 그리는 첫 번째 뷰를 만들;

640? wx_fmt = JPEG      

나는 우리가 결국 사진의 크기를 확인하지 않기 때문에, mBitmap가 bgBitmap를 입력하자, mBitmap 같은 그림을로드 한 다음 같은 크기가 bgBitmap의 폭과 높이를 제어 만들려면 여기 있어요 것은 얼마나이기 때문에 createBitmap 만든 다음과 같은 결과를 보여, 결국 bgBitmap보기에 그려진 높은 폭의 캔버스를보기 :

640? wx_fmt = PNG      

그런 다음, 우리는 코드를 보면, 내가 그릴 수있는 작은 상자를 찾을 수 있습니다 남아 있음, 사진을 그리기 시작했다 :

640? wx_fmt = JPEG      

빈 상자를 그립니다 만 잘을 그릴 수있는 그림을로드해야하고, 내가 광장, 그는 기본적으로 나타나는 장소의 계산에 의해 다음, 즉 것을 깨달았 때문에 나는 여기, 폭하는 높이의 작은 사각형의 폭에 nullBitmap를 얻을 수 LINE_W, LINE_H 물론, 당신은이 같은 이유는 동적 랜덤 수, 실행 해보십시오 :

640? wx_fmt = PNG      

그런 다음 우리가 상자를 그립니다해야하고 다음과 같이 빈 상자의 위치를 ​​가로 채기 위해 이동 상자를 볼 수 있습니다

640? wx_fmt = JPEG      

由于移动的方块是需要截取空白处的,所以我们还是利用了createBitmap创建一个新的位图,他的高宽就是我们的空白块高宽,并且他的大小是我们之前绘制空白块的宽度,也就是CARD_SIZE,这里要注意的是我们绘制位图的时候x轴,也就是平行线需要使用一个变量来表示,等一下滑动的时候要动态修改的,来看下效果:

640? wx_fmt = PNG      

这个效果看起来还是不错的,我们现在需要其实可以处理滑动事件了,因为我们这个案例是支持手势滑动的,来看下Touch的代码:

640? wx_fmt = JPEG      

这个方法中不仅处理了滑动事件,也处理了计时的任务,我们在按下的时候开始计时,当抬起的时候则关闭计时,这个时候就知道你移动一次所需要的时间,方便我们绘制结果提示,接着来看move方法吧,首先我们的拖动不能超过屏幕左右侧,所以我们左侧直接大于0,右侧的话则需要屏幕宽度减去方块大小,才赋值给moveX,然后刷新一下View就可以看到效果了,我们来看下Gif图片:

640? wx_fmt = GIF      

当然,MOVE处理移动,那么UP就要处理结果了,我需要知道你到底成功了没有,那么我们可以看到,在UP中,我们首先先remove掉计时器,不管你成功与否,这一次的计时算是结束了,然后我们判断你的移动块是否在空白块的位置,也就是LINE_W和LINE_H,这里我设置了一个errorValue 误差值,防止一些手残党对不准,当位置吻合,说明移动成功了,那我们通过接口通知外部调用对象,并且这里有一个变量isSucceed设置为true再刷新,是为了onDraw里的绘制成功提示:

640? wx_fmt = PNG      

moveTime就是我们计算的时间了,来看下drawSucceedText这个方法:

640? wx_fmt = JPEG      

这里绘制了两部分,一个是背景一个是文字,背景直接RectF,至于他的位置,我们是放在底部,所以mHeight减去我们希望的高度即可,然后文本就比较麻烦了,因为我们要绘制居中,通过测量得出baseY,文本绘制居中这个可以参考资料或者网上一些人的讲解

640? wx_fmt = PNG      

这样就可以实现绘制的文本居中了,然后我们运行看下效果

640? wx_fmt = PNG      

여기에 효과가 좋은 보는 것입니다, 그러나 우리는 아직도 내가 직접 여기, 슬라이드 진행률 표시 줄이 구현 될 필요가 슬라이드에 따라 달성, 직접 진행, 슬라이더를 끌어 진행 상황을 드래그 원 직접 무승부의 측면에서 정상이었을 것입니다 만, 게으른, 오른쪽, 달성하기 위해 진행 막대를 사용하여, 꽥꽥 ~ ~

그럼 어떻게 그것을 할까? 첫째, 검색 막대를 추가

640? wx_fmt = JPEG      

이어서 PictureV 외부 출력 값에 대한 인터페이스를 추가 두개의 출력 값은 최대 값이 현재 진행은

640? wx_fmt = PNG      

그리고 우리가 현재 값이 moveX, 최대 값은 폭을 뺀 상자의 크기는 기본, 당신은 외국 updateX라는 메소드를 추가해야

640? wx_fmt = PNG      

이 방법은 외부 호출을 제공, 우리는 이벤트가 같은뿐만 아니라 할당이 성공을 판단 moveX 또는 실패에서 MainActivity 모양을 호출 할 수 있습니다 처리 그대로 미끄러있다 :

640? wx_fmt = JPEG      

운영 결과를 봐 :

640? wx_fmt = PNG      

사실, 작은 세부 사항을 제어 너무 게으른 거기 ACTION_DOWN 시작에는 타이머 없지만, 항상 게으른 되었기 때문에 계산하고 마지막으로 모든 코드 PictureV의를 넣어 여기에 시간이 없다 :

640? wx_fmt = JPEG      

마지막으로, GIF를 실행합니다 :

640? wx_fmt = GIF      

일반적인 아이디어는 매우 달성하기 위해, 그리고 어떤 패키지 거래, 그냥 사진에 효과를 달성하기 위해, 학생들에게 과정의 구현을 말하려고하지 않지만이보기에 따라, 당신은 자신이 변경 악마로 갈 수있는 정제 될 필요가 당신이 할 수있는, 생각> 데모

데모 다운로드 :

https://pan.baidu.com/s/19sDesmsGyZJfsj0Xm3U96g

추출 코드 : w0iw

오, 내 지식 행성에 가입 할 수 있습니다 이해 당사자, 당신은 단지 오 원래 읽기 클릭 할 수 있습니다 ~

행성의 오른쪽 아래 모서리에이 지식이 클릭의 공개 수있을 수 있습니다 내가 [정보] 또는 공용 수는 [안녕 안드로이드]를 보내려고 [행성] 지식 수

추천

출처blog.csdn.net/Utzw0p0985/article/details/98548587