我正在使用Titanium Appcelerator,我需要幫助在應用程序中創建循環進度條。任何人都可以向我解釋圓形進度條是如何工作的,以及循環方式如何在圓內填充進度..?如何在Titanium Appcelerator中創建圓形進度條?
回答
這不是一個進度條 - 它是一個「活動指標」。
它沒有顯示像進度條一樣的真實進度。使用進度條,您可以爲進度設置一個值(例如,0-100%)。這只是「旋轉」,讓用戶知道他們需要等待。
要創建活動的指標,在這裏看到:http://docs.appcelerator.com/titanium/2.0/#!/api/Titanium.UI.ActivityIndicator
簡單的例子:
var activityView = Ti.UI.createView({visible: false});
var activityIndicator = Ti.UI.createActivityIndicator({
message: 'Loading...',
height:'auto',
width:'auto'
});
activityView.add(activityIndicator);
activityView.show();
此示例將工作,但它不是風格。我會留給你決定你想如何看。如果您希望它看起來像您發佈的圖像,請查看backgroundColor,borderRadius和視圖屬性上的透明度。
現在請使用合金的Widget: https://github.com/manumaticx/circularprogress
原來的答案
我知道這是一個有點晚,但我經過約一天的工作想通了這一點。
- 我還沒有在Android
- 測試這不是動畫片,因爲我並不需要它滿足我的需求。要使它動畫化,請查看函數layer3.transform = Ti.UI.create2DMatrix()中的倒數第二行。您應該可以動畫旋轉角度。
變種贏= Ti.UI.createWindow({ 寬度: '100%', 高度: '100%' }); win.open();
function circularProgressBar(options)
{
var opts = options;
if (opts.percent == null || opts.percent > 1 || opts.percent < 0) opts.percent = 1;
if (opts.size == null) opts.size = 46;
if (opts.margin == null) opts.margin = 4;
if (opts.backgroundColor == null) opts.backgroundColor = '#fff';
if (opts.progressColor == null) opts.progressColor = '#4ba818';
if (opts.topper == null) opts.topper = {};
if (opts.topper.color == null) opts.topper.color = '#fff';
if (opts.topper.size == null) opts.topper.size = 36;
if (opts.font == null) opts.font = {};
if (opts.font.visible == null) opts.font.visible = true;
if (opts.font.size == null) opts.font.size = 12;
if (opts.font.color == null) opts.font.color = '#900';
if (opts.font.shadowColor == null) opts.font.shadowColor = '#aaa';
if (opts.font.shadowRadius == null) opts.font.shadowRadius = 1;
if (opts.font.shadowOffset == null) opts.font.shadowOffset = {};
if (opts.font.shadowOffset.x == null) opts.font.shadowOffset.x = 0;
if (opts.font.shadowOffset.y == null) opts.font.shadowOffset.y = 1;
var mainHolder = Ti.UI.createView({
left: options.left,
right: options.right,
top: options.top,
bottom: options.bottom,
width: opts.size + opts.margin,
height: opts.size + opts.margin,
borderRadius: (opts.size + opts.margin)/2,
backgroundColor: opts.backgroundColor
});
var holder = Ti.UI.createView({
width: opts.size,
height: opts.size,
borderRadius: opts.size/2
});
var layer1 = Ti.UI.createView({
width: opts.size,
height: opts.size,
borderRadius: opts.size/2,
backgroundColor: opts.progressColor
});
var layer2 = Ti.UI.createView({
left: 0,
width: opts.size/2,
height: opts.size,
anchorPoint: {
x: 1,
y: 0.5
},
backgroundColor: opts.backgroundColor
});
var layer3 = Ti.UI.createView({
right: 0,
width: opts.size/2,
height: opts.size,
anchorPoint: {
x: 0,
y: 0.5
},
backgroundColor: opts.backgroundColor
});
var layer4 = Ti.UI.createView({
right: 0,
width: opts.size/2,
height: opts.size,
anchorPoint: {
x: 0,
y: 0.5
},
backgroundColor: opts.progressColor
});
var topper = Ti.UI.createView({
width: opts.topper.size,
height: opts.topper.size,
borderRadius: opts.topper.size/2,
backgroundColor: opts.topper.color
});
var percentText = Ti.UI.createLabel({
visible: opts.font.visible,
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
color: opts.font.color,
font: {
fontSize:opts.font.size
},
shadowColor: opts.font.shadowColor,
shadowRadius: opts.font.shadowRadius,
shadowOffset: {
x: opts.font.shadowOffset.x,
y: opts.font.shadowOffset.y
},
textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER,
text: (opts.percent * 100) + '%'
});
mainHolder.add(holder);
topper.add(percentText);
holder.add(layer1);
holder.add(layer2);
holder.add(layer3);
holder.add(layer4);
holder.add(topper);
var percent = opts.percent;
var angle = 360 * percent;
layer2.visible = (angle > 180) ? false : true;
layer4.visible = (angle > 180) ? true : false;
layer3.transform = Ti.UI.create2DMatrix().rotate(angle);
return mainHolder;
}
/* Circular Progress Bar Options
percent: A value between 0 and 1
size: The size of the circular progress bar
margin: The margin of the circular progress bar
backgroundColor: The backgroundColor of the circular area
progressColor: The backgroundColor of the progress bar
--
topper.color: The center circle color
topper.size: The size of the center circle
---
font.visible: Boolean to display the font or not
font.color: The font color
font.size: The fontSize
font.shadowColor: The font shadow color
font.shadowRadius: The font shadow radius
font.shadowOffset.x: The x value of the shadow shadowOffset
font.shadowOffset.y: The y value of the shadow shadowOffset
*/
var circleProgress1 = circularProgressBar({
top:50,
percent:0.35,
size:46,
margin:4,
backgroundColor:'#fff',
progressColor:'#4ba818',
topper: {
color:'#fff',
size: 36
},
font: {
visible: true,
color: '#900',
size: 12,
shadowColor: '#aaa',
shadowRadius: 1,
shadowOffset: {
x: 0,
y: 1
}
}
});
win.add(circleProgress1);
所有這一切^^^創建此:
編輯:我使用的方法來創建,這是從這個線程馬爾科姆的想法:https://developer.appcelerator.com/question/154274/is-there-a-way-to-create-circular-progress-bar
感謝您的回答。我還沒有測試過它,但我會在幾天內測試它,因爲我離開辦公室。謝謝:) –
我發現這個代碼在android上工作。現在的問題是'Ti SDK 3.2.0'中的'anchorPoint',它被破壞了。將SDK切換回「3.1.3」可以正常工作。我們目前在'3.2.1'並且它仍然被打破 – Ronnie
Waht是選項嗎? –
- 1. 如何在Appcelerator Titanium中創建地圖
- 2. 圓形進度條
- 3. 剪輯路徑,如何創建一個圓形進度條?
- 4. 圓形UILabel圓形進度條
- 5. 試圖在Swift中創建圓形進度條
- 6. 在swift中圍繞圖像創建圓形進度條
- 7. 如何使用titanium appcelerator mobile創建mapview?
- 8. appcelerator titanium:創建新文件
- 9. Titanium Appcelerator:在TableView中創建TextField
- 10. 彎曲圓形進度條
- 11. WPF:圓形進度條
- 12. 圓形進度條(css)
- 13. 圓形邊框進度條
- 14. Xamarin.UWP:如何製作圓形進度條
- 15. 圓形進度條Android
- 16. 圓形進度條css
- 17. 在圓形進度條中清除progressDrawable
- 18. 創建重疊多個餅圖(圓形進度條)的問題
- 19. Unity 3D中的圓形進度條 - UnityScript
- 20. 如何在只有css的圖像上創建圓形進度條?
- 21. Windows窗體中的圓形進度條
- 22. GWT中的圓形進度條
- 23. Java中的圓形進度條顯示
- 24. 如何在titanium appcelerator中創建xls文件?
- 25. 如何在Appcelerator/titanium Android中無間隔地創建Android服務?
- 26. 如何在Appcelerator Titanium中發生事件後創建事件
- 27. 角2中的圓形進度條
- 28. 如何在jQuery.get()中創建進度條
- 29. 如何在Appcelerator Titanium的scrollView中創建固定長度的表格?
- 30. Android - 圓角方形線條進度條
以此爲參考:http://dl.dropbox.com/u/378729/MBProgressHUD/5.png –