Giter Site home page Giter Site logo

luckpan's Introduction

幸运转盘


特性

Android 抽奖转盘基于View的实现,主要有以下几点特性:

点击按钮滚动

点击按钮滚动

随手势滚动

随手势滚动

使用

滚动到指定区域

 /**
 * 开始转动
 * @param pos 如果 pos = -1 则随机,如果指定某个值,则转到某个指定区域
 */
public void startRotate(int pos){

    int lap = (int) (Math.random()*12) + 4;

    int angle = 0;
    if(pos < 0){
        angle = (int) (Math.random() * 360);
    }else{
        int initPos  = queryPosition();
        if(pos > initPos){
            angle = (pos - initPos)*60;
            lap -= 1;
            angle = 360 - angle;
        }else if(pos < initPos){
            angle = (initPos - pos)*60;
        }else{
            //nothing to do.
        }
    }

改变转盘个数

   <com.hr.nipuream.luckpan.view.RotatePan
        android:id="@+id/rotatePan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="78dp"
        android:layout_centerHorizontal="true"
        luckpan:pannum="8"
        luckpan:names="@array/names"
        luckpan:icons="@array/icons"
        />

        将pannum改为你想要的数量,然后names和icons定义在arrays.xml文件中

        <resources>
            <string-array name="names">
                <item>action</item>
                <item>adventure</item>
                <item>combat</item>
                <item>moba</item>
                <item>other</item>
                <item>role</item>
                <item>sports</item>
                <item>words</item>
            </string-array>

            <string-array name="icons">
                <item>action</item>
                <item>adventure</item>
                <item>combat</item>
                <item>moba</item>
                <item>other</item>
                <item>role</item>
                <item>sports</item>
                <item>words</item>
            </string-array>
        </resources>

        其中arrays.xml中的数量要和转盘的数量一致

经过实践和反馈,最多使用的转盘数为6、8,所以对这两种情况进行了兼容,其他数量的转盘可能会有些小问题,详细操作见Demo和更多信息。

更多信息

Android 抽奖转盘的实现

luckpan's People

Contributors

nipuream avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.