-
Notifications
You must be signed in to change notification settings - Fork 3
Setup for Version 2.x.x
Initialize Virtusize object in your Application class's onCreate method using the VirtusizeBuilder to set up the configuration. Possible configuration methods are shown as the following table:
VirtusizeBuilder
| Method | Argument Type | Example | Description | Requirement |
|---|---|---|---|---|
| setApiKey | String | setApiKey("api_key") | A unique API key is provided to each Virtusize client. | Yes |
| setUserId | String | setUserId("123") | It's passed from the client if the user is logged into the client's app. | Yes, if the Order API is used. |
| setEnv | VirtusizeEnvironment | setEnv(VirtusizeEnvironment.STAGING) | The environment is the region you are running the integration from, either VirtusizeEnvironment.STAGING, VirtusizeEnvironment.GLOBAL, VirtusizeEnvironment.JAPAN or VirtusizeEnvironment.KOREA. |
No, by default, the Virtusize environment will be set to VirtusizeEnvironment.GLOBAL. |
| setLanguage | VirtusizeLanguage | setLanguage(VirtusizeLanguage.EN) | It sets the initial language that the integration will load in. The possible values are VirtusizeLanguage.EN, VirtusizeLanguage.JP and VirtusizeLanguage.KR
|
No, by default, the initial language will be set based on the Virtusize environment. |
| setShowSGI | Boolean | setShowSGI(true) | It determines whether the integration will fetch SGI and use SGI flow for users to add user generated items to their wardrobe. | No, by default, ShowSGI is set to false |
| setAllowedLanguages | A list of VirtusizeLanguage
|
In Kotlin, setAllowedLanguages(mutableListOf(VirtusizeLanguage.EN, VirtusizeLanguage.JP)) In Java, setAllowedLanguages(Arrays.asList(VirtusizeLanguage.EN, VirtusizeLanguage.JP)) |
The languages that the user can switch to using the Language Selector | No, by default, the integration allows all the possible languages to be displayed, including English, Japanese and Korean. |
| setDetailsPanelCards | A list of VirtusizeInfoCategory
|
In Kotlin, setDetailsPanelCards(mutableListOf(VirtusizeInfoCategory.BRAND_SIZING, VirtusizeInfoCategory.GENERAL_FIT)) In Java, setDetailsPanelCards(Arrays.asList(VirtusizeInfoCategory.BRAND_SIZING, VirtusizeInfoCategory.GENERAL_FIT)) |
The info categories that will be display in the Product Details tab. Possible categories are: VirtusizeInfoCategory.MODEL_INFO, VirtusizeInfoCategory.GENERAL_FIT, VirtusizeInfoCategory.BRAND_SIZING and VirtusizeInfoCategory.MATERIAL
|
No, by default, the integration displays all the possible info categories in the Product Details tab. |
-
Kotlin
lateinit var Virtusize: Virtusize override fun onCreate() { super.onCreate() Virtusize = VirtusizeBuilder().init(this) // Only the API key is required .setApiKey("15cc36e1d7dad62b8e11722ce1a245cb6c5e6692") // For using the Order API, a user ID is required .setUserId("123") // By default, the Virtusize environment will be set to GLOBAL .setEnv(VirtusizeEnvironment.STAGING) // By default, the initial language will be set based on the Virtusize environment .setLanguage(VirtusizeLanguage.EN) // By default, ShowSGI is false .setShowSGI(true) // By default, Virtusize allows all the possible languages .setAllowedLanguages(mutableListOf(VirtusizeLanguage.EN, VirtusizeLanguage.JP)) // By default, Virtusize displays all the possible info categories in the Product Details tab .setDetailsPanelCards(mutableListOf(VirtusizeInfoCategory.BRAND_SIZING, VirtusizeInfoCategory.GENERAL_FIT)) .build() }
-
Java
Virtusize Virtusize; @Override public void onCreate() { super.onCreate(); // Initialize Virtusize instance for your application Virtusize = new VirtusizeBuilder().init(this) // Only the API key is required .setApiKey("15cc36e1d7dad62b8e11722ce1a245cb6c5e6692") // For using the Order API, a user ID is required .setUserId("123") // By default, the Virtusize environment will be set to GLOBAL .setEnv(VirtusizeEnvironment.STAGING) // By default, the initial language will be set based on the Virtusize environment .setLanguage(VirtusizeLanguage.EN) // By default, ShowSGI is false .setShowSGI(true) // By default, Virtusize allows all the possible languages .setAllowedLanguages(Arrays.asList(VirtusizeLanguage.EN, VirtusizeLanguage.JP)) // By default, Virtusize displays all the possible info categories in the Product Details tab .setDetailsPanelCards(Arrays.asList(VirtusizeInfoCategory.BRAND_SIZING, VirtusizeInfoCategory.GENERAL_FIT)) .build();
Add Virtusize button in your activity's XML layout file. You can use the default button style we provide by setting up app:virtusizeButtonStyle="default_style" in XML or programmatically.
-
XML
<com.virtusize.libsource.ui.VirtusizeButton android:id="@+id/exampleVirtusizeButton" app:virtusizeButtonStyle="default_style" android:layout_width="wrap_content" android:layout_height="wrap_content" />
-
Kotlin
exampleVirtusizeButton.buttonStyle = VirtusizeButtonStyle.DEFAULT_STYLE
-
Java
virtusizeButton.setButtonStyle(VirtusizeButtonStyle.DEFAULT_STYLE);
You can also use any other button styles and/or define attributes like text, height, width, etc on the VirtusizeButton.
<com.virtusize.libsource.ui.VirtusizeButton
android:id="@+id/exampleVirtusizeButton"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/virtusize_button_text" />Inside your activity, setup the Virtusize 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 .setupVirtusizeButton( virtusizeButton = exampleVirtusizeButton, virtusizeProduct = VirtusizeProduct(externalId = "694", imageUrl = "http://simage-kr.uniqlo.com/goods/31/12/11/71/414571_COL_COL02_570.jpg"))
-
Java
VirtusizeButton virtusizeButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); virtusizeButton = findViewById(R.id.exampleVirtusizeButton); App app = (App) getApplication(); app.Virtusize.setupVirtusizeButton(virtusizeButton, new VirtusizeProduct("694", "https://www.publicdomainpictures.net/pictures/120000/velka/dress-1950-vintage-style.jpg")); }
-
Kotlin
exampleVirtusizeButton.dismissVirtusizeView()
-
Java
exampleVirtusizeButton.dismissVirtusizeView();
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(virtusizeButton: VirtusizeButton) { Log.i(TAG, "Close Virtusize View") virtusizeButton.dismissVirtusizeView() } override fun onEvent(virtusizeButton: VirtusizeButton?, event: VirtusizeEvent) { Log.i(TAG, event.name) } override fun onError(virtusizeButton: VirtusizeButton?, errorType: VirtusizeError) { Log.e(TAG, errorType.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(@NotNull VirtusizeButton virtusizeButton) { Log.i(TAG, "Close Virtusize View"); } @Override public void onEvent(@org.jetbrains.annotations.Nullable VirtusizeButton virtusizeButton, @NotNull VirtusizeEvent event) { Log.i(TAG, event.getName()); } @Override public void onError(VirtusizeButton virtusizeButton, @NonNull VirtusizeError error) { Log.e(TAG, error.getMessage()); } }); }
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(); }