Skip to content

Setup for Version 1.x.x

Kuei-Jung Hu edited this page Aug 14, 2020 · 2 revisions

Initialisation

Initialise Virtusize object in your Application class's onCreate method using your API key and environment. The environment is the region you are running the integration from, either VirtusizeEnvironment.STAGING, VirtusizeEnvironment.GLOBAL, VirtusizeEnvironment.JAPAN or VirtusizeEnvironment.KOREA

  • Kotlin
     lateinit var Virtusize: Virtusize
         override fun onCreate() {
             super.onCreate()
             Virtusize = VirtusizeBuilder().init(this)
                 .setApiKey(api_key)
                 .setEnv(VirtusizeEnvironment.STAGING)
                 .build()
         }
  • Java
     Virtusize Virtusize;
     @Override
     public void onCreate() {
        super.onCreate();
        Virtusize = new VirtusizeBuilder()
                .init(this)
                .setApiKey(api_key)
                .setEnv(VirtusizeEnvironment.STAGING)
                .build();

Add button to layout

Add Virtusize button in your activity's XML layout file. Style of the button can be one of the two default available styles DefaultStyleBlueJapanese, DefaultStyleBlackEnglish or use any other button styles and/or define attributes like text, height, width, etc on the FitIllustratorButton

    <com.virtusize.libsource.ui.FitIllustratorButton
        android:id="@+id/exampleFitButton"
        style="@style/DefaultStyleBlueJapanese" />

or

    <com.virtusize.libsource.ui.FitIllustratorButton
        android:id="@+id/exampleFitButton"
        style="@style/Widget.AppCompat.Button.Colored"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fit_button_text" />

Setup button

Inside your activity, setup the Fit Illustrator button using product details by passing a imageUrl of the product in order to populate the comparison view and passing in an externalId that will be used to reference that product in our API

  • Kotlin
     (application as App)
     .Virtusize
     .setupFitButton(
         fitIllustratorButton = exampleFitButton,
         virtusizeProduct = VirtusizeProduct(externalId = "694", imageUrl = "http://simage-kr.uniqlo.com/goods/31/12/11/71/414571_COL_COL02_570.jpg"))
  • Java
     FitIllustratorButton fitIllustratorButton;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         fitIllustratorButton = findViewById(R.id.exampleFitButton);
         App app = (App) getApplication();
         app.Virtusize.setupFitButton(fitIllustratorButton, new VirtusizeProduct("694", "https://www.publicdomainpictures.net/pictures/120000/velka/dress-1950-vintage-style.jpg"));
         }

Close fit illustrator widget manually

  • Kotlin

     exampleFitButton.dismissFitIllustratorView()
  • Java

     fitIllustratorButton.dismissFitIllustratorView();

Setup Virtusize Message Handler

Please do not forget to unregister message handler in activity or fragment's lifecycle method before it dies or is removed. See next section on how to.

  • Kotlin

     private val activityMessageHandler = object : VirtusizeMessageHandler {
         override fun virtusizeControllerShouldClose(fitIllustratorButton: FitIllustratorButton) {
             Log.i(TAG, "Close fit illustrator")
         }
    
         override fun onEvent(fitIllustratorButton: FitIllustratorButton?, event: VirtusizeEvents) {
             Log.i(TAG, event.getEventName())
         }
    
         override fun onError(fitIllustratorButton: FitIllustratorButton?, error: VirtusizeError) {
             Log.e(TAG, error.message)
         }
     }
     override fun onCreate(savedInstanceState: Bundle?) {
         //...
         // Register message handler to listen to events from Virtusize
         (application as App)
             .Virtusize.registerMessageHandler(activityMessageHandler)
         //...
     }
  • Java

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         //...
         App app = (App) getApplication();
         app.Virtusize.registerMessageHandler(new VirtusizeMessageHandler() {
             @Override
             public void virtusizeControllerShouldClose(@NonNull FitIllustratorButton fitIllustratorButton) {
                 Log.i(TAG, "Close fit illustrator");
             }
    
             @Override
             public void onEvent(FitIllustratorButton fitIllustratorButton, @NonNull VirtusizeEvents event) {
                 Log.i(TAG, VirtusizeEventKt.getEventName(event));
             }
    
             @Override
             public void onError(FitIllustratorButton fitIllustratorButton, @NonNull VirtusizeError error) {
                 Log.e(TAG, error.getMessage());
             }
         });
     }

Unregister Virtusize Message Handler

A message handler is tied to an activity or fragment's lifecycle but Virtusize library object is tied to application's lifecycle. So if you forget to unregister message handler then it will keep listening to events even after activity is dead or fragment has been removed. In case of activity depending on where in the lifecycle did you register message handler you may need to unregister it in your onPause or onStop method before super method is called. Follow same guidelines in case of fragment as well.

  • Kotlin

     private val activityMessageHandler: VirtusizeMessageHandler
         override fun onPause() {
             // Always un register message handler in onPause() or depending on implementation onStop().
             (application as App)
                 .Virtusize.unregisterMessageHandler(activityMessageHandler)
              super.onPause()
         }
  • Java

     @Override
         protected void onPause() {
             app.Virtusize.unregisterMessageHandler(virtusizeMessageHandler);
             super.onPause();
         }

Clone this wiki locally