Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在钛设备中创建圆形进度条?_Javascript_Titanium Mobile - Fatal编程技术网

Javascript 如何在钛设备中创建圆形进度条?

Javascript 如何在钛设备中创建圆形进度条?,javascript,titanium-mobile,Javascript,Titanium Mobile,我正在使用钛Appcelerator,我需要帮助在应用程序中创建圆形进度条。谁能给我解释一下循环进度条是如何工作的,以及如何以循环的方式在循环中填充进度?这根本不是一个进度条,它是一个“活动指示器” 它不像进度条那样显示真正的进度。使用进度条,可以设置进度值(例如,0-100%)。这只会让用户知道他们需要等待 要创建活动指示器,请参见此处: 快速示例: var activityView = Ti.UI.createView({visible: false}); var activityIndic

我正在使用钛Appcelerator,我需要帮助在应用程序中创建圆形进度条。谁能给我解释一下循环进度条是如何工作的,以及如何以循环的方式在循环中填充进度?

这根本不是一个进度条,它是一个“活动指示器”

它不像进度条那样显示真正的进度。使用进度条,可以设置进度值(例如,0-100%)。这只会让用户知道他们需要等待

要创建活动指示器,请参见此处:

快速示例:

var activityView = Ti.UI.createView({visible: false});
var activityIndicator = Ti.UI.createActivityIndicator({
  message: 'Loading...',
  height:'auto',
  width:'auto'
});
activityView.add(activityIndicator);
activityView.show();

这个例子可以工作,但它没有样式。我会让你决定你想要它看起来怎么样。如果您想让它看起来像您发布的图像,请查看view属性上的backgroundColor、borderRadius和透明度。

请立即使用此Alloy小部件:


原始答案

我知道这有点晚了,但我在工作了大约一天之后才发现这一点

  • 我还没有在android上测试过
  • 这不是动画,因为我不需要它为我的需要。要使其成为动画,请查看函数layer3.transform=Ti.UI.create2DMatrix().rotate(angle)中倒数第二行;您应该能够设置旋转角度的动画
var win=Ti.UI.createWindow({ 宽度:'100%', 高度:'100%' }); win.open()

功能循环压杆(选项)
{
var opts=期权;
如果(opts.percent==null | | opts.percent>1 | | opts.percent<0)opts.percent=1;
如果(opts.size==null)opts.size=46;
如果(opts.margin==null)opts.margin=4;
如果(opts.backgroundColor==null)opts.backgroundColor='#fff';
如果(opts.progressColor==null)opts.progressColor='#4ba818';
如果(opts.topper==null)opts.topper={};
如果(opts.topper.color==null)opts.topper.color='#fff';
如果(opts.topper.size==null)opts.topper.size=36;
如果(opts.font==null)opts.font={};
如果(opts.font.visible==null)opts.font.visible=true;
如果(opts.font.size==null)opts.font.size=12;
如果(opts.font.color==null)opts.font.color='#900';
如果(opts.font.shadowColor==null)opts.font.shadowColor='aaa';
如果(opts.font.shadowRadius==null)opts.font.shadowRadius=1;
如果(opts.font.shadowOffset==null)opts.font.shadowOffset={};
如果(opts.font.shadowOffset.x==null)opts.font.shadowOffset.x=0;
如果(opts.font.shadowOffset.y==null)opts.font.shadowOffset.y=1;
var mainHolder=Ti.UI.createView({
左:选项。左,
右:选项。对,
top:options.top,
底部:options.bottom,
宽度:opts.size+opts.margin,
高度:选择大小+选择边距,
边界半径:(选择大小+选择边距)/2,
backgroundColor:opts.backgroundColor
});
var holder=Ti.UI.createView({
宽度:opts.size,
高度:选择大小,
边界半径:选择大小/2
});
var layer1=Ti.UI.createView({
宽度:opts.size,
高度:选择大小,
边界半径:选择大小/2,
背景颜色:opts.progressColor
});
var layer2=Ti.UI.createView({
左:0,,
宽度:opts.size/2,
高度:选择大小,
主持人:{
x:1,
y:0.5
},
backgroundColor:opts.backgroundColor
});
var layer3=Ti.UI.createView({
右:0,,
宽度:opts.size/2,
高度:选择大小,
主持人:{
x:0,,
y:0.5
},
backgroundColor:opts.backgroundColor
});
var layer4=Ti.UI.createView({
右:0,,
宽度:opts.size/2,
高度:选择大小,
主持人:{
x:0,,
y:0.5
},
背景颜色:opts.progressColor
});
var-topper=Ti.UI.createView({
宽度:opts.topper.size,
高度:opts.topper.size,
边界半径:opts.topper.size/2,
背景颜色:opts.topper.color
});
var percentText=Ti.UI.createLabel({
可见:opts.font.visible,
宽度:Ti.UI.SIZE,
高度:Ti.UI.SIZE,
颜色:opts.font.color,
字体:{
fontSize:opts.font.size
},
shadowColor:opts.font.shadowColor,
阴影半径:opts.font.shadowRadius,
阴影偏移:{
x:opts.font.shadowOffset.x,
y:opts.font.shadowOffset.y
},
TEXT对齐:Ti.UI.TEXT\u对齐\u中心,
文本:(opts.percent*100)+'%
});
主支架。添加(支架);
添加(百分比文本);
增加(第1层);
添加(第2层);
支架。添加(第3层);
支架。添加(第4层);
支架。添加(顶部);
var百分比=选择百分比;
var角度=360*百分比;
layer2.visible=(角度>180)?假:真;
layer4.visible=(角度>180)?真:假;
layer3.transform=Ti.UI.create2DMatrix().旋转(角度);
返回主支架;
}
/*循环进度条选项
百分比:介于0和1之间的值
大小:圆形进度条的大小
边距:圆形进度条的边距
背景色:圆形区域的背景色
progressColor:进度条的背景色
--
topper.color:中心圆颜色
topper.size:中心圆的大小
---
font.visible:布尔值,用于显示字体或不显示字体
font.color:字体颜色
font.size:字体大小
font.shadowColor:字体阴影颜色
font.shadowRadius:字体阴影半径
font.shadowOffset.x:阴影阴影偏移量的x值
font.shadowOffset.y:阴影偏移量的y值
*/
var circleProgress1=circularProgressBar({
前50名,
百分之零点三五,,
尺码:46,
差额:4,
背景颜色:“#fff”,
progressColor:“#4ba818”,
顶部:{
颜色:“#fff”,
尺码:36
},
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);