Giter Club home page Giter Club logo

rapidfloatingactionbutton's Introduction

RapidFloatingActionButton

Maven Central API

Quick solutions for Floating Action Button,RapidFloatingActionButton(RFAB)

How to use:

Dependencies:
AndroidBucket:The base library
AndroidInject:The Inject library
ShadowViewHelper:Shadow layout, shadow view for android
NineOldAndroids:The Property Animation library for pre android 3.0

Newest version: Maven Central

Gradle:

compile 'com.github.wangjiegulu:rfab:x.x.x'

Maven:

<dependency>
    <groupId>com.github.wangjiegulu</groupId>
    <artifactId>rfab</artifactId>
    <version>x.x.x</version>
</dependency>

activity_main.xml:

<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout
      xmlns:rfal="http://schemas.android.com/apk/res-auto"
      android:id="@+id/activity_main_rfal"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      rfal:rfal_frame_color="#ffffff"
      rfal:rfal_frame_alpha="0.7"
      >
  <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
          xmlns:rfab="http://schemas.android.com/apk/res-auto"
          android:id="@+id/activity_main_rfab"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:layout_alignParentBottom="true"
          android:layout_marginRight="15dp"
          android:layout_marginBottom="15dp"
          android:padding="8dp"
          rfab:rfab_size="normal"
          rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"
          rfab:rfab_color_normal="#37474f"
          rfab:rfab_color_pressed="#263238"
          rfab:rfab_shadow_radius="7dp"
          rfab:rfab_shadow_color="#999999"
          rfab:rfab_shadow_dx="0dp"
          rfab:rfab_shadow_dy="5dp"
          />
</com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>

Add<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout> at outermost layout of RFAB(<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton>)

Properties

RapidFloatingActionLayout:

  • rfal_frame_color: Frame color when expand RFAB,default is white color
  • rfal_frame_alpha: Frame color alpha(0 ~ 1) when expand RFAB,default is 0.7

RapidFloatingActionButton:

  • rfab_size: The size of RFAB,only support two size(Material Design):
  • normal: diameter 56dp
  • mini: diameter 40dp
  • rfab_drawable: The drawable of RFAB,default drawable is "+"
  • rfab_color_normal: Normal status color of RFAB。default is white
  • rfab_color_pressed: Pressed status color of RFAB。default is "#dddddd"
  • rfab_shadow_radius: Shadow radius of RFAB。default is 0(no shadow)
  • rfab_shadow_color: Shadow color of RFAB。default is transparent. it will be invalid if the rfab_shadow_radius is 0
  • rfab_shadow_dx: The shadow offset of RFAB(x-axis)。default is 0
  • rfab_shadow_dy: The shadow offset of RFAB(y-axis)。default is 0

MainActivity:

@AILayout(R.layout.activity_main)
public class MainActivity extends AIActionBarActivity implements RapidFloatingActionContentLabelList.OnRapidFloatingActionContentLabelListListener {

