Android進度條/等待載入——旋轉小圓點效果
進度條/等待載入——旋轉小圓點效果
1 效果圖
靜態圖片看不出效果,隨後更新文章,附上github地址。
2、思想
12個小圓點疊放(i=0,1,...11)
動畫一:依次從0度旋轉到30*i度
動畫二:依次從30*i度旋轉到360度
因為不牽扯使用者互動,所以用最基本的檢視動畫即可
3 佈局檔案
src\main\res\layout\activity_launch.xml
<RelativeLayout
android:id="@+id/progress_dots_locus"
android:layout_width="@dimen/px30"
android:layout_height="@dimen/px30"
android:layout_centerInParent="true">
<!--<ImageView
android:id="@+id/iv_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@drawable/shape_dot_white"/>-->
</RelativeLayout>
src\main\res\drawable\shape_dot_white.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:height="@dimen/px3"
android:width="@dimen/px3" />
<solid android:color="#ffffff" />
</shape>
4 程式碼實現
4.1 handler迴圈
//用於迴圈動畫的handler
public Handler animaLoopHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(ANIMA_LOOP == msg.what){
hasOneFinishCount = 0;
hasTwoFinishCount = 0;
startRotationAnimOneSet();
//Log.d(TAG, "1handleMessage() called with: msg = [" + msg + "]");
}
}
};
4.2 初始化小圓點,放於父控制元件頂部的中間為起始位置
/**
* 初始化小圓點
*/
private void initProgressDots() {
rlProgressDotsLocus.removeAllViews();
for (int i = 0; i < DOT_COUNT; i++) {
ImageView iv = new ImageView(LaunchActivity.this);
iv.setBackgroundResource(R.drawable.shape_dot_white);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
rlProgressDotsLocus.addView(iv,params);
ivDots.add(iv);
}
}
4.3 動畫的開啟,監聽動畫1結束時繼續動畫2,監聽動畫2結束髮送迴圈訊息
/**
* 開啟小圓點旋轉動畫1啊
*/
private void startRotationAnimOne(final ImageView iv, final float fromDegrees, final float toDegrees) {
//以View的父控制元件中心點作為旋轉軸,建立旋轉度的動畫
int pivotXType = Animation.ABSOLUTE;
float pivotXValue = 0;
int pivotYType = Animation.ABSOLUTE;
float pivotYValue = 15;//父控制元件高度的一半
Animation animation = new RotateAnimation(
fromDegrees, toDegrees,
pivotXType, pivotXValue,
pivotYType, pivotYValue
);
//設定動畫持續時間
animation.setDuration(DURATION_ANIM_ONE);
//animation.setFillAfter(true);
//animation.setRepeatCount(10);
//通過View的startAnimation方法將動畫立即應用到View上
iv.startAnimation(animation);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//startRotationAnimTwo(iv, toDegrees, 360);
hasOneFinishCount++;
if(DOT_COUNT == hasOneFinishCount){
startRotationAnimTwoSet();
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
/**
* 開啟小圓點旋轉動畫2
*/
private void startRotationAnimTwo(ImageView iv,float fromDegrees, float toDegrees) {
//以View的父控制元件中心點作為旋轉軸,建立旋轉度的動畫
int pivotXType = Animation.ABSOLUTE;
float pivotXValue = 2;
int pivotYType = Animation.ABSOLUTE;
float pivotYValue = 15;
Animation animation = new RotateAnimation(
fromDegrees, toDegrees,
pivotXType, pivotXValue,
pivotYType, pivotYValue
);
//設定動畫持續時間
animation.setDuration(DURATION_ANIM_TWO);
//animation.setFillAfter(true);
//animation.setRepeatCount(10);
//通過View的startAnimation方法將動畫立即應用到View上
iv.startAnimation(animation);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//startRotationAnimTwo(iv, toDegrees, 360);
hasTwoFinishCount++;
if(DOT_COUNT == hasTwoFinishCount){
//迴圈
animaLoopHandler.sendEmptyMessage(ANIMA_LOOP);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
4.4 最後,記得在銷燬階段清空迴圈handler
@Override
protected void onDestroy() {
super.onDestroy();
//登出handler
animaLoopHandler.removeCallbacksAndMessages(null);
}
就是這麼簡單,哈哈
相關推薦
Android進度條/等待載入——旋轉小圓點效果
進度條/等待載入——旋轉小圓點效果 1 效果圖 靜態圖片看不出效果,隨後更新文章,附上github地址。 2、思想 12個小圓點疊放(i=0,1,...11) 動畫一:依次從0度旋轉到30*i度 動畫二:依次從30*i度旋轉到360度 因為不
Android進度條、自動提示框、下拉框動態資料載入
1.進度條實現 佈局檔案: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
Android與js互動,帶進度條的載入H5頁面
private void initWebView() { WebSettings settings = wvResumeDetail.getSettings(); //支援JavaScript指令碼語言 settings
Android SeekBar 進度條 沙漏 載入條
<SeekBar android:id="@+id/seek" android:layout_width="300px" android:layout_height="wrap_content"
ProgressViews-Android基於Canvas重繪處理的進度條,載入條
ProgressViews Android 基於Canvas重繪處理的進度條,載入條 https://github.com/ccM
如何建立一個*毫無用處*的進度條顯示載入進度- 皮這一下很開心
看了下風雲小Q的空間分享, 覺得很有意思 皮這一下很開心 真開心 #include<iostream> #include<cstdlib> #include<windows.h> using namespace std; /*一個毫無用處的程式*/
求助Android進度條在音樂播放器中的使用方法
MainAvctivity.java ` package com.example.shinelon.myapplication; import android.app.Activity; import android.content.ComponentName; import and
iOS 8 WkWebView 網頁的配置和前進,後退,js 互動和進度條的載入
// Created by 周雙建 on 15/12/21. // Copyright © 2015年 周雙建. All rights reserved. // #import "ViewController.h" //要匯入其框架 #import <WebKit/WKWebView
android自定義圓形進度條,實現動態畫圓效果
自定義圓形進度條效果圖如下:應用場景如動態顯示分數等。 view的自定義屬性如下attr.xml <?xml version="1.0" encoding="UTF-8"?> <resources> <declare-style
【Android進度條】三種方式實現自定義圓形進度條ProgressBar
總結了3種方法: 1.多張圖片切換 2.自定義顏色 3.旋轉自定義圖片 其它: Android自定義控制元件NumberCircleProgressBar(圓形進度條)的實現:點選開啟連結 橫線帶數字進度條:點選開啟連結
自定義Android進度條ProgressBar顏色的漸變設定
一、在drawable資料夾中新建my_progressbar.xml檔案 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.c
WebView 載入資料時顯示進度條,載入完後再把進度條取消並顯示內容
轉載地址:http://blog.sina.com.cn/s/blog_7a66361301011a46.html webview 載入資料時顯示進度條有兩種. 第一種方法 這個是載入資料時顯示進度條 super.onCreate(savedInstanceState);
iOS 進度條、載入、安裝動畫 —— HERO部落格
iOS 進度條、載入、安裝動畫簡單實現。 首先看一下效果圖: 下面貼上程式碼: 控制器ViewController: #import <UIKit/UIKit.h> @interface ViewController : UIViewController
ProgressDialog+Thread實現進度條非同步載入
實現流程 1、彈出進度條對話方塊 2、 執行執行緒,線上程中實現資料非同步載入 3、線上程資料載入完成後,呼叫Handler並集合資料,更新介面 實現功能程式碼例子://新增非同步操作
Android 自定義進度條ColorfulProgressBar,原理簡單、效果很棒
Android-ColorfulProgressBar 簡介: 這是一個自定義的Progressbar,效果看著還行吧,滾動的雙色斜條作為進度條,有點類似Bootstrap風格。原生Progress的基本操作都有,自行觀摩我的原始碼吧,挺簡單的。
Android 仿微信重新整理旋轉小風車 自定義view
不太會錄影,沒辦法,智慧截圖了 不多說了,直接上程式碼 package com.shipneg.demoysp.demo; import android.content.Context; import android.graphics.Bitmap;
Android進度條樣式
源地址:http://blog.csdn.net/tianyitianyi1/article/details/7563027?locationNum=2&fps=1 android 進度條的樣式 例1:(預設樣式(中等圓形)) Xml程式碼 <Pr
unity3d實現Loading進度條非同步載入場景
一款大型遊戲,開始遊戲載入場景的時候一般都帶有進度條載入模式,這將與進度條載入速度同步來載入場景。如果沒有了進度條,我們開始遊戲或者進入下一個場景的時候,因為電腦要載入大場景需要一定
Bootstrap基礎7(標簽、徽章、大屏展播、頁面標題、縮略圖、進度條、面板、折疊效果)
footer ctype success htm header bit src int get <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-
Android學習---使用非同步內部類實現進度條載入效果
Android學習—使用非同步內部類 為什麼要用AsyncTask? 答:我們可以用上述兩種方法來完成我們的非同步操作,加入要我們寫的非同步操作比較多,或者較為繁瑣, 難道我們new Thread()然後用上述方法通知UI更新麼?程式設計師都是比較喜歡偷懶的,既然官方給我 們