    @AIView(R.id.activity_main_rfal)
    private RapidFloatingActionLayout rfaLayout;
    @AIView(R.id.activity_main_rfab)
    private RapidFloatingActionButton rfaBtn;
    private RapidFloatingActionHelper rfabHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        RapidFloatingActionContentLabelList rfaContent = new RapidFloatingActionContentLabelList(context);
        rfaContent.setOnRapidFloatingActionContentLabelListListener(this);
        List<RFACLabelItem> items = new ArrayList<>();
        items.add(new RFACLabelItem<Integer>()
                        .setLabel("Github: wangjiegulu")
                        .setResId(R.mipmap.ico_test_d)
                        .setIconNormalColor(0xffd84315)
                        .setIconPressedColor(0xffbf360c)
                        .setWrapper(0)
        );
        items.add(new RFACLabelItem<Integer>()
                        .setLabel("[email protected]")
                        .setResId(R.mipmap.ico_test_c)
                        .setIconNormalColor(0xff4e342e)
                        .setIconPressedColor(0xff3e2723)
                        .setLabelColor(Color.WHITE)
                        .setLabelSizeSp(14)
                        .setLabelBackgroundDrawable(ABShape.generateCornerShapeDrawable(0xaa000000, ABTextUtil.dip2px(context, 4)))
                        .setWrapper(1)
        );
        items.add(new RFACLabelItem<Integer>()
                        .setLabel("WangJie")
                        .setResId(R.mipmap.ico_test_b)
                        .setIconNormalColor(0xff056f00)
                        .setIconPressedColor(0xff0d5302)
                        .setLabelColor(0xff056f00)
                        .setWrapper(2)
        );
        items.add(new RFACLabelItem<Integer>()
                        .setLabel("Compose")
                        .setResId(R.mipmap.ico_test_a)
                        .setIconNormalColor(0xff283593)
                        .setIconPressedColor(0xff1a237e)
                        .setLabelColor(0xff283593)
                        .setWrapper(3)
        );
        rfaContent
                .setItems(items)
                .setIconShadowRadius(ABTextUtil.dip2px(context, 5))
                .setIconShadowColor(0xff888888)
                .setIconShadowDy(ABTextUtil.dip2px(context, 5))
        ;
        rfabHelper = new RapidFloatingActionHelper(
                context,
                rfaLayout,
                rfaBtn,
                rfaContent
        ).build();
    }

    @Override
    public void onRFACItemLabelClick(int position, RFACLabelItem item) {
        Toast.makeText(getContext(), "clicked label: " + position, Toast.LENGTH_SHORT).show();
        rfabHelper.toggleContent();
    }

    @Override
    public void onRFACItemIconClick(int position, RFACLabelItem item) {
        Toast.makeText(getContext(), "clicked icon: " + position, Toast.LENGTH_SHORT).show();
        rfabHelper.toggleContent();
    }
}

RFAB also needs an implementation of RapidFloatingActionContent to fill and assign content of RFAB when it expands.

Here is a quick solution of RapidFloatingActionContent:RapidFloatingActionContentLabelList.You can add some items(RFACLabelItem,of course not recommended to add too many items),and config color, drawable, shadow, background image, text size, color of label and animation of each item.

To preview the demo: The top picture effects or Inbox of Google.

At last,you need combine them by RapidFloatingActionButtonHelper.

About expand style:

If you don't like RapidFloatingActionContentLabelList,you can expand your content style. Extend com.wangjie.rapidfloatingactionbutton.RapidFloatingActionContent, initialize the content layout and style,and invoke setRootView(xxx); method. If you want to add more animations,override those methods:

public void onExpandAnimator(AnimatorSet animatorSet);
public void onCollapseAnimator(AnimatorSet animatorSet);

add your animations to the animatorSet.

License

Copyright 2015 Wang Jie

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

rapidfloatingactionbutton's People

Contributors

computingfreak avatar lolobosse avatar wangjiegulu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rapidfloatingactionbutton's Issues

Getting error could Not HEAD

Hi, I'm getting this error after updating to version 2.0.0.

org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not HEAD 'https://jitpack.io/com/github/wangjiegulu/rfab/2.0.0/rfab-2.0.0.pom'. Received status code 401 from server: Unauthorized
at org.gradle.internal.resource.transport.http.HttpClientHelper.processResponse(HttpClientHelper.java:158)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHead(HttpClientHelper.java:76)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.getMetaData(HttpResourceAccessor.java:65)
at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.getMetaData(DefaultExternalResourceConnector.java:63)
at org.gradle.internal.resource.transfer.AccessorBackedExternalResource.getMetaData(AccessorBackedExternalResource.java:201)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$1.call(BuildOperationFiringExternalResourceDecorator.java:61)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$1.call(BuildOperationFiringExternalResourceDecorator.java:58)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:350)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:340)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:120)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator.getMetaData(BuildOperationFiringExternalResourceDecorator.java:58)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:102)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:82)
at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey(ProducerGuard.java:97)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource(DefaultCacheAwareExternalResourceAccessor.java:82)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadByCoords(DefaultExternalResourceArtifactResolver.java:138)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource(DefaultExternalResourceArtifactResolver.java:98)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.resolveArtifact(DefaultExternalResourceArtifactResolver.java:65)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.parseMetaDataFromArtifact(AbstractRepositoryMetadataSource.java:69)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.create(AbstractRepositoryMetadataSource.java:59)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveStaticDependency(ExternalResourceResolver.java:199)
at org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver.doResolveComponentMetaData(MavenResolver.java:117)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver$RemoteRepositoryAccess.resolveComponentMetaData(ExternalResourceResolver.java:400)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess.resolveComponentMetaData(CachingModuleComponentRepository.java:381)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData(ErrorHandlingModuleComponentRepository.java:136)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.process(ComponentMetaDataResolveState.java:66)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.resolve(ComponentMetaDataResolveState.java:58)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:138)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:119)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:92)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolve(RepositoryChainComponentMetaDataResolver.java:63)
at org.gradle.api.internal.artifacts.query.DefaultArtifactResolutionQuery.buildComponentResult(DefaultArtifactResolutionQuery.java:154)
at org.gradle.api.internal.artifacts.query.DefaultArtifactResolutionQuery.createResult(DefaultArtifactResolutionQuery.java:132)
at org.gradle.api.internal.artifacts.query.DefaultArtifactResolutionQuery.execute(DefaultArtifactResolutionQuery.java:123)
at com.android.build.gradle.internal.ide.ArtifactDependencyGraph.handleSources(ArtifactDependencyGraph.java:723)
at com.android.build.gradle.internal.ide.ArtifactDependencyGraph.createDependencies(ArtifactDependencyGraph.java:642)
at com.android.build.gradle.internal.ide.ModelBuilder.getDependencies(ModelBuilder.java:588)
at com.android.build.gradle.internal.ide.ModelBuilder.createUnitTestsJavaArtifact(ModelBuilder.java:503)
at com.android.build.gradle.internal.ide.ModelBuilder.createVariant(ModelBuilder.java:427)
at com.android.build.gradle.internal.ide.ModelBuilder.buildAndroidProject(ModelBuilder.java:339)
at com.android.build.gradle.internal.ide.ModelBuilder.buildAll(ModelBuilder.java:194)
at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:79)
at org.gradle.tooling.internal.provider.runner.DefaultBuildController.getModel(DefaultBuildController.java:61)
at org.gradle.tooling.internal.consumer.connection.BuildControllerAdapter.getModel(BuildControllerAdapter.java:58)
at org.gradle.tooling.internal.consumer.connection.AbstractBuildController.findModel(AbstractBuildController.java:39)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.addExtraProject(ProjectImportAction.java:123)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:78)
at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:40)
at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:53)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.buildResult(ClientProvidedBuildActionRunner.java:79)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.access$000(ClientProvidedBuildActionRunner.java:37)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner$1.buildFinished(ClientProvidedBuildActionRunner.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:370)
at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:352)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:340)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:327)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy17.buildFinished(Unknown Source)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:154)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:122)
at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:88)
at org.gradle.internal.invocation.GradleBuildController$2.call(GradleBuildController.java:84)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:84)
at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:64)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)

Getting error could Not HEAD - https://jitpack.io/com/github/wangjiegulu/rfab/2.0.0/rfab-2.0.0.pom
can anyone help?

the main fab icon doesn' appear

I have made a main fsb icon that contains 2 nested fab icons that should be opened on press on the main fab icon but J found that the main fab icon doesn't appear and only the 2 nested fabs appear above each other.

this is my code :

<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout
    xmlns:rfal="http://schemas.android.com/apk/res-auto"
    android:id="@+id/multiple_actions"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintBottom_toTopOf="@id/navigation"
    rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"
    rfal:rfal_frame_color="#ffffff"
    rfal:rfal_frame_alpha="0.7">

    <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
        xmlns:rfab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fabChallenge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        rfab:rfab_size="normal"
        rfab:rfab_drawable="@drawable/elect"
        rfab:rfab_color_normal="#37474f"
        rfab:rfab_color_pressed="#263238" />
    <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
        xmlns:rfab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fabAddPost"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        rfab:rfab_size="normal"
        rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"
        rfab:rfab_color_normal="#37474f"
        rfab:rfab_color_pressed="#263238"
        rfab:rfab_shadow_radius="7dp"
        rfab:rfab_shadow_color="#999999"
        /> 
</com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>

RTL

Not suitable for layouts with RTL

Changing poistion of fab button

I want fab button at the top right end and want the list in card view to drop down but its not opening properly ,How can i open it in downward direction properly

Custom drawable as button

Hi, how can i use my own drawable as a button?
I mean replacing the circle background with my own background.

thanks!

NullPointer while instantiating RapidFloatingActionHelper

Okay I got that problem and I'm thinking what causes that is this:
rfaContent.setOnRapidFloatingActionContentListener(this);
In your Readme, you wrote it like above but that method doesn't even exist in your library.

     rfaContent.setOnRapidFloatingActionContentLabelListListener(this);

So I used code above(because u used it in your examples), but it gives error too. Which method is true, can you help?

Expanded items selected state

Would be possible to add a way to manage the selected state on expanded button?
For example if there is a button "add/remove to favorites", it would be nice to change the selected state.

Thanks & Regards.

Binary XML file

Hello! layout和代码都是按项目demo中copy的 提示这样的错误,

android.view.InflateException: Binary XML file line #87: Error inflating class com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton

Button is masked under the Linearlayout

Hello,

I'm using the plugin to havec more button but when I implement this the button is under the Linearlayout....

When I can di to the button appear in top ? like a z-index in css)....

RapidFloatingActionHelper.build java.lang.NullPointerException

20160414181132
20160414181307

How to solve this problem? I can successfully run the demo example you give,but when i create a new project,it cause this problem.

I found if I download your file 'library' and use it in my project like 'compile project(':library')' there is no such problem,however this problem exits when I use your library via gradle like this 'compile 'com.github.wangjiegulu:RapidFloatingActionButton:1.0.3' .Can you tell me why??

Incorrect compatibility forms with the official library

Hello .

After adding this library to the project. The Offical FloatingActionButton library will not work due to incompatibility and will render the error.

Please fix this bug. Thank .

Error Offical android.support.design.widget.FloatingActionButton :

java.lang.NoSuchFieldError: FloatingActionButton_backgroundTint
at android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:164)
at android.support.design.widget.FloatingActionButton.(FloatingActionButton.java:153)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:475)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:262)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:220)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:186)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:334)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:345)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:245)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:861)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:324)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:368)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:567)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:549)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:863)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:549)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$1(RenderTask.java:680)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Hello Ask a question

Hello, I want to handle item to the top out into to the left out, excuse me, can you help me?

弹出的tabList不支持滑动

弹出的tabList不支持滑动,如果tab数量在五六个以上的话,就会看不到,10801920分辨率上能显示完,7681280就显示不完,希望能给tab列表支持滑动.

Refresh RapidFloatingActionContentLabelList

I'm trying to refresh the ist of items displayed after 1 is clicked.
I can use getItems() from the rfaContent directly but not from the methods of the listener nRFACItemLabelClick and onRFACItemIconClick, is there any way to achieve this?

problem on BuildConfig.DEBUG

hello can you help me after i add this library my android studio got problem on android.support.compat.BuildConfig i can't using BuildConfig.DEBUG can you help me the solution? becoz i want using this library thank you and then how to create menu item size not have border like using full image
thank you

Can't change view from onRFACItemIconClick

@wangjiegulu

@Override
    public void onRFACItemIconClick(int position, RFACLabelItem item) {
        item.setLabel("test1");
        rfaHelper.toggleContent();
    }

Above code isn't updating view. But, calling rfaHelper.build(); after toogleContent() is updating view, but it has many bugs. Like it's disabling recyclerview's scrolling, it disables its touch events. Also rfaLayout's alpha is decreasing.

Is there any solution for that?

Implement a label for the big button

Hi there,

I'm using your lib and I fond it pretty cool 👍 . However, I'd like to know if there is a simple way to place a label to the big button which will only be visible when the view is expanded.

I tried to add a View to your RFLayout but because you override it's measure in the onMeasure() it doesn't fit at all. 😢

Do you have an idea to do it?

Best,

the main fab icon doesn't appear

I have made a fab icon that contains two nested fab icons but I don't know why the main fab icon which should open the other 2 fab icons doesn't appear and only the 2 nested fab icons appears above each others .

this is my code :
`
<com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout
xmlns:rfal="http://schemas.android.com/apk/res-auto"
android:id="@+id/multiple_actions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/navigation"
rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"
rfal:rfal_frame_color="#ffffff"
rfal:rfal_frame_alpha="0.7">

    <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
        xmlns:rfab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fabChallenge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        rfab:rfab_size="normal"
        rfab:rfab_drawable="@drawable/elect"
        rfab:rfab_color_normal="#37474f"
        rfab:rfab_color_pressed="#263238" />
    <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
        xmlns:rfab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/fabAddPost"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        rfab:rfab_size="normal"
        rfab:rfab_drawable="@drawable/rfab__drawable_rfab_default"
        rfab:rfab_color_normal="#37474f"
        rfab:rfab_color_pressed="#263238"
        rfab:rfab_shadow_radius="7dp"
        rfab:rfab_shadow_color="#999999"
        /> 
</com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>`

Binary error.

After adding line "compile..." in build.gradle and adding example code to my xml, I get this error...

Binary XML file line #24: Error inflating class com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton

Thanks in advance.

Is it possible to replicate the exact behavior of the FAB from "Inbox by Gmail" app?

Is it currently possible to replicate the behavior of the "Inbox by Gmail" FAB with this library?

I am talking about this:

image

In particular I am interested in:

  1. (collapsed) Having an icon A and no label on the FAB
  2. (clicked collapsed) Animate the expansion and the icon swap form A to B
  3. (expanded) The background is faded
  4. (expanded) The labels have a white background and grey text
  5. (expanded) The big FAB button, red in the screenshot, has its own label
  6. (clicked expanded) It starts a custom action and is toggling the FAB collapse

Change direction, position of list?

What if we want the list to expand down? Also the design support library Floating Action Button supports anchoring like this

app:layout_anchor="@+id/RecipeViewAppBarLayout"
app:layout_anchorGravity="bottom|right|end"

How can we implement this with RFAB?

Activity becoming unresponsive

When opening and closing the FabLayout menu multiple times, my Activity becomes unresponsive except the Fab button. not sure if it's a bug or if I'm just doing something wrong

Binary XML file line #73: Error inflating class com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton

Hello!

I am testing my app on AVD Android 4.4 and get this error:

Binary XML file line #73: Error inflating class com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton

My Gradle:

android {


    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.developerfromjokela.homework"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 23
        versionName "1.6"
        vectorDrawables.useSupportLibrary = true
        buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L"
        multiDexEnabled true
        multiDexKeepFile file('multidex-config.txt')
    }

    buildTypes {
        release {
            multiDexKeepFile file('multidex-config.txt')
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }


    lintOptions {
        abortOnError false
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-annotations:28.0.0'
    //noinspection DuplicatePlatformClasses
    implementation 'org.apache.httpcomponents:httpclient:4.5.6'
    implementation 'com.jakewharton:butterknife:9.0.0-rc2'
    implementation 'com.github.wangjiegulu:rfab:2.0.0'
    implementation 'com.github.wangjiegulu:AndroidBucket:1.0.4'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'de.hdodenhof:circleimageview:3.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc2'
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.5.+'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation "ch.acra:acra-mail:$acraVersion"
    implementation "ch.acra:acra-dialog:$acraVersion"
    implementation 'com.android.support:customtabs:28.0.0'
    implementation("com.squareup.moshi:moshi:1.8.0")
    implementation('com.googlecode.json-simple:json-simple:1.1.1') {
        exclude group: 'junit', module: 'junit'
    }
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'de.hdodenhof:circleimageview:3.0.0'
    implementation 'com.github.clans:fab:1.6.4'
    implementation "cz.ackee.useragent:useragent:1.0.4"
    implementation 'com.google.firebase:firebase-core:16.0.6'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation "com.android.support:support-compat:28.0.0"

    implementation 'com.android.support:recyclerview-v7:28.0.0'


    implementation 'commons-io:commons-io:2.6'

    implementation 'com.android.support:support-dynamic-animation:28.0.0'
// https://mvnrepository.com/artifact/com.github.ua-parser/uap-java
    implementation group: 'com.github.ua-parser', name: 'uap-java', version: '1.4.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.nineoldandroids:library:2.4.0'
    implementation 'com.github.wangjiegulu:AndroidBucket:1.0.4'



}
apply plugin: 'com.google.gms.google-services'

Layout:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swiperefresh"
    xmlns:rfab="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.developerfromjokela.homework.activities.MainActivity"
    tools:showIn="@layout/app_bar_main">
    <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout
        xmlns:rfal="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_main_rfal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        rfal:rfal_frame_color="#ffffff"
        rfal:rfal_frame_alpha="0.7"
        >

        <ExpandableListView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/expandableListView_main"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="0dp"
            android:layout_marginLeft="0dp"
            android:layout_marginTop="0dp"
            android:layout_marginEnd="0dp"
            android:layout_marginRight="0dp"
            android:layout_marginBottom="0dp"
            android:animateLayoutChanges="true"
            android:visibility="gone" />

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/error_hws"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center">

            <ImageView
                android:id="@+id/err_icon"
                android:layout_width="160dp"
                android:layout_height="160dp"
                android:layout_margin="5dp"
                android:layout_marginTop="50dp"
                android:contentDescription="@string/no_homeworks"
                app:srcCompat="@drawable/ic_empty_homeworks" />

            <TextView
                android:id="@+id/textView8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:text="@string/no_homeworks"
                android:textSize="24sp" />

        </LinearLayout>
        </android.support.constraint.ConstraintLayout>
        <com.wangjie.rapidfloatingactionbutton.RapidFloatingActionButton
            android:id="@+id/add_fab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:layout_marginBottom="20dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:padding="8dp"
            app:layout_anchor="@+id/activity_main_rfal"
            app:layout_anchorGravity="right|bottom"
            rfab:rfab_size="normal"
            rfab:rfab_drawable="@drawable/ic_add"
            rfab:rfab_color_normal="@color/colorAccent"
            android:layout_alignParentEnd="true"
            android:layout_marginEnd="20dp" />
    </com.wangjie.rapidfloatingactionbutton.RapidFloatingActionLayout>

</android.support.v4.widget.SwipeRefreshLayout>

Thanks for patience

tab隐藏也能触发列表弹出

点击float按钮,弹出tab列表,点击tab或icon后,icon消失,但仍能立马在该icon位置,触发列表弹出. (消失动画还未结束,虽然看不到tab,但能再次在刚点击的tab上触发列表弹出)

Snack Bar

When used with Snack bar it doesn't resize like regular FloatingActionButton

设置item中的圆球大小

请问一下是否支持设置圆球的大小呢,我想设置大一点,跟底下的floatActionButton 一样大可以么

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.