Repository: Vincent-Loi/android-drawable-importer-intellij-plugin Branch: develop Commit: b8ba9ce6cc28 Files: 1046 Total size: 1.2 MB Directory structure: gitextract_ylc6730z/ ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── json_generator/ │ ├── __init__.py │ └── json_generator.py ├── settings.gradle └── src/ └── main/ ├── java/ │ └── de/ │ └── mprengemann/ │ └── intellij/ │ └── plugin/ │ └── androidicons/ │ ├── IProjectSettingsComponent.java │ ├── IconApplication.java │ ├── ProjectSettingsComponent.java │ ├── actions/ │ │ ├── AndroidAssetUtilsGroup.java │ │ ├── AndroidBatchImportAction.java │ │ ├── AndroidMultiDrawableAction.java │ │ ├── IconsAction.java │ │ └── VectorsAction.java │ ├── controllers/ │ │ ├── DefaultControllerFactory.java │ │ ├── IController.java │ │ ├── IControllerFactory.java │ │ ├── batchscale/ │ │ │ ├── BatchScaleImporterController.java │ │ │ ├── BatchScaleImporterObserver.java │ │ │ ├── IBatchScaleImporterController.java │ │ │ └── additem/ │ │ │ ├── AddItemBatchScaleDialogObserver.java │ │ │ ├── AddItemBatchScaleImporterController.java │ │ │ └── IAddItemBatchScaleImporterController.java │ │ ├── defaults/ │ │ │ ├── DefaultsController.java │ │ │ └── IDefaultsController.java │ │ ├── iconimporter/ │ │ │ ├── IIconsImporterController.java │ │ │ ├── IconsImporterController.java │ │ │ └── IconsImporterObserver.java │ │ ├── icons/ │ │ │ ├── IIconPackController.java │ │ │ ├── androidicons/ │ │ │ │ ├── AndroidIconsController.java │ │ │ │ └── IAndroidIconsController.java │ │ │ └── materialicons/ │ │ │ ├── IMaterialIconsController.java │ │ │ └── MaterialIconsController.java │ │ ├── multi/ │ │ │ ├── IMultiImporterController.java │ │ │ ├── MultiImporterController.java │ │ │ └── MultiImporterObserver.java │ │ └── settings/ │ │ ├── ISettingsController.java │ │ ├── SettingsController.java │ │ └── SettingsObserver.java │ ├── dialogs/ │ │ ├── AddItemBatchScaleDialog.form │ │ ├── AddItemBatchScaleDialog.java │ │ ├── AndroidBatchScaleImporter.form │ │ ├── AndroidBatchScaleImporter.java │ │ ├── AndroidMultiDrawableImporter.form │ │ ├── AndroidMultiDrawableImporter.java │ │ ├── EditItemsBatchScaleDialog.form │ │ ├── EditItemsBatchScaleDialog.java │ │ ├── IconImporter.form │ │ ├── IconImporter.java │ │ ├── ResourcesDialog.form │ │ ├── ResourcesDialog.java │ │ ├── VectorImporter.form │ │ └── VectorImporter.java │ ├── images/ │ │ ├── RefactoringTask.java │ │ └── ResizeAlgorithm.java │ ├── listeners/ │ │ ├── RadioListListener.java │ │ ├── SimpleKeyListener.java │ │ └── SimpleMouseListener.java │ ├── model/ │ │ ├── Destination.java │ │ ├── Format.java │ │ ├── IconPack.java │ │ ├── ImageAsset.java │ │ ├── ImageInformation.java │ │ └── Resolution.java │ ├── resources/ │ │ └── ResourceLoader.java │ ├── util/ │ │ ├── AndroidFacetUtils.java │ │ ├── ExportNameUtils.java │ │ ├── ImageUtils.java │ │ ├── MathUtils.java │ │ ├── RefactorUtils.java │ │ ├── RunnableUtils.java │ │ └── TextUtils.java │ └── widgets/ │ ├── ExportNameField.java │ ├── FileBrowserField.java │ ├── RadioButtonList.java │ └── ResolutionButtonModel.java └── resources/ ├── META-INF/ │ └── plugin.xml └── assets/ ├── content.json ├── icon_packs.properties └── material_icons/ ├── action/ │ └── drawable-anydpi-v21/ │ ├── ic_3d_rotation_black_24dp.xml │ ├── ic_accessibility_black_24dp.xml │ ├── ic_accessible_black_24dp.xml │ ├── ic_account_balance_black_24dp.xml │ ├── ic_account_balance_wallet_black_24dp.xml │ ├── ic_account_box_black_24dp.xml │ ├── ic_account_circle_black_24dp.xml │ ├── ic_add_shopping_cart_black_24dp.xml │ ├── ic_alarm_add_black_24dp.xml │ ├── ic_alarm_black_24dp.xml │ ├── ic_alarm_off_black_24dp.xml │ ├── ic_alarm_on_black_24dp.xml │ ├── ic_all_out_black_24dp.xml │ ├── ic_android_black_24dp.xml │ ├── ic_announcement_black_24dp.xml │ ├── ic_aspect_ratio_black_24dp.xml │ ├── ic_assessment_black_24dp.xml │ ├── ic_assignment_black_24dp.xml │ ├── ic_assignment_ind_black_24dp.xml │ ├── ic_assignment_late_black_24dp.xml │ ├── ic_assignment_return_black_24dp.xml │ ├── ic_assignment_returned_black_24dp.xml │ ├── ic_assignment_turned_in_black_24dp.xml │ ├── ic_autorenew_black_24dp.xml │ ├── ic_backup_black_24dp.xml │ ├── ic_book_black_24dp.xml │ ├── ic_bookmark_black_24dp.xml │ ├── ic_bookmark_border_black_24dp.xml │ ├── ic_bug_report_black_24dp.xml │ ├── ic_build_black_24dp.xml │ ├── ic_cached_black_24dp.xml │ ├── ic_camera_enhance_black_24dp.xml │ ├── ic_card_giftcard_black_24dp.xml │ ├── ic_card_membership_black_24dp.xml │ ├── ic_card_travel_black_24dp.xml │ ├── ic_change_history_black_24dp.xml │ ├── ic_check_circle_black_24dp.xml │ ├── ic_chrome_reader_mode_black_24dp.xml │ ├── ic_class_black_24dp.xml │ ├── ic_code_black_24dp.xml │ ├── ic_compare_arrows_black_24dp.xml │ ├── ic_copyright_black_24dp.xml │ ├── ic_credit_card_black_24dp.xml │ ├── ic_dashboard_black_24dp.xml │ ├── ic_date_range_black_24dp.xml │ ├── ic_delete_black_24dp.xml │ ├── ic_delete_forever_black_24dp.xml │ ├── ic_description_black_24dp.xml │ ├── ic_dns_black_24dp.xml │ ├── ic_done_all_black_24dp.xml │ ├── ic_done_black_24dp.xml │ ├── ic_donut_large_black_24dp.xml │ ├── ic_donut_small_black_24dp.xml │ ├── ic_eject_black_24dp.xml │ ├── ic_euro_symbol_black_24dp.xml │ ├── ic_event_black_24dp.xml │ ├── ic_event_seat_black_24dp.xml │ ├── ic_exit_to_app_black_24dp.xml │ ├── ic_explore_black_24dp.xml │ ├── ic_extension_black_24dp.xml │ ├── ic_face_black_24dp.xml │ ├── ic_favorite_black_24dp.xml │ ├── ic_favorite_border_black_24dp.xml │ ├── ic_feedback_black_24dp.xml │ ├── ic_find_in_page_black_24dp.xml │ ├── ic_find_replace_black_24dp.xml │ ├── ic_fingerprint_black_24dp.xml │ ├── ic_flight_land_black_24dp.xml │ ├── ic_flight_takeoff_black_24dp.xml │ ├── ic_flip_to_back_black_24dp.xml │ ├── ic_flip_to_front_black_24dp.xml │ ├── ic_g_translate_black_24dp.xml │ ├── ic_gavel_black_24dp.xml │ ├── ic_get_app_black_24dp.xml │ ├── ic_gif_black_24dp.xml │ ├── ic_grade_black_24dp.xml │ ├── ic_group_work_black_24dp.xml │ ├── ic_help_black_24dp.xml │ ├── ic_help_outline_black_24dp.xml │ ├── ic_highlight_off_black_24dp.xml │ ├── ic_history_black_24dp.xml │ ├── ic_home_black_24dp.xml │ ├── ic_hourglass_empty_black_24dp.xml │ ├── ic_hourglass_full_black_24dp.xml │ ├── ic_http_black_24dp.xml │ ├── ic_https_black_24dp.xml │ ├── ic_important_devices_black_24dp.xml │ ├── ic_info_black_24dp.xml │ ├── ic_info_outline_black_24dp.xml │ ├── ic_input_black_24dp.xml │ ├── ic_invert_colors_black_24dp.xml │ ├── ic_label_black_24dp.xml │ ├── ic_label_outline_black_24dp.xml │ ├── ic_language_black_24dp.xml │ ├── ic_launch_black_24dp.xml │ ├── ic_lightbulb_outline_black_24dp.xml │ ├── ic_line_style_black_24dp.xml │ ├── ic_line_weight_black_24dp.xml │ ├── ic_list_black_24dp.xml │ ├── ic_lock_black_24dp.xml │ ├── ic_lock_open_black_24dp.xml │ ├── ic_lock_outline_black_24dp.xml │ ├── ic_loyalty_black_24dp.xml │ ├── ic_markunread_mailbox_black_24dp.xml │ ├── ic_motorcycle_black_24dp.xml │ ├── ic_note_add_black_24dp.xml │ ├── ic_offline_pin_black_24dp.xml │ ├── ic_opacity_black_24dp.xml │ ├── ic_open_in_browser_black_24dp.xml │ ├── ic_open_in_new_black_24dp.xml │ ├── ic_open_with_black_24dp.xml │ ├── ic_pageview_black_24dp.xml │ ├── ic_pan_tool_black_24dp.xml │ ├── ic_payment_black_24dp.xml │ ├── ic_perm_camera_mic_black_24dp.xml │ ├── ic_perm_contact_calendar_black_24dp.xml │ ├── ic_perm_data_setting_black_24dp.xml │ ├── ic_perm_device_information_black_24dp.xml │ ├── ic_perm_identity_black_24dp.xml │ ├── ic_perm_media_black_24dp.xml │ ├── ic_perm_phone_msg_black_24dp.xml │ ├── ic_perm_scan_wifi_black_24dp.xml │ ├── ic_pets_black_24dp.xml │ ├── ic_picture_in_picture_alt_black_24dp.xml │ ├── ic_picture_in_picture_black_24dp.xml │ ├── ic_play_for_work_black_24dp.xml │ ├── ic_polymer_black_24dp.xml │ ├── ic_power_settings_new_black_24dp.xml │ ├── ic_pregnant_woman_black_24dp.xml │ ├── ic_print_black_24dp.xml │ ├── ic_query_builder_black_24dp.xml │ ├── ic_question_answer_black_24dp.xml │ ├── ic_receipt_black_24dp.xml │ ├── ic_record_voice_over_black_24dp.xml │ ├── ic_redeem_black_24dp.xml │ ├── ic_remove_shopping_cart_black_24dp.xml │ ├── ic_reorder_black_24dp.xml │ ├── ic_report_problem_black_24dp.xml │ ├── ic_restore_black_24dp.xml │ ├── ic_restore_page_black_24dp.xml │ ├── ic_room_black_24dp.xml │ ├── ic_rounded_corner_black_24dp.xml │ ├── ic_rowing_black_24dp.xml │ ├── ic_schedule_black_24dp.xml │ ├── ic_search_black_24dp.xml │ ├── ic_settings_applications_black_24dp.xml │ ├── ic_settings_backup_restore_black_24dp.xml │ ├── ic_settings_black_24dp.xml │ ├── ic_settings_bluetooth_black_24dp.xml │ ├── ic_settings_brightness_black_24dp.xml │ ├── ic_settings_cell_black_24dp.xml │ ├── ic_settings_ethernet_black_24dp.xml │ ├── ic_settings_input_antenna_black_24dp.xml │ ├── ic_settings_input_component_black_24dp.xml │ ├── ic_settings_input_composite_black_24dp.xml │ ├── ic_settings_input_hdmi_black_24dp.xml │ ├── ic_settings_input_svideo_black_24dp.xml │ ├── ic_settings_overscan_black_24dp.xml │ ├── ic_settings_phone_black_24dp.xml │ ├── ic_settings_power_black_24dp.xml │ ├── ic_settings_remote_black_24dp.xml │ ├── ic_settings_voice_black_24dp.xml │ ├── ic_shop_black_24dp.xml │ ├── ic_shop_two_black_24dp.xml │ ├── ic_shopping_basket_black_24dp.xml │ ├── ic_shopping_cart_black_24dp.xml │ ├── ic_speaker_notes_black_24dp.xml │ ├── ic_speaker_notes_off_black_24dp.xml │ ├── ic_spellcheck_black_24dp.xml │ ├── ic_stars_black_24dp.xml │ ├── ic_store_black_24dp.xml │ ├── ic_subject_black_24dp.xml │ ├── ic_supervisor_account_black_24dp.xml │ ├── ic_swap_horiz_black_24dp.xml │ ├── ic_swap_vert_black_24dp.xml │ ├── ic_swap_vertical_circle_black_24dp.xml │ ├── ic_system_update_alt_black_24dp.xml │ ├── ic_tab_black_24dp.xml │ ├── ic_tab_unselected_black_24dp.xml │ ├── ic_theaters_black_24dp.xml │ ├── ic_thumb_down_black_24dp.xml │ ├── ic_thumb_up_black_24dp.xml │ ├── ic_thumbs_up_down_black_24dp.xml │ ├── ic_timeline_black_24dp.xml │ ├── ic_toc_black_24dp.xml │ ├── ic_today_black_24dp.xml │ ├── ic_toll_black_24dp.xml │ ├── ic_touch_app_black_24dp.xml │ ├── ic_track_changes_black_24dp.xml │ ├── ic_translate_black_24dp.xml │ ├── ic_trending_down_black_24dp.xml │ ├── ic_trending_flat_black_24dp.xml │ ├── ic_trending_up_black_24dp.xml │ ├── ic_turned_in_black_24dp.xml │ ├── ic_turned_in_not_black_24dp.xml │ ├── ic_update_black_24dp.xml │ ├── ic_verified_user_black_24dp.xml │ ├── ic_view_agenda_black_24dp.xml │ ├── ic_view_array_black_24dp.xml │ ├── ic_view_carousel_black_24dp.xml │ ├── ic_view_column_black_24dp.xml │ ├── ic_view_day_black_24dp.xml │ ├── ic_view_headline_black_24dp.xml │ ├── ic_view_list_black_24dp.xml │ ├── ic_view_module_black_24dp.xml │ ├── ic_view_quilt_black_24dp.xml │ ├── ic_view_stream_black_24dp.xml │ ├── ic_view_week_black_24dp.xml │ ├── ic_visibility_black_24dp.xml │ ├── ic_visibility_off_black_24dp.xml │ ├── ic_watch_later_black_24dp.xml │ ├── ic_work_black_24dp.xml │ ├── ic_youtube_searched_for_black_24dp.xml │ ├── ic_zoom_in_black_24dp.xml │ └── ic_zoom_out_black_24dp.xml ├── alert/ │ └── drawable-anydpi-v21/ │ ├── ic_add_alert_black_24dp.xml │ ├── ic_error_black_24dp.xml │ ├── ic_error_outline_black_24dp.xml │ └── ic_warning_black_24dp.xml ├── av/ │ └── drawable-anydpi-v21/ │ ├── ic_add_to_queue_black_24dp.xml │ ├── ic_airplay_black_24dp.xml │ ├── ic_album_black_24dp.xml │ ├── ic_art_track_black_24dp.xml │ ├── ic_av_timer_black_24dp.xml │ ├── ic_branding_watermark_black_24dp.xml │ ├── ic_call_to_action_black_24dp.xml │ ├── ic_closed_caption_black_24dp.xml │ ├── ic_equalizer_black_24dp.xml │ ├── ic_explicit_black_24dp.xml │ ├── ic_fast_forward_black_24dp.xml │ ├── ic_fast_rewind_black_24dp.xml │ ├── ic_featured_play_list_black_24dp.xml │ ├── ic_featured_video_black_24dp.xml │ ├── ic_fiber_dvr_black_24dp.xml │ ├── ic_fiber_manual_record_black_24dp.xml │ ├── ic_fiber_new_black_24dp.xml │ ├── ic_fiber_pin_black_24dp.xml │ ├── ic_fiber_smart_record_black_24dp.xml │ ├── ic_forward_10_black_24dp.xml │ ├── ic_forward_30_black_24dp.xml │ ├── ic_forward_5_black_24dp.xml │ ├── ic_games_black_24dp.xml │ ├── ic_hd_black_24dp.xml │ ├── ic_hearing_black_24dp.xml │ ├── ic_high_quality_black_24dp.xml │ ├── ic_library_add_black_24dp.xml │ ├── ic_library_books_black_24dp.xml │ ├── ic_library_music_black_24dp.xml │ ├── ic_loop_black_24dp.xml │ ├── ic_mic_black_24dp.xml │ ├── ic_mic_none_black_24dp.xml │ ├── ic_mic_off_black_24dp.xml │ ├── ic_movie_black_24dp.xml │ ├── ic_music_video_black_24dp.xml │ ├── ic_new_releases_black_24dp.xml │ ├── ic_not_interested_black_24dp.xml │ ├── ic_note_black_24dp.xml │ ├── ic_pause_black_24dp.xml │ ├── ic_pause_circle_filled_black_24dp.xml │ ├── ic_pause_circle_outline_black_24dp.xml │ ├── ic_play_arrow_black_24dp.xml │ ├── ic_play_circle_filled_black_24dp.xml │ ├── ic_play_circle_outline_black_24dp.xml │ ├── ic_playlist_add_black_24dp.xml │ ├── ic_playlist_add_check_black_24dp.xml │ ├── ic_playlist_play_black_24dp.xml │ ├── ic_queue_black_24dp.xml │ ├── ic_queue_music_black_24dp.xml │ ├── ic_queue_play_next_black_24dp.xml │ ├── ic_radio_black_24dp.xml │ ├── ic_recent_actors_black_24dp.xml │ ├── ic_remove_from_queue_black_24dp.xml │ ├── ic_repeat_black_24dp.xml │ ├── ic_repeat_one_black_24dp.xml │ ├── ic_replay_10_black_24dp.xml │ ├── ic_replay_30_black_24dp.xml │ ├── ic_replay_5_black_24dp.xml │ ├── ic_replay_black_24dp.xml │ ├── ic_shuffle_black_24dp.xml │ ├── ic_skip_next_black_24dp.xml │ ├── ic_skip_previous_black_24dp.xml │ ├── ic_slow_motion_video_black_24dp.xml │ ├── ic_snooze_black_24dp.xml │ ├── ic_sort_by_alpha_black_24dp.xml │ ├── ic_stop_black_24dp.xml │ ├── ic_subscriptions_black_24dp.xml │ ├── ic_subtitles_black_24dp.xml │ ├── ic_surround_sound_black_24dp.xml │ ├── ic_video_call_black_24dp.xml │ ├── ic_video_label_black_24dp.xml │ ├── ic_video_library_black_24dp.xml │ ├── ic_videocam_black_24dp.xml │ ├── ic_videocam_off_black_24dp.xml │ ├── ic_volume_down_black_24dp.xml │ ├── ic_volume_mute_black_24dp.xml │ ├── ic_volume_off_black_24dp.xml │ ├── ic_volume_up_black_24dp.xml │ ├── ic_web_asset_black_24dp.xml │ └── ic_web_black_24dp.xml ├── communication/ │ └── drawable-anydpi-v21/ │ ├── ic_business_black_24dp.xml │ ├── ic_call_black_24dp.xml │ ├── ic_call_end_black_24dp.xml │ ├── ic_call_made_black_24dp.xml │ ├── ic_call_merge_black_24dp.xml │ ├── ic_call_missed_black_24dp.xml │ ├── ic_call_missed_outgoing_black_24dp.xml │ ├── ic_call_received_black_24dp.xml │ ├── ic_call_split_black_24dp.xml │ ├── ic_chat_black_24dp.xml │ ├── ic_chat_bubble_black_24dp.xml │ ├── ic_chat_bubble_outline_black_24dp.xml │ ├── ic_clear_all_black_24dp.xml │ ├── ic_comment_black_24dp.xml │ ├── ic_contact_mail_black_24dp.xml │ ├── ic_contact_phone_black_24dp.xml │ ├── ic_contacts_black_24dp.xml │ ├── ic_dialer_sip_black_24dp.xml │ ├── ic_dialpad_black_24dp.xml │ ├── ic_email_black_24dp.xml │ ├── ic_forum_black_24dp.xml │ ├── ic_import_contacts_black_24dp.xml │ ├── ic_import_export_black_24dp.xml │ ├── ic_invert_colors_off_black_24dp.xml │ ├── ic_live_help_black_24dp.xml │ ├── ic_location_off_black_24dp.xml │ ├── ic_location_on_black_24dp.xml │ ├── ic_mail_outline_black_24dp.xml │ ├── ic_message_black_24dp.xml │ ├── ic_no_sim_black_24dp.xml │ ├── ic_phone_black_24dp.xml │ ├── ic_phonelink_erase_black_24dp.xml │ ├── ic_phonelink_lock_black_24dp.xml │ ├── ic_phonelink_ring_black_24dp.xml │ ├── ic_phonelink_setup_black_24dp.xml │ ├── ic_portable_wifi_off_black_24dp.xml │ ├── ic_present_to_all_black_24dp.xml │ ├── ic_ring_volume_black_24dp.xml │ ├── ic_rss_feed_black_24dp.xml │ ├── ic_screen_share_black_24dp.xml │ ├── ic_speaker_phone_black_24dp.xml │ ├── ic_stay_current_landscape_black_24dp.xml │ ├── ic_stay_current_portrait_black_24dp.xml │ ├── ic_stay_primary_landscape_black_24dp.xml │ ├── ic_stay_primary_portrait_black_24dp.xml │ ├── ic_stop_screen_share_black_24dp.xml │ ├── ic_swap_calls_black_24dp.xml │ ├── ic_textsms_black_24dp.xml │ ├── ic_voicemail_black_24dp.xml │ └── ic_vpn_key_black_24dp.xml ├── content/ │ └── drawable-anydpi-v21/ │ ├── ic_add_black_24dp.xml │ ├── ic_add_box_black_24dp.xml │ ├── ic_add_circle_black_24dp.xml │ ├── ic_add_circle_outline_black_24dp.xml │ ├── ic_archive_black_24dp.xml │ ├── ic_backspace_black_24dp.xml │ ├── ic_block_black_24dp.xml │ ├── ic_clear_black_24dp.xml │ ├── ic_content_copy_black_24dp.xml │ ├── ic_content_cut_black_24dp.xml │ ├── ic_content_paste_black_24dp.xml │ ├── ic_create_black_24dp.xml │ ├── ic_delete_sweep_black_24dp.xml │ ├── ic_drafts_black_24dp.xml │ ├── ic_filter_list_black_24dp.xml │ ├── ic_flag_black_24dp.xml │ ├── ic_font_download_black_24dp.xml │ ├── ic_forward_black_24dp.xml │ ├── ic_gesture_black_24dp.xml │ ├── ic_inbox_black_24dp.xml │ ├── ic_link_black_24dp.xml │ ├── ic_low_priority_black_24dp.xml │ ├── ic_mail_black_24dp.xml │ ├── ic_markunread_black_24dp.xml │ ├── ic_move_to_inbox_black_24dp.xml │ ├── ic_next_week_black_24dp.xml │ ├── ic_redo_black_24dp.xml │ ├── ic_remove_black_24dp.xml │ ├── ic_remove_circle_black_24dp.xml │ ├── ic_remove_circle_outline_black_24dp.xml │ ├── ic_reply_all_black_24dp.xml │ ├── ic_reply_black_24dp.xml │ ├── ic_report_black_24dp.xml │ ├── ic_save_black_24dp.xml │ ├── ic_select_all_black_24dp.xml │ ├── ic_send_black_24dp.xml │ ├── ic_sort_black_24dp.xml │ ├── ic_text_format_black_24dp.xml │ ├── ic_unarchive_black_24dp.xml │ ├── ic_undo_black_24dp.xml │ └── ic_weekend_black_24dp.xml ├── device/ │ └── drawable-anydpi-v21/ │ ├── ic_access_alarm_black_24dp.xml │ ├── ic_access_alarms_black_24dp.xml │ ├── ic_access_time_black_24dp.xml │ ├── ic_add_alarm_black_24dp.xml │ ├── ic_airplanemode_active_black_24dp.xml │ ├── ic_airplanemode_inactive_black_24dp.xml │ ├── ic_battery_20_black_24dp.xml │ ├── ic_battery_30_black_24dp.xml │ ├── ic_battery_50_black_24dp.xml │ ├── ic_battery_60_black_24dp.xml │ ├── ic_battery_80_black_24dp.xml │ ├── ic_battery_90_black_24dp.xml │ ├── ic_battery_alert_black_24dp.xml │ ├── ic_battery_charging_20_black_24dp.xml │ ├── ic_battery_charging_30_black_24dp.xml │ ├── ic_battery_charging_50_black_24dp.xml │ ├── ic_battery_charging_60_black_24dp.xml │ ├── ic_battery_charging_80_black_24dp.xml │ ├── ic_battery_charging_90_black_24dp.xml │ ├── ic_battery_charging_full_black_24dp.xml │ ├── ic_battery_full_black_24dp.xml │ ├── ic_battery_std_black_24dp.xml │ ├── ic_battery_unknown_black_24dp.xml │ ├── ic_bluetooth_black_24dp.xml │ ├── ic_bluetooth_connected_black_24dp.xml │ ├── ic_bluetooth_disabled_black_24dp.xml │ ├── ic_bluetooth_searching_black_24dp.xml │ ├── ic_brightness_auto_black_24dp.xml │ ├── ic_brightness_high_black_24dp.xml │ ├── ic_brightness_low_black_24dp.xml │ ├── ic_brightness_medium_black_24dp.xml │ ├── ic_data_usage_black_24dp.xml │ ├── ic_developer_mode_black_24dp.xml │ ├── ic_devices_black_24dp.xml │ ├── ic_dvr_black_24dp.xml │ ├── ic_gps_fixed_black_24dp.xml │ ├── ic_gps_not_fixed_black_24dp.xml │ ├── ic_gps_off_black_24dp.xml │ ├── ic_graphic_eq_black_24dp.xml │ ├── ic_location_disabled_black_24dp.xml │ ├── ic_location_searching_black_24dp.xml │ ├── ic_network_cell_black_24dp.xml │ ├── ic_network_wifi_black_24dp.xml │ ├── ic_nfc_black_24dp.xml │ ├── ic_screen_lock_landscape_black_24dp.xml │ ├── ic_screen_lock_portrait_black_24dp.xml │ ├── ic_screen_lock_rotation_black_24dp.xml │ ├── ic_screen_rotation_black_24dp.xml │ ├── ic_sd_storage_black_24dp.xml │ ├── ic_settings_system_daydream_black_24dp.xml │ ├── ic_signal_cellular_0_bar_black_24dp.xml │ ├── ic_signal_cellular_1_bar_black_24dp.xml │ ├── ic_signal_cellular_2_bar_black_24dp.xml │ ├── ic_signal_cellular_3_bar_black_24dp.xml │ ├── ic_signal_cellular_4_bar_black_24dp.xml │ ├── ic_signal_cellular_connected_no_internet_0_bar_black_24dp.xml │ ├── ic_signal_cellular_connected_no_internet_1_bar_black_24dp.xml │ ├── ic_signal_cellular_connected_no_internet_2_bar_black_24dp.xml │ ├── ic_signal_cellular_connected_no_internet_3_bar_black_24dp.xml │ ├── ic_signal_cellular_connected_no_internet_4_bar_black_24dp.xml │ ├── ic_signal_cellular_no_sim_black_24dp.xml │ ├── ic_signal_cellular_null_black_24dp.xml │ ├── ic_signal_cellular_off_black_24dp.xml │ ├── ic_signal_wifi_0_bar_black_24dp.xml │ ├── ic_signal_wifi_1_bar_black_24dp.xml │ ├── ic_signal_wifi_1_bar_lock_black_24dp.xml │ ├── ic_signal_wifi_2_bar_black_24dp.xml │ ├── ic_signal_wifi_2_bar_lock_black_24dp.xml │ ├── ic_signal_wifi_3_bar_black_24dp.xml │ ├── ic_signal_wifi_3_bar_lock_black_24dp.xml │ ├── ic_signal_wifi_4_bar_black_24dp.xml │ ├── ic_signal_wifi_4_bar_lock_black_24dp.xml │ ├── ic_signal_wifi_off_black_24dp.xml │ ├── ic_storage_black_24dp.xml │ ├── ic_usb_black_24dp.xml │ ├── ic_wallpaper_black_24dp.xml │ ├── ic_widgets_black_24dp.xml │ ├── ic_wifi_lock_black_24dp.xml │ └── ic_wifi_tethering_black_24dp.xml ├── editor/ │ └── drawable-anydpi-v21/ │ ├── ic_attach_file_black_24dp.xml │ ├── ic_attach_money_black_24dp.xml │ ├── ic_border_all_black_24dp.xml │ ├── ic_border_bottom_black_24dp.xml │ ├── ic_border_clear_black_24dp.xml │ ├── ic_border_color_black_24dp.xml │ ├── ic_border_horizontal_black_24dp.xml │ ├── ic_border_inner_black_24dp.xml │ ├── ic_border_left_black_24dp.xml │ ├── ic_border_outer_black_24dp.xml │ ├── ic_border_right_black_24dp.xml │ ├── ic_border_style_black_24dp.xml │ ├── ic_border_top_black_24dp.xml │ ├── ic_border_vertical_black_24dp.xml │ ├── ic_bubble_chart_black_24dp.xml │ ├── ic_drag_handle_black_24dp.xml │ ├── ic_format_align_center_black_24dp.xml │ ├── ic_format_align_justify_black_24dp.xml │ ├── ic_format_align_left_black_24dp.xml │ ├── ic_format_align_right_black_24dp.xml │ ├── ic_format_bold_black_24dp.xml │ ├── ic_format_clear_black_24dp.xml │ ├── ic_format_color_fill_black_24dp.xml │ ├── ic_format_color_reset_black_24dp.xml │ ├── ic_format_color_text_black_24dp.xml │ ├── ic_format_indent_decrease_black_24dp.xml │ ├── ic_format_indent_increase_black_24dp.xml │ ├── ic_format_italic_black_24dp.xml │ ├── ic_format_line_spacing_black_24dp.xml │ ├── ic_format_list_bulleted_black_24dp.xml │ ├── ic_format_list_numbered_black_24dp.xml │ ├── ic_format_paint_black_24dp.xml │ ├── ic_format_quote_black_24dp.xml │ ├── ic_format_shapes_black_24dp.xml │ ├── ic_format_size_black_24dp.xml │ ├── ic_format_strikethrough_black_24dp.xml │ ├── ic_format_textdirection_l_to_r_black_24dp.xml │ ├── ic_format_textdirection_r_to_l_black_24dp.xml │ ├── ic_format_underlined_black_24dp.xml │ ├── ic_functions_black_24dp.xml │ ├── ic_highlight_black_24dp.xml │ ├── ic_insert_chart_black_24dp.xml │ ├── ic_insert_comment_black_24dp.xml │ ├── ic_insert_drive_file_black_24dp.xml │ ├── ic_insert_emoticon_black_24dp.xml │ ├── ic_insert_invitation_black_24dp.xml │ ├── ic_insert_link_black_24dp.xml │ ├── ic_insert_photo_black_24dp.xml │ ├── ic_linear_scale_black_24dp.xml │ ├── ic_merge_type_black_24dp.xml │ ├── ic_mode_comment_black_24dp.xml │ ├── ic_mode_edit_black_24dp.xml │ ├── ic_monetization_on_black_24dp.xml │ ├── ic_money_off_black_24dp.xml │ ├── ic_multiline_chart_black_24dp.xml │ ├── ic_pie_chart_black_24dp.xml │ ├── ic_pie_chart_outlined_black_24dp.xml │ ├── ic_publish_black_24dp.xml │ ├── ic_short_text_black_24dp.xml │ ├── ic_show_chart_black_24dp.xml │ ├── ic_space_bar_black_24dp.xml │ ├── ic_strikethrough_s_black_24dp.xml │ ├── ic_text_fields_black_24dp.xml │ ├── ic_title_black_24dp.xml │ ├── ic_vertical_align_bottom_black_24dp.xml │ ├── ic_vertical_align_center_black_24dp.xml │ ├── ic_vertical_align_top_black_24dp.xml │ └── ic_wrap_text_black_24dp.xml ├── file/ │ └── drawable-anydpi-v21/ │ ├── ic_attachment_black_24dp.xml │ ├── ic_cloud_black_24dp.xml │ ├── ic_cloud_circle_black_24dp.xml │ ├── ic_cloud_done_black_24dp.xml │ ├── ic_cloud_download_black_24dp.xml │ ├── ic_cloud_off_black_24dp.xml │ ├── ic_cloud_queue_black_24dp.xml │ ├── ic_cloud_upload_black_24dp.xml │ ├── ic_create_new_folder_black_24dp.xml │ ├── ic_file_download_black_24dp.xml │ ├── ic_file_upload_black_24dp.xml │ ├── ic_folder_black_24dp.xml │ ├── ic_folder_open_black_24dp.xml │ └── ic_folder_shared_black_24dp.xml ├── hardware/ │ └── drawable-anydpi-v21/ │ ├── ic_cast_black_24dp.xml │ ├── ic_cast_connected_black_24dp.xml │ ├── ic_computer_black_24dp.xml │ ├── ic_desktop_mac_black_24dp.xml │ ├── ic_desktop_windows_black_24dp.xml │ ├── ic_developer_board_black_24dp.xml │ ├── ic_device_hub_black_24dp.xml │ ├── ic_devices_other_black_24dp.xml │ ├── ic_dock_black_24dp.xml │ ├── ic_gamepad_black_24dp.xml │ ├── ic_headset_black_24dp.xml │ ├── ic_headset_mic_black_24dp.xml │ ├── ic_keyboard_arrow_down_black_24dp.xml │ ├── ic_keyboard_arrow_left_black_24dp.xml │ ├── ic_keyboard_arrow_right_black_24dp.xml │ ├── ic_keyboard_arrow_up_black_24dp.xml │ ├── ic_keyboard_backspace_black_24dp.xml │ ├── ic_keyboard_black_24dp.xml │ ├── ic_keyboard_capslock_black_24dp.xml │ ├── ic_keyboard_hide_black_24dp.xml │ ├── ic_keyboard_return_black_24dp.xml │ ├── ic_keyboard_tab_black_24dp.xml │ ├── ic_keyboard_voice_black_24dp.xml │ ├── ic_laptop_black_24dp.xml │ ├── ic_laptop_chromebook_black_24dp.xml │ ├── ic_laptop_mac_black_24dp.xml │ ├── ic_laptop_windows_black_24dp.xml │ ├── ic_memory_black_24dp.xml │ ├── ic_mouse_black_24dp.xml │ ├── ic_phone_android_black_24dp.xml │ ├── ic_phone_iphone_black_24dp.xml │ ├── ic_phonelink_black_24dp.xml │ ├── ic_phonelink_off_black_24dp.xml │ ├── ic_power_input_black_24dp.xml │ ├── ic_router_black_24dp.xml │ ├── ic_scanner_black_24dp.xml │ ├── ic_security_black_24dp.xml │ ├── ic_sim_card_black_24dp.xml │ ├── ic_smartphone_black_24dp.xml │ ├── ic_speaker_black_24dp.xml │ ├── ic_speaker_group_black_24dp.xml │ ├── ic_tablet_android_black_24dp.xml │ ├── ic_tablet_black_24dp.xml │ ├── ic_tablet_mac_black_24dp.xml │ ├── ic_toys_black_24dp.xml │ ├── ic_tv_black_24dp.xml │ ├── ic_videogame_asset_black_24dp.xml │ └── ic_watch_black_24dp.xml ├── image/ │ └── drawable-anydpi-v21/ │ ├── ic_add_a_photo_black_24dp.xml │ ├── ic_add_to_photos_black_24dp.xml │ ├── ic_adjust_black_24dp.xml │ ├── ic_assistant_black_24dp.xml │ ├── ic_assistant_photo_black_24dp.xml │ ├── ic_audiotrack_black_24dp.xml │ ├── ic_blur_circular_black_24dp.xml │ ├── ic_blur_linear_black_24dp.xml │ ├── ic_blur_off_black_24dp.xml │ ├── ic_blur_on_black_24dp.xml │ ├── ic_brightness_1_black_24dp.xml │ ├── ic_brightness_2_black_24dp.xml │ ├── ic_brightness_3_black_24dp.xml │ ├── ic_brightness_4_black_24dp.xml │ ├── ic_brightness_5_black_24dp.xml │ ├── ic_brightness_6_black_24dp.xml │ ├── ic_brightness_7_black_24dp.xml │ ├── ic_broken_image_black_24dp.xml │ ├── ic_brush_black_24dp.xml │ ├── ic_burst_mode_black_24dp.xml │ ├── ic_camera_alt_black_24dp.xml │ ├── ic_camera_black_24dp.xml │ ├── ic_camera_front_black_24dp.xml │ ├── ic_camera_rear_black_24dp.xml │ ├── ic_camera_roll_black_24dp.xml │ ├── ic_center_focus_strong_black_24dp.xml │ ├── ic_center_focus_weak_black_24dp.xml │ ├── ic_collections_black_24dp.xml │ ├── ic_collections_bookmark_black_24dp.xml │ ├── ic_color_lens_black_24dp.xml │ ├── ic_colorize_black_24dp.xml │ ├── ic_compare_black_24dp.xml │ ├── ic_control_point_black_24dp.xml │ ├── ic_control_point_duplicate_black_24dp.xml │ ├── ic_crop_16_9_black_24dp.xml │ ├── ic_crop_3_2_black_24dp.xml │ ├── ic_crop_5_4_black_24dp.xml │ ├── ic_crop_7_5_black_24dp.xml │ ├── ic_crop_black_24dp.xml │ ├── ic_crop_din_black_24dp.xml │ ├── ic_crop_free_black_24dp.xml │ ├── ic_crop_landscape_black_24dp.xml │ ├── ic_crop_original_black_24dp.xml │ ├── ic_crop_portrait_black_24dp.xml │ ├── ic_crop_rotate_black_24dp.xml │ ├── ic_crop_square_black_24dp.xml │ ├── ic_dehaze_black_24dp.xml │ ├── ic_details_black_24dp.xml │ ├── ic_edit_black_24dp.xml │ ├── ic_exposure_black_24dp.xml │ ├── ic_exposure_neg_1_black_24dp.xml │ ├── ic_exposure_neg_2_black_24dp.xml │ ├── ic_exposure_plus_1_black_24dp.xml │ ├── ic_exposure_plus_2_black_24dp.xml │ ├── ic_exposure_zero_black_24dp.xml │ ├── ic_filter_1_black_24dp.xml │ ├── ic_filter_2_black_24dp.xml │ ├── ic_filter_3_black_24dp.xml │ ├── ic_filter_4_black_24dp.xml │ ├── ic_filter_5_black_24dp.xml │ ├── ic_filter_6_black_24dp.xml │ ├── ic_filter_7_black_24dp.xml │ ├── ic_filter_8_black_24dp.xml │ ├── ic_filter_9_black_24dp.xml │ ├── ic_filter_9_plus_black_24dp.xml │ ├── ic_filter_b_and_w_black_24dp.xml │ ├── ic_filter_black_24dp.xml │ ├── ic_filter_center_focus_black_24dp.xml │ ├── ic_filter_drama_black_24dp.xml │ ├── ic_filter_frames_black_24dp.xml │ ├── ic_filter_hdr_black_24dp.xml │ ├── ic_filter_none_black_24dp.xml │ ├── ic_filter_tilt_shift_black_24dp.xml │ ├── ic_filter_vintage_black_24dp.xml │ ├── ic_flare_black_24dp.xml │ ├── ic_flash_auto_black_24dp.xml │ ├── ic_flash_off_black_24dp.xml │ ├── ic_flash_on_black_24dp.xml │ ├── ic_flip_black_24dp.xml │ ├── ic_gradient_black_24dp.xml │ ├── ic_grain_black_24dp.xml │ ├── ic_grid_off_black_24dp.xml │ ├── ic_grid_on_black_24dp.xml │ ├── ic_hdr_off_black_24dp.xml │ ├── ic_hdr_on_black_24dp.xml │ ├── ic_hdr_strong_black_24dp.xml │ ├── ic_hdr_weak_black_24dp.xml │ ├── ic_healing_black_24dp.xml │ ├── ic_image_aspect_ratio_black_24dp.xml │ ├── ic_image_black_24dp.xml │ ├── ic_iso_black_24dp.xml │ ├── ic_landscape_black_24dp.xml │ ├── ic_leak_add_black_24dp.xml │ ├── ic_leak_remove_black_24dp.xml │ ├── ic_lens_black_24dp.xml │ ├── ic_linked_camera_black_24dp.xml │ ├── ic_looks_3_black_24dp.xml │ ├── ic_looks_4_black_24dp.xml │ ├── ic_looks_5_black_24dp.xml │ ├── ic_looks_6_black_24dp.xml │ ├── ic_looks_black_24dp.xml │ ├── ic_looks_one_black_24dp.xml │ ├── ic_looks_two_black_24dp.xml │ ├── ic_loupe_black_24dp.xml │ ├── ic_monochrome_photos_black_24dp.xml │ ├── ic_movie_creation_black_24dp.xml │ ├── ic_movie_filter_black_24dp.xml │ ├── ic_music_note_black_24dp.xml │ ├── ic_nature_black_24dp.xml │ ├── ic_nature_people_black_24dp.xml │ ├── ic_navigate_before_black_24dp.xml │ ├── ic_navigate_next_black_24dp.xml │ ├── ic_palette_black_24dp.xml │ ├── ic_panorama_black_24dp.xml │ ├── ic_panorama_fish_eye_black_24dp.xml │ ├── ic_panorama_horizontal_black_24dp.xml │ ├── ic_panorama_vertical_black_24dp.xml │ ├── ic_panorama_wide_angle_black_24dp.xml │ ├── ic_photo_album_black_24dp.xml │ ├── ic_photo_black_24dp.xml │ ├── ic_photo_camera_black_24dp.xml │ ├── ic_photo_filter_black_24dp.xml │ ├── ic_photo_library_black_24dp.xml │ ├── ic_photo_size_select_actual_black_24dp.xml │ ├── ic_photo_size_select_large_black_24dp.xml │ ├── ic_photo_size_select_small_black_24dp.xml │ ├── ic_picture_as_pdf_black_24dp.xml │ ├── ic_portrait_black_24dp.xml │ ├── ic_remove_red_eye_black_24dp.xml │ ├── ic_rotate_90_degrees_ccw_black_24dp.xml │ ├── ic_rotate_left_black_24dp.xml │ ├── ic_rotate_right_black_24dp.xml │ ├── ic_slideshow_black_24dp.xml │ ├── ic_straighten_black_24dp.xml │ ├── ic_style_black_24dp.xml │ ├── ic_switch_camera_black_24dp.xml │ ├── ic_switch_video_black_24dp.xml │ ├── ic_tag_faces_black_24dp.xml │ ├── ic_texture_black_24dp.xml │ ├── ic_timelapse_black_24dp.xml │ ├── ic_timer_10_black_24dp.xml │ ├── ic_timer_3_black_24dp.xml │ ├── ic_timer_black_24dp.xml │ ├── ic_timer_off_black_24dp.xml │ ├── ic_tonality_black_24dp.xml │ ├── ic_transform_black_24dp.xml │ ├── ic_tune_black_24dp.xml │ ├── ic_view_comfy_black_24dp.xml │ ├── ic_view_compact_black_24dp.xml │ ├── ic_vignette_black_24dp.xml │ ├── ic_wb_auto_black_24dp.xml │ ├── ic_wb_cloudy_black_24dp.xml │ ├── ic_wb_incandescent_black_24dp.xml │ ├── ic_wb_iridescent_black_24dp.xml │ └── ic_wb_sunny_black_24dp.xml ├── maps/ │ └── drawable-anydpi-v21/ │ ├── ic_add_location_black_24dp.xml │ ├── ic_beenhere_black_24dp.xml │ ├── ic_directions_bike_black_24dp.xml │ ├── ic_directions_black_24dp.xml │ ├── ic_directions_boat_black_24dp.xml │ ├── ic_directions_bus_black_24dp.xml │ ├── ic_directions_car_black_24dp.xml │ ├── ic_directions_railway_black_24dp.xml │ ├── ic_directions_run_black_24dp.xml │ ├── ic_directions_subway_black_24dp.xml │ ├── ic_directions_transit_black_24dp.xml │ ├── ic_directions_walk_black_24dp.xml │ ├── ic_edit_location_black_24dp.xml │ ├── ic_ev_station_black_24dp.xml │ ├── ic_flight_black_24dp.xml │ ├── ic_hotel_black_24dp.xml │ ├── ic_layers_black_24dp.xml │ ├── ic_layers_clear_black_24dp.xml │ ├── ic_local_activity_black_24dp.xml │ ├── ic_local_airport_black_24dp.xml │ ├── ic_local_atm_black_24dp.xml │ ├── ic_local_bar_black_24dp.xml │ ├── ic_local_cafe_black_24dp.xml │ ├── ic_local_car_wash_black_24dp.xml │ ├── ic_local_convenience_store_black_24dp.xml │ ├── ic_local_dining_black_24dp.xml │ ├── ic_local_drink_black_24dp.xml │ ├── ic_local_florist_black_24dp.xml │ ├── ic_local_gas_station_black_24dp.xml │ ├── ic_local_grocery_store_black_24dp.xml │ ├── ic_local_hospital_black_24dp.xml │ ├── ic_local_hotel_black_24dp.xml │ ├── ic_local_laundry_service_black_24dp.xml │ ├── ic_local_library_black_24dp.xml │ ├── ic_local_mall_black_24dp.xml │ ├── ic_local_movies_black_24dp.xml │ ├── ic_local_offer_black_24dp.xml │ ├── ic_local_parking_black_24dp.xml │ ├── ic_local_pharmacy_black_24dp.xml │ ├── ic_local_phone_black_24dp.xml │ ├── ic_local_pizza_black_24dp.xml │ ├── ic_local_play_black_24dp.xml │ ├── ic_local_post_office_black_24dp.xml │ ├── ic_local_printshop_black_24dp.xml │ ├── ic_local_see_black_24dp.xml │ ├── ic_local_shipping_black_24dp.xml │ ├── ic_local_taxi_black_24dp.xml │ ├── ic_map_black_24dp.xml │ ├── ic_my_location_black_24dp.xml │ ├── ic_navigation_black_24dp.xml │ ├── ic_near_me_black_24dp.xml │ ├── ic_person_pin_black_24dp.xml │ ├── ic_person_pin_circle_black_24dp.xml │ ├── ic_pin_drop_black_24dp.xml │ ├── ic_place_black_24dp.xml │ ├── ic_rate_review_black_24dp.xml │ ├── ic_restaurant_black_24dp.xml │ ├── ic_restaurant_menu_black_24dp.xml │ ├── ic_satellite_black_24dp.xml │ ├── ic_store_mall_directory_black_24dp.xml │ ├── ic_streetview_black_24dp.xml │ ├── ic_subway_black_24dp.xml │ ├── ic_terrain_black_24dp.xml │ ├── ic_traffic_black_24dp.xml │ ├── ic_train_black_24dp.xml │ ├── ic_tram_black_24dp.xml │ ├── ic_transfer_within_a_station_black_24dp.xml │ └── ic_zoom_out_map_black_24dp.xml ├── navigation/ │ └── drawable-anydpi-v21/ │ ├── ic_apps_black_24dp.xml │ ├── ic_arrow_back_black_24dp.xml │ ├── ic_arrow_downward_black_24dp.xml │ ├── ic_arrow_drop_down_black_24dp.xml │ ├── ic_arrow_drop_down_circle_black_24dp.xml │ ├── ic_arrow_drop_up_black_24dp.xml │ ├── ic_arrow_forward_black_24dp.xml │ ├── ic_arrow_upward_black_24dp.xml │ ├── ic_cancel_black_24dp.xml │ ├── ic_check_black_24dp.xml │ ├── ic_chevron_left_black_24dp.xml │ ├── ic_chevron_right_black_24dp.xml │ ├── ic_close_black_24dp.xml │ ├── ic_expand_less_black_24dp.xml │ ├── ic_expand_more_black_24dp.xml │ ├── ic_first_page_black_24dp.xml │ ├── ic_fullscreen_black_24dp.xml │ ├── ic_fullscreen_exit_black_24dp.xml │ ├── ic_last_page_black_24dp.xml │ ├── ic_menu_black_24dp.xml │ ├── ic_more_horiz_black_24dp.xml │ ├── ic_more_vert_black_24dp.xml │ ├── ic_refresh_black_24dp.xml │ ├── ic_subdirectory_arrow_left_black_24dp.xml │ ├── ic_subdirectory_arrow_right_black_24dp.xml │ ├── ic_unfold_less_black_24dp.xml │ └── ic_unfold_more_black_24dp.xml ├── notification/ │ └── drawable-anydpi-v21/ │ ├── ic_adb_black_24dp.xml │ ├── ic_airline_seat_flat_angled_black_24dp.xml │ ├── ic_airline_seat_flat_black_24dp.xml │ ├── ic_airline_seat_individual_suite_black_24dp.xml │ ├── ic_airline_seat_legroom_extra_black_24dp.xml │ ├── ic_airline_seat_legroom_normal_black_24dp.xml │ ├── ic_airline_seat_legroom_reduced_black_24dp.xml │ ├── ic_airline_seat_recline_extra_black_24dp.xml │ ├── ic_airline_seat_recline_normal_black_24dp.xml │ ├── ic_bluetooth_audio_black_24dp.xml │ ├── ic_confirmation_number_black_24dp.xml │ ├── ic_disc_full_black_24dp.xml │ ├── ic_do_not_disturb_alt_black_24dp.xml │ ├── ic_do_not_disturb_black_24dp.xml │ ├── ic_do_not_disturb_off_black_24dp.xml │ ├── ic_do_not_disturb_on_black_24dp.xml │ ├── ic_drive_eta_black_24dp.xml │ ├── ic_enhanced_encryption_black_24dp.xml │ ├── ic_event_available_black_24dp.xml │ ├── ic_event_busy_black_24dp.xml │ ├── ic_event_note_black_24dp.xml │ ├── ic_folder_special_black_24dp.xml │ ├── ic_live_tv_black_24dp.xml │ ├── ic_mms_black_24dp.xml │ ├── ic_more_black_24dp.xml │ ├── ic_network_check_black_24dp.xml │ ├── ic_network_locked_black_24dp.xml │ ├── ic_no_encryption_black_24dp.xml │ ├── ic_ondemand_video_black_24dp.xml │ ├── ic_personal_video_black_24dp.xml │ ├── ic_phone_bluetooth_speaker_black_24dp.xml │ ├── ic_phone_forwarded_black_24dp.xml │ ├── ic_phone_in_talk_black_24dp.xml │ ├── ic_phone_locked_black_24dp.xml │ ├── ic_phone_missed_black_24dp.xml │ ├── ic_phone_paused_black_24dp.xml │ ├── ic_power_black_24dp.xml │ ├── ic_priority_high_black_24dp.xml │ ├── ic_rv_hookup_black_24dp.xml │ ├── ic_sd_card_black_24dp.xml │ ├── ic_sim_card_alert_black_24dp.xml │ ├── ic_sms_black_24dp.xml │ ├── ic_sms_failed_black_24dp.xml │ ├── ic_sync_black_24dp.xml │ ├── ic_sync_disabled_black_24dp.xml │ ├── ic_sync_problem_black_24dp.xml │ ├── ic_system_update_black_24dp.xml │ ├── ic_tap_and_play_black_24dp.xml │ ├── ic_time_to_leave_black_24dp.xml │ ├── ic_vibration_black_24dp.xml │ ├── ic_voice_chat_black_24dp.xml │ ├── ic_vpn_lock_black_24dp.xml │ ├── ic_wc_black_24dp.xml │ └── ic_wifi_black_24dp.xml ├── places/ │ └── drawable-anydpi-v21/ │ ├── ic_ac_unit_black_24dp.xml │ ├── ic_airport_shuttle_black_24dp.xml │ ├── ic_all_inclusive_black_24dp.xml │ ├── ic_beach_access_black_24dp.xml │ ├── ic_business_center_black_24dp.xml │ ├── ic_casino_black_24dp.xml │ ├── ic_child_care_black_24dp.xml │ ├── ic_child_friendly_black_24dp.xml │ ├── ic_fitness_center_black_24dp.xml │ ├── ic_free_breakfast_black_24dp.xml │ ├── ic_golf_course_black_24dp.xml │ ├── ic_hot_tub_black_24dp.xml │ ├── ic_kitchen_black_24dp.xml │ ├── ic_pool_black_24dp.xml │ ├── ic_room_service_black_24dp.xml │ ├── ic_rv_hookup_black_24dp.xml │ ├── ic_smoke_free_black_24dp.xml │ ├── ic_smoking_rooms_black_24dp.xml │ └── ic_spa_black_24dp.xml ├── social/ │ └── drawable-anydpi-v21/ │ ├── ic_cake_black_24dp.xml │ ├── ic_domain_black_24dp.xml │ ├── ic_group_add_black_24dp.xml │ ├── ic_group_black_24dp.xml │ ├── ic_location_city_black_24dp.xml │ ├── ic_mood_bad_black_24dp.xml │ ├── ic_mood_black_24dp.xml │ ├── ic_notifications_active_black_24dp.xml │ ├── ic_notifications_black_24dp.xml │ ├── ic_notifications_none_black_24dp.xml │ ├── ic_notifications_off_black_24dp.xml │ ├── ic_notifications_paused_black_24dp.xml │ ├── ic_pages_black_24dp.xml │ ├── ic_party_mode_black_24dp.xml │ ├── ic_people_black_24dp.xml │ ├── ic_people_outline_black_24dp.xml │ ├── ic_person_add_black_24dp.xml │ ├── ic_person_black_24dp.xml │ ├── ic_person_outline_black_24dp.xml │ ├── ic_plus_one_black_24dp.xml │ ├── ic_poll_black_24dp.xml │ ├── ic_public_black_24dp.xml │ ├── ic_school_black_24dp.xml │ ├── ic_sentiment_dissatisfied_black_24dp.xml │ ├── ic_sentiment_neutral_black_24dp.xml │ ├── ic_sentiment_satisfied_black_24dp.xml │ ├── ic_sentiment_very_dissatisfied_black_24dp.xml │ ├── ic_sentiment_very_satisfied_black_24dp.xml │ ├── ic_share_black_24dp.xml │ └── ic_whatshot_black_24dp.xml └── toggle/ └── drawable-anydpi-v21/ ├── ic_check_box_black_24dp.xml ├── ic_check_box_outline_blank_black_24dp.xml ├── ic_indeterminate_check_box_black_24dp.xml ├── ic_radio_button_checked_black_24dp.xml ├── ic_radio_button_unchecked_black_24dp.xml ├── ic_star_black_24dp.xml ├── ic_star_border_black_24dp.xml └── ic_star_half_black_24dp.xml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ ### Intellij ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm *.iml ## Directory-based project format: .idea/ # if you remove the above rule, at least ignore the following: # User-specific stuff: # .idea/workspace.xml # .idea/tasks.xml # .idea/dictionaries # Sensitive or high-churn files: # .idea/dataSources.ids # .idea/dataSources.xml # .idea/sqlDataSources.xml # .idea/dynamic.xml # .idea/uiDesigner.xml # Gradle: # .idea/gradle.xml # .idea/libraries # Mongo Explorer plugin: # .idea/mongoSettings.xml ## File-based project format: *.ipr *.iws ## Plugin-specific files: # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties ### Java ### *.class # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.ear # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* ### Specific ### *.zip !icon_packs.zip !libs/* ### Maven ### target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties ### Gradle ### .gradle build/ # Ignore Gradle GUI config gradle-app.setting # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar ================================================ FILE: .travis.yml ================================================ language: java jdk: - oraclejdk8 sudo: false env: matrix: - IDEA_VERSION=IC-14.0.4 - IDEA_VERSION=IC-14.1.6 - IDEA_VERSION=IC-15.0.2 - IDEA_VERSION=IC-2016.1 - IDEA_VERSION=IC-2016.2.4 - IDEA_VERSION=LATEST-EAP-SNAPSHOT global: - secure: GJxFEsmA6nJDtD45okB20WgXlfCY/Zaw90aOXxBAWb3w/7eeIFrolXev4ve+gxDettCArqcsPo53vpyimjFzRI8IZB+MZRnpPEVx3Ux/5eEBf2jMqsoaxmWk5rnKp3DTXjMlaAPSnUJRhrPboxdireQG2mIMa34QGv8tCcM2aLk= notifications: email: false branches: only: - master - develop before_script: - if [ $TRAVIS_BRANCH == 'develop' ]; then export PLUGIN_CHANNEL=nightly; fi script: - ./gradlew buildPlugin -PideaVersion=$IDEA_VERSION after_success: - curl -Lo travis_after_all.py https://raw.github.com/winterDroid/travis_after_all/master/travis_after_all.py - python travis_after_all.py - export $(cat .to_export_back) &> /dev/null - if [[ $BUILD_LEADER = YES && "$BUILD_AGGREGATE_STATUS" = "others_succeeded" && $TRAVIS_PULL_REQUEST = 'false' ]]; then ./gradlew publishPlugin; fi after_script: - echo leader=$BUILD_LEADER status=$BUILD_AGGREGATE_STATUS ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} 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. ================================================ FILE: README.md ================================================ ## Forker's note This fork came about because the original package stopped working somewhere around Android Studio 3.5. I have provided an installation zip [here](https://gpskaihu.nz/ADI-hack/). As at 31Jan2020 it is known to run nicely on AS 3.6 RC 1. Any [feedback](https://github.com/MPArnold/android-drawable-importer-intellij-plugin/issues/1) would be appreciated. # Android Drawable Importer Plugin ![alt text](src/main/resources/images/menu.png "New menu") This plugin consists of three main features. You can access them by **right-clicking** anywhere, but **not** on a file, inside an **Android (library) module** under **New**. ## AndroidIcons and Material Icons Drawable Import You are able to select the asset, specify your color, change the target resource name and select all the resolutions you want to import. All the missing folders will be created automatically. If there are already drawables with the same name, you will be warned. You can also import Vector Drawables from the Material Icons pack. You can even search for your desired asset by just start typing when the first spinner has focus. ![alt text](src/main/resources/images/icons_importer.png "Icons Import dialog") ![alt text](src/main/resources/images/vector_importer.png "Vector Drawable Importer dialog") *You can download AndroidIcons [here](http://www.androidicons.com/) and Material Icons [here](https://github.com/google/material-design-icons) for free.* ## Batch Drawable Import Select assets (or a whole folder) and specify the source resolutions. You can change the source size of every image as well. Specify all resolutions, to which it should be resized to. This works also with 9-Patch-Images. But take care: sometimes it's necessary to remove / add the one or other "pixel" in the 9-Patch-Editor. But just give it a try :) ![alt text](src/main/resources/images/scale.png "Batch Drawable Import dialog") ![alt text](src/main/resources/images/scale_add.png "Batch Drawable Import Add dialog") ![alt text](src/main/resources/images/scale_batch_edit.png "Batch Drawable Import batch edit dialog") ## Multisource-Drawable Ever got a zip with drawables for your Android project by your designer with the following structure? ``` root/ ./drawable_ldpi.png ./drawable_mdpi.png ./drawable_hdpi.png ./drawable_xhdpi.png ``` No problem! Now you can just select for every resolution a different asset, specify one name for them, and the rest is done by the plugin. Or even easier, you can select the whole zip, and this plugin will auto extract the asset to the best matching folder. ![alt text](src/main/resources/images/multi.png "Multi drawable sources import dialog") ![alt text](src/main/resources/images/multi_zip.png "Multi drawable sources import dialog for ZIP archives") *Hint: When you select an asset, you can also just drag a file from your explorer to the text field and drop it there.* ## Install Instructions (IntelliJ, Android Studio) **Step 1:** Open IntelliJ and click on the *Configure* button on the welcome screen. ![Welcome Screen](src/main/resources/images/instructions/welcome.png) Then click on the *Plugins* button to open the Plugins dialog. ![Welcome Screen - Plugins](src/main/resources/images/instructions/welcome_plugins.png) If your IntelliJ is already opened or was closed with an open project, go to the *Settings* in the *File* menu on Windows or the *Preferences..* in the *IntelliJ IDEA* menu. Select the *Plugins* option on the left pane. ![Settings](src/main/resources/images/instructions/settings.png) ![Settings - Plugins](src/main/resources/images/instructions/settings_plugins.png) **Step 2:** Click on the **Browse repositories...** button. ![Plugins](src/main/resources/images/instructions/browse.png) **Step 3:** Search for **Android Drawable Importer** and select the plugin from the list. Click on the *Install Plugin* button and verify the selection by pressing *Yes* afterwards. ![Install](src/main/resources/images/instructions/install.png) ![Verify](src/main/resources/images/instructions/verify.png) **Step 4:** Afterwards click on the *Close* button. If IntelliJ asks you to restart, allow it. ![Restart](src/main/resources/images/instructions/restart.png) # How to run the repository code 1. Clone `git clone git@github.com:winterDroid/android-drawable-importer-intellij-plugin.git` 2. Run Gradle Wrapper In project root. `./gradlew runIdea` # Contribution [![Build Status](https://travis-ci.org/winterDroid/android-drawable-importer-intellij-plugin.svg)](https://travis-ci.org/winterDroid/android-drawable-importer-intellij-plugin) 1. Fork it 2. Checkout develop branch `git checkout develop && git pull` 2. Create your feature branch `git checkout -b my-new-feature` 3. Commit your changes `git commit -am 'Add some feature'` 4. Squash all commits in your branch together `git rebase -i develop` 5. Push to the branch `git push origin my-new-feature` 6. Create new *Pull Request* # License Copyright 2014 Marc Prengemann 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. ================================================ FILE: build.gradle ================================================ plugins { //id "org.jetbrains.intellij" version "0.1.10" // https://mvnrepository.com/artifact/org.jetbrains.intellij/org.jetbrains.intellij.gradle.plugin id "org.jetbrains.intellij" version "0.4.15" } apply plugin: 'org.jetbrains.intellij' apply plugin: 'java' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 sourceSets { main { resources { exclude 'assets/android_icons' exclude 'assets/material_icons' } } } intellij { //version project.hasProperty('ideaVersion') ? ideaVersion : 'IC-2016.2.4' version project.hasProperty('ideaVersion') ? ideaVersion : 'IC-2019.2.4' // Define IntelliJ Platform against which to build the plugin project. //version '192.7142.36' // Same IntelliJ IDEA version (2019.2.4) for AS 3.6 RC 1 //type 'IC' // Use IntelliJ IDEA Community Edition //pluginName 'BDI-plugin' pluginName 'ADI-hack' //plugins 'android' plugins 'android', 'java' updateSinceUntilBuild false sameSinceUntilBuild false downloadSources !Boolean.valueOf(System.getenv('CI')) /*publish { username 'MPArnold' pluginId 'z7658' password System.getenv('PLUGIN_PASSWORD') channel System.getenv('PLUGIN_CHANNEL') ?: '' }*/ } //group 'de.mprengemann.intellij.plugin.androidicons' def majorVersion = '0.7' version "${Boolean.valueOf(System.getenv('CI')) ? "$majorVersion-${System.getenv('TRAVIS_BUILD_NUMBER')}" : "$majorVersion"}" repositories { mavenCentral() } dependencies { compile 'commons-io:commons-io:2.4' compile 'org.apache.commons:commons-math3:3.4.1' compile 'org.imgscalr:imgscalr-lib:4.2' compile 'net.coobird:thumbnailator:0.4.8' compile 'com.google.code.gson:gson:2.3.1' } ================================================ FILE: gradle/wrapper/gradle-wrapper.properties ================================================ #Wed Sep 30 13:40:53 CEST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-all.zip ================================================ FILE: gradle.properties ================================================ ## Project-wide Gradle settings. # # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true # org.gradle.jvmargs=-XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryError -Xmx4g ================================================ FILE: gradlew ================================================ #!/usr/bin/env bash ############################################################################## ## ## Gradle start up script for UN*X ## ############################################################################## # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS="" APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" warn ( ) { echo "$*" } die ( ) { echo echo "$*" echo exit 1 } # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false case "`uname`" in CYGWIN* ) cygwin=true ;; Darwin* ) darwin=true ;; MINGW* ) msys=true ;; esac # For Cygwin, ensure paths are in UNIX format before anything is touched. if $cygwin ; then [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` fi # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" # Need this for relative symlinks. while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done SAVED="`pwd`" cd "`dirname \"$PRG\"`/" >&- APP_HOME="`pwd -P`" cd "$SAVED" >&- CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD="java" which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi # Increase the maximum file descriptors if we can. if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then MAX_FD="$MAX_FD_LIMIT" fi ulimit -n $MAX_FD if [ $? -ne 0 ] ; then warn "Could not set maximum file descriptor limit: $MAX_FD" fi else warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" fi fi # For Darwin, add options to specify how the application appears in the dock if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi # For Cygwin, switch paths to Windows format before running java if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` SEP="" for dir in $ROOTDIRSRAW ; do ROOTDIRS="$ROOTDIRS$SEP$dir" SEP="|" done OURCYGPATTERN="(^($ROOTDIRS))" # Add a user-defined pattern to the cygpath arguments if [ "$GRADLE_CYGPATTERN" != "" ] ; then OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" fi # Now convert the arguments - kludge to limit ourselves to /bin/sh i=0 for arg in "$@" ; do CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` else eval `echo args$i`="\"$arg\"" fi i=$((i+1)) done case $i in (0) set -- ;; (1) set -- "$args0" ;; (2) set -- "$args0" "$args1" ;; (3) set -- "$args0" "$args1" "$args2" ;; (4) set -- "$args0" "$args1" "$args2" "$args3" ;; (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules function splitJvmOpts() { JVM_OPTS=("$@") } eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" ================================================ FILE: gradlew.bat ================================================ @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windowz variants if not "%OS%" == "Windows_NT" goto win9xME_args if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* goto execute :4NT_args @rem Get arguments from the 4NT Shell from JP Software set CMD_LINE_ARGS=%$ :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega ================================================ FILE: json_generator/__init__.py ================================================ __author__ = 'marcprengemann' ================================================ FILE: json_generator/json_generator.py ================================================ import json import os import io from itertools import izip, islice from os.path import join from PIL import Image root = 'src/main/resources/assets/' android_icons_url = 'http://www.androidicons.com/' material_icons_url = 'https://www.google.com/design/icons/' def convert_image(file): pil_img = Image.open(file) if pil_img.mode == '1': img = Image.open(file) img = img.convert('RGBA') datas = img.getdata() newData = [] for item in datas: if item[0] == 0 and item[1] == 0 and item[2] == 0: newData.append((0, 0, 0, 0)) else: newData.append(item) img.putdata(newData) img.save(file) def convert_images(): iconpack_root = join(root, 'android_icons') for color in list_dirs_only(iconpack_root): color_root = join(iconpack_root, color) for resolution in list_dirs_only(color_root): resolution_root = join(color_root, resolution) for image in list_images(resolution_root): convert_image(join(resolution_root, image)) iconpack_root = join(root, 'material_icons') for category in list_dirs_only(iconpack_root): category_root = join(iconpack_root, category) for resolution in list_dirs_only(category_root): resolution_root = join(category_root, resolution) for image in list_images(resolution_root): convert_image(join(resolution_root, image)) def get_android_icons_file(color, resolution, name): iconpack_root = join(root, 'android_icons') color_root = join(iconpack_root, color) resolution_root = join(color_root, resolution) full_name = name + '.png' return join(resolution_root, full_name) def handle_android_icons(): iconpack_root = join(root, 'android_icons') id = 'android_icons' colors = list_dirs_only(iconpack_root) firstcolordir = join(iconpack_root, colors[0]) resolutions = list_dirs_only(firstcolordir) assets = list_images(join(firstcolordir, resolutions[0])) packdata = {'name': 'Android Icons', 'id': id, 'url': android_icons_url, 'path': 'android_icons/', 'categories': ['all'] } assetdata = [] for asset in assets: name = os.path.splitext(asset)[0] data = {'name': name, 'pack': id, 'category': 'all', 'resolutions': resolutions, 'colors': colors, 'sizes': ['18dp']} assetdata.append(data) packdata['assets'] = assetdata return packdata def list_dirs_only(dir): return [f for f in os.listdir(dir) if os.path.isdir(join(dir, f))] def list_images(dir): return [f for f in os.listdir(dir) if f.endswith('.png')] def extract_data(icon_file_name): file_name = os.path.splitext(icon_file_name)[0] splits = file_name.split('_') size = splits[-1] splits.pop() color = splits[-1] splits.pop() name = '_'.join(splits) return name, color, size def get_material_icons_file(category, color, size, resolution, name): iconpack_root = join(root, 'material_icons') category_root = join(iconpack_root, category) resolution_root = join(category_root, 'drawable-' + resolution) full_name = "_".join([name, color, size]) + '.png' return join(resolution_root, full_name) def handle_material_icons(): iconpack_root = join(root, 'material_icons') categories = list_dirs_only(iconpack_root) id = 'material_icons' packdata = {'name': 'Material Icons', 'id': id, 'url': material_icons_url, 'path': 'material_icons/', 'categories': categories } assetdata = [] for category in categories: category_root = join(iconpack_root, category) resolutions = [s.split('-')[1] for s in list_dirs_only(category_root)] raw_assets = [extract_data(f) for f in list_images(join(category_root, 'drawable-' + resolutions[1]))] colors = [] sizes = [] for current_item, next_item in izip(raw_assets, islice(raw_assets, 1, None)): colors.append(current_item[1]) sizes.append(current_item[2]) if current_item[0] != next_item[0]: data = {'name': current_item[0], 'pack': id, 'category': category, 'resolutions': resolutions, 'colors': sorted(set(colors)), 'sizes': sorted(set(sizes))} assetdata.append(data) colors = [] sizes = [] continue packdata['assets'] = assetdata return packdata convert_images() android_icons_data = handle_android_icons() material_icons_data = handle_material_icons() packs = [android_icons_data, material_icons_data] with io.open(join(root, 'content.json'), 'w', encoding='utf-8') as f: f.write(unicode(json.dumps(packs, ensure_ascii=False))) print('Created json at ' + join(join(os.getcwd(), root), 'content.json')) ================================================ FILE: settings.gradle ================================================ rootProject.name = 'ADI-hack' ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/IProjectSettingsComponent.java ================================================ package de.mprengemann.intellij.plugin.androidicons; import com.intellij.openapi.components.ProjectComponent; public interface IProjectSettingsComponent extends ProjectComponent { } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/IconApplication.java ================================================ package de.mprengemann.intellij.plugin.androidicons; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.util.io.ZipUtil; import de.mprengemann.intellij.plugin.androidicons.controllers.DefaultControllerFactory; import de.mprengemann.intellij.plugin.androidicons.controllers.IControllerFactory; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.resources.ResourceLoader; import org.apache.commons.io.FileUtils; import org.jetbrains.annotations.NotNull; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.Properties; import static java.lang.String.format; public class IconApplication implements ApplicationComponent { private static final String TAG = IconApplication.class.getSimpleName(); private static final Logger LOGGER = Logger.getInstance(TAG); private IControllerFactory controllerFactory; @NotNull @Override public String getComponentName() { return getClass().getName(); } @Override public void initComponent() { IconPack androidIcons = null; IconPack materialIcons = null; try { // Instantiate the bundled IconPacks to be passed to the DefaultControllerFactory // This reads "content.json" and ALWAYS gets done. final BufferedReader fileReader = ResourceLoader.getBundledResReader("content.json"); assert fileReader != null; final Type listType = new TypeToken>() {}.getType(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Resolution.class, new Resolution.Deserializer()); final Gson gson = gsonBuilder.create(); final List iconPacks = gson.fromJson(fileReader, listType); androidIcons = iconPacks.get(0); LOGGER.info(format("%d androidIcons", androidIcons.getAssets().size())); materialIcons = iconPacks.get(1); LOGGER.info(format("%d materialIcons", materialIcons.getAssets().size())); // Get the bundled property file (/assets) ... String propFn = "icon_packs.properties"; Properties bundledIconPackProperties = new Properties(); bundledIconPackProperties.load(ResourceLoader.getBundledResourceStream(propFn)); // ... and compare 'version' with the local property file (/) boolean export; File propFile = new File(ResourceLoader.getExportPath(), propFn); // NB: Above line may create /home/[userId]/.AndroidStudio3.6/system/ADI-hack-export LOGGER.info(format("propFile.exists()=%b\n%s", propFile.exists(), propFile.getAbsolutePath())); if (!propFile.exists()) { export = true; } else { Properties localIconPackProperties = new Properties(); localIconPackProperties.load(FileUtils.openInputStream(propFile)); export = Integer.parseInt(bundledIconPackProperties.getProperty("version")) != Integer.parseInt(localIconPackProperties.getProperty("version")); } if (export) { LOGGER.info("Preparing Android Drawable Importer"); new Task.Modal(null, "Prepare Android Drawable Importer", false) { @Override public void run(@NotNull ProgressIndicator progressIndicator) { progressIndicator.setIndeterminate(true); // Extract the property file from the jar final File localProp = ResourceLoader.getFromJar(propFn); assert localProp != null; // "icon_packs.zip" contains: android_icons, material_icons, __MACOSX final File tempIconZip = ResourceLoader.getFromJar("icon_packs.zip"); assert tempIconZip != null; try { ZipUtil.extract(tempIconZip, ResourceLoader.getExportPath(), null, true); } catch (IOException e) { LOGGER.error(e); } tempIconZip.delete(); // No longer required LOGGER.info("Icon packs prepared. Android Drawable Importer installed."); } }.queue(); } } catch (Exception e) { LOGGER.error(e); } controllerFactory = new DefaultControllerFactory(androidIcons, materialIcons); } @Override public void disposeComponent() { controllerFactory.tearDown(); controllerFactory = null; } public IControllerFactory getControllerFactory() { return controllerFactory; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/ProjectSettingsComponent.java ================================================ package de.mprengemann.intellij.plugin.androidicons; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.IControllerFactory; import org.jetbrains.annotations.NotNull; public class ProjectSettingsComponent extends AbstractProjectComponent implements IProjectSettingsComponent { private IControllerFactory controllerFactory; protected ProjectSettingsComponent(Project project) { super(project); } @Override public void projectOpened() { this.controllerFactory.setProject(myProject); } @Override public void initComponent() { super.initComponent(); final IconApplication iconApplication = ApplicationManager.getApplication().getComponent(IconApplication.class); this.controllerFactory = iconApplication.getControllerFactory(); } @Override public void disposeComponent() { super.disposeComponent(); this.controllerFactory = null; } @NotNull @Override public String getComponentName() { return "ProjectSettingsComponent"; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/actions/AndroidAssetUtilsGroup.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; public class AndroidAssetUtilsGroup extends DefaultActionGroup { @Override public void update(AnActionEvent e) { super.update(e); AndroidFacetUtils.updateActionVisibility(e); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/actions/AndroidBatchImportAction.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.dialogs.AndroidBatchScaleImporter; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import icons.AndroidIcons; import org.jetbrains.annotations.NotNull; public class AndroidBatchImportAction extends AnAction { public AndroidBatchImportAction() { super("Batch Drawable Import", "Import drawables and scale them to the missing resolutions.", AndroidIcons.Android); } @Override public void actionPerformed(@NotNull AnActionEvent event) { Project project = getEventProject(event); Module module = event.getData(DataKeys.MODULE); AndroidBatchScaleImporter dialog = new AndroidBatchScaleImporter(project, module); dialog.show(); } @Override public void update(@NotNull AnActionEvent e) { AndroidFacetUtils.updateActionVisibility(e); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/actions/AndroidMultiDrawableAction.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.dialogs.AndroidMultiDrawableImporter; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import icons.AndroidIcons; import org.jetbrains.annotations.NotNull; public class AndroidMultiDrawableAction extends AnAction { public AndroidMultiDrawableAction() { super("Multisource-Drawable", "Imports several drawables into the associated resources folders and renames them.", AndroidIcons.Android); } @Override public void actionPerformed(@NotNull AnActionEvent event) { Project project = getEventProject(event); Module module = event.getData(DataKeys.MODULE); AndroidMultiDrawableImporter dialog = new AndroidMultiDrawableImporter(project, module); dialog.show(); } @Override public void update(@NotNull AnActionEvent e) { AndroidFacetUtils.updateActionVisibility(e); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/actions/IconsAction.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.dialogs.IconImporter; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import icons.AndroidIcons; import org.jetbrains.annotations.NotNull; public class IconsAction extends AnAction { public IconsAction() { super("Icon Pack Drawable Importer", "Creates a new Android Asset by the use of Google\'s Material Icons or Android Icons", AndroidIcons.Android); } @Override public void actionPerformed(@NotNull AnActionEvent event) { Project project = getEventProject(event); Module module = event.getData(DataKeys.MODULE); final IconImporter dialog = new IconImporter(project, module); dialog.show(); } @Override public void update(@NotNull AnActionEvent e) { AndroidFacetUtils.updateActionVisibility(e); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/actions/VectorsAction.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.dialogs.VectorImporter; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import icons.AndroidIcons; import org.jetbrains.annotations.NotNull; public class VectorsAction extends AnAction { public VectorsAction() { super("Vector Drawable Importer", "Creates a new Android Vector Asset by the use of Google\'s Material Icons", AndroidIcons.Android); } @Override public void actionPerformed(@NotNull AnActionEvent event) { Project project = getEventProject(event); Module module = event.getData(DataKeys.MODULE); final VectorImporter dialog = new VectorImporter(project, module); dialog.show(); } @Override public void update(@NotNull AnActionEvent e) { AndroidFacetUtils.updateActionVisibility(e); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/DefaultControllerFactory.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.DefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IIconsImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons.AndroidIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons.IAndroidIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.IMaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.MaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.SettingsController; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; public class DefaultControllerFactory implements IControllerFactory { private IAndroidIconsController androidIconsController; private IMaterialIconsController materialIconsController; private IDefaultsController defaultsController; private ISettingsController settingsController; private IIconsImporterController iconImporterController; public DefaultControllerFactory(IconPack androidIcons, IconPack materialIcons) { androidIconsController = new AndroidIconsController(androidIcons); materialIconsController = new MaterialIconsController(materialIcons); } @Override public void setProject(Project project) { if (project == null) { return; } getSettingsController().setProject(project); getDefaultsController().restore(); } @Override public IAndroidIconsController getAndroidIconsController() { return androidIconsController; } @Override public IMaterialIconsController getMaterialIconsController() { return materialIconsController; } @Override public IDefaultsController getDefaultsController() { if (defaultsController == null) { defaultsController = new DefaultsController(getSettingsController()); } return defaultsController; } @Override public ISettingsController getSettingsController() { if (settingsController == null) { settingsController = new SettingsController(); } return settingsController; } @Override public void tearDown() { if (materialIconsController != null) { materialIconsController.tearDown(); materialIconsController = null; } if (androidIconsController != null) { androidIconsController.tearDown(); androidIconsController = null; } if (defaultsController != null) { defaultsController.tearDown(); defaultsController = null; } if (settingsController != null) { settingsController.tearDown(); settingsController = null; } if (iconImporterController != null) { iconImporterController.tearDown(); iconImporterController = null; } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/IController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers; public interface IController { void addObserver(T observer); void removeObserver(T observer); void tearDown(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/IControllerFactory.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons.IAndroidIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.IMaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; public interface IControllerFactory { void setProject(Project project); IAndroidIconsController getAndroidIconsController(); IMaterialIconsController getMaterialIconsController(); IDefaultsController getDefaultsController(); ISettingsController getSettingsController(); void tearDown(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/BatchScaleImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import de.mprengemann.intellij.plugin.androidicons.dialogs.AddItemBatchScaleDialog; import de.mprengemann.intellij.plugin.androidicons.dialogs.EditItemsBatchScaleDialog; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class BatchScaleImporterController implements IBatchScaleImporterController { private Set observers; private Map> images; private Map sourceResolutions; private List sourceFiles; public BatchScaleImporterController() { this.observers = new HashSet(); this.images = new HashMap>(); this.sourceResolutions = new HashMap(); this.sourceFiles = new ArrayList() { @Override public boolean add(String s) { if (contains(s)) { return false; } return super.add(s); } }; notifyUpdated(); } @Override public void addObserver(BatchScaleImporterObserver observer) { observers.add(observer); observer.updated(); } @Override public void removeObserver(BatchScaleImporterObserver observer) { observers.remove(observer); } @Override public void tearDown() { observers.clear(); } @Override public void addImage(Resolution sourceResolution, List imageInformation) { if (imageInformation == null || imageInformation.isEmpty()) { return; } final String sourcePath = imageInformation.get(0).getImageFile().getAbsolutePath(); images.put(sourcePath, imageInformation); sourceFiles.add(sourcePath); sourceResolutions.put(sourcePath, sourceResolution); notifyUpdated(); } @Override public void editImages(Project project, Module module, int[] indices) { if (indices.length == 0) { return; } DialogWrapper dialogWrapper; if (indices.length == 1){ final int index = indices[0]; if (index >= sourceFiles.size() || 0 > index) { return; } final String sourceFile = sourceFiles.get(index); final List imageInformation = images.get(sourceFile); dialogWrapper = new AddItemBatchScaleDialog(project, module, this, sourceResolutions.get(sourceFile), imageInformation); } else { final List selectedFiles = new ArrayList(); for (int index : indices) { selectedFiles.add(sourceFiles.get(index)); } final List> imageInformation = new ArrayList>(); final List sourceResolution = new ArrayList(); for (String selectedFile : selectedFiles) { imageInformation.add(images.get(selectedFile)); sourceResolution.add(sourceResolutions.get(selectedFile)); } dialogWrapper = new EditItemsBatchScaleDialog(project, module, this, selectedFiles, sourceResolution, imageInformation); } dialogWrapper.show(); } @Override public void removeImages(int[] indices) { for (int index : indices) { if (index >= sourceFiles.size() || 0 > index) { return; } removeImage(sourceFiles.get(index)); } } @Override public void removeImage(String sourcePath) { if (!images.containsKey(sourcePath) && !sourceFiles.contains(sourcePath)) { return; } images.remove(sourcePath); sourceFiles.remove(sourcePath); sourceResolutions.remove(sourcePath); notifyUpdated(); } @Override public int getImageCount() { return sourceFiles.size(); } @Override public ImageInformation getImage(int index) { if (index >= sourceFiles.size() || 0 > index) { return null; } final List imageInformation = images.get(sourceFiles.get(index)); return imageInformation.get(0); } @Override public List getTargetResolutions(ImageInformation information) { final String sourcePath = information.getImageFile().getAbsolutePath(); if (!images.containsKey(sourcePath)) { return new ArrayList(); } final List imageInformations = images.get(sourcePath); final List resolutions = new ArrayList(); for (ImageInformation image : imageInformations) { resolutions.add(image.getTargetResolution()); } return resolutions; } @Override public RefactoringTask getExportTask(Project project) { RefactoringTask task = new RefactoringTask(project); for (String sourceFile : sourceFiles) { final List informationList = images.get(sourceFile); for (ImageInformation imageInformation : informationList) { task.addImage(imageInformation); } } return task; } private void notifyUpdated() { for (BatchScaleImporterObserver observer : observers) { observer.updated(); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/BatchScaleImporterObserver.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale; public interface BatchScaleImporterObserver { void updated(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/IBatchScaleImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.IController; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.util.List; public interface IBatchScaleImporterController extends IController { void addImage(Resolution sourceResolution, List imageInformation); void editImages(Project project, Module module, int[] indices); void removeImages(int[] indices); void removeImage(String sourcePath); int getImageCount(); ImageInformation getImage(int index); List getTargetResolutions(ImageInformation information); RefactoringTask getExportTask(Project project); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/additem/AddItemBatchScaleDialogObserver.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem; public interface AddItemBatchScaleDialogObserver { void updated(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/additem/AddItemBatchScaleImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem; import com.google.common.base.Objects; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.ExportNameUtils; import de.mprengemann.intellij.plugin.androidicons.util.RefactorUtils; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class AddItemBatchScaleImporterController implements IAddItemBatchScaleImporterController { private static final Logger LOGGER = Logger.getInstance(AddItemBatchScaleImporterController.class); private Set observers; private Set targetResolutions; private Resolution sourceResolution; private String exportName; private File imageFile; private int originalImageWidth; private int targetWidth; private int targetHeight; private String exportRoot; private ResizeAlgorithm algorithm; private String method; private float aspectRatio; private boolean isNinePatch; private Format format; private Destination destination; public AddItemBatchScaleImporterController(IDefaultsController defaultsController, String exportRoot, File file) { this.observers = new HashSet(); this.targetResolutions = defaultsController.getResolutions(); init(file); final String fileName = file.getName(); exportName = ExportNameUtils.getExportNameFromFilename(fileName); sourceResolution = defaultsController.getSourceResolution(); algorithm = defaultsController.getAlgorithm(); method = defaultsController.getMethod(); this.exportRoot = exportRoot; isNinePatch = fileName.endsWith(".9.png"); format = isNinePatch ? Format.PNG : defaultsController.getFormat(); destination = defaultsController.getDestination(); } public AddItemBatchScaleImporterController(Resolution sourceResolution, List information) { this.observers = new HashSet(); this.targetResolutions = new HashSet(); for (ImageInformation imageInformation : information) { targetResolutions.add(imageInformation.getTargetResolution()); } final ImageInformation baseInformation = information.get(0); init(baseInformation.getImageFile()); this.exportName = baseInformation.getExportName(); this.sourceResolution = sourceResolution; this.algorithm = baseInformation.getAlgorithm(); this.method = algorithm.getPrettyMethod(baseInformation.getMethod()); this.exportRoot = baseInformation.getExportPath(); this.isNinePatch = baseInformation.isNinePatch(); this.format = baseInformation.getFormat(); destination = baseInformation.getDestination(); this.targetHeight = getOriginalTargetSize(sourceResolution, baseInformation.getTargetResolution(), targetHeight, baseInformation.getFactor()); this.targetWidth = getOriginalTargetSize(sourceResolution, baseInformation.getTargetResolution(), targetWidth, baseInformation.getFactor()); } private void init(File file) { try { LOGGER.info(String.format("Adding file %s", file)); BufferedImage image = ImageIO.read(file); imageFile = file; originalImageWidth = image.getWidth(); targetWidth = image.getWidth(); targetHeight = image.getHeight(); aspectRatio = (float) image.getHeight() / (float) originalImageWidth; } catch (Exception e) { LOGGER.error(e); } } @Override public String getExportName() { return exportName; } @Override public String getExportPath() { return exportRoot; } @Override public Set getTargetResolutions() { return targetResolutions; } @Override public int getTargetWidth() { return targetWidth; } @Override public int getTargetHeight() { return targetHeight; } @Override public ResizeAlgorithm getAlgorithm() { return algorithm; } @Override public String getMethod() { return method; } @Override public File getImageFile() { return imageFile; } @Override public void setSourceResolution(Resolution resolution) { sourceResolution = resolution; notifyUpdated(); } @Override public Resolution getSourceResolution() { return sourceResolution; } @Override public void addTargetResolution(Resolution resolution) { if (targetResolutions.contains(resolution)) { return; } targetResolutions.add(resolution); notifyUpdated(); } @Override public void removeTargetResolution(Resolution resolution) { if (!targetResolutions.contains(resolution)) { return; } targetResolutions.remove(resolution); notifyUpdated(); } @Override public void setTargetHeight(int height) { if (targetHeight == height) { return; } targetHeight = height; targetWidth = (int) (targetHeight / aspectRatio); notifyUpdated(); } @Override public void setTargetWidth(int width) { if (targetWidth == width) { return; } targetWidth = width; targetHeight = (int) (aspectRatio * targetWidth); notifyUpdated(); } @Override public void setTargetRoot(String path) { if (exportRoot.equals(path)) { return; } exportRoot = path; notifyUpdated(); } @Override public void setExportName(String name) { if (exportName.equals(name)) { return; } exportName = name; notifyUpdated(); } @Override public void setAlgorithm(ResizeAlgorithm algorithm) { if (algorithm == this.algorithm) { return; } this.algorithm = algorithm; this.method = algorithm.getMethods().get(0); notifyUpdated(); } @Override public void setMethod(String method) { if (Objects.equal(method, this.method)) { return; } this.method = method; notifyUpdated(); } @Override public List getMethods() { return algorithm.getMethods(); } @Override public Format getFormat() { return format; } @Override public boolean isNinePatch() { return isNinePatch; } @Override public void setFormat(Format format) { if (this.format == format) { return; } this.format = format; notifyUpdated(); } @Override public Destination getDestination() { return destination; } @Override public void setDestination(Destination destination) { if (this.destination == destination) { return; } this.destination = destination; notifyUpdated(); } @Override public int[] getScaledSize(Resolution resolution) { final float scaleFactor = RefactorUtils.getScaleFactor(resolution, sourceResolution); return new int[] {(int) (scaleFactor * targetWidth), (int) (scaleFactor * targetHeight)}; } @Override public List getImageInformation(Project project) { final ImageInformation base = ImageInformation.newBuilder() .setExportName(exportName) .setImageFile(imageFile) .setAlgorithm(algorithm) .setMethod(algorithm.getMethod(method)) .setExportPath(exportRoot) .setNinePatch(isNinePatch) .setFormat(format) .setDestination(destination) .build(); final List images = new ArrayList(); for (Resolution resolution : targetResolutions) { images.add(ImageInformation.newBuilder(base) .setTargetResolution(resolution) .setFactor(getRealScaleFactor(resolution)) .build()); } return images; } @Override public List getImageInformation(Project project, String selectedFile, List imageInformation, Resolution sourceResolution) { final ImageInformation base = ImageInformation.newBuilder(imageInformation.get(0)) .setAlgorithm(algorithm) .setMethod(algorithm.getMethod(method)) .setExportPath(exportRoot) .setFormat(format) .build(); final List images = new ArrayList(); for (Resolution resolution : targetResolutions) { images.add(ImageInformation.newBuilder(base) .setTargetResolution(resolution) .setFactor(getRealScaleFactor(resolution)) .build()); } return images; } private float getRealScaleFactor(Resolution targetResolution) { final float resolutionScaleFactor = RefactorUtils.getScaleFactor(targetResolution, sourceResolution); final float sizeScaleFactor = (float) targetWidth / (float) originalImageWidth; return resolutionScaleFactor * sizeScaleFactor; } private int getOriginalTargetSize(Resolution sourceResolution, Resolution targetResolution, int size, float factor) { final float resolutionScaleFactor = RefactorUtils.getScaleFactor(targetResolution, sourceResolution); final float sizeScaleFactor = factor / resolutionScaleFactor; return (int) (sizeScaleFactor * size); } @Override public void addObserver(AddItemBatchScaleDialogObserver observer) { observers.add(observer); notifyUpdated(); } @Override public void removeObserver(AddItemBatchScaleDialogObserver observer) { observers.remove(observer); } @Override public void tearDown() { observers.clear(); } private void notifyUpdated() { for (AddItemBatchScaleDialogObserver observer : observers) { observer.updated(); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/batchscale/additem/IAddItemBatchScaleImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.IController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.io.File; import java.util.List; import java.util.Set; public interface IAddItemBatchScaleImporterController extends IController { String getExportName(); String getExportPath(); Set getTargetResolutions(); int getTargetWidth(); int getTargetHeight(); ResizeAlgorithm getAlgorithm(); String getMethod(); File getImageFile(); void setSourceResolution(Resolution resolution); Resolution getSourceResolution(); void addTargetResolution(Resolution resolution); void removeTargetResolution(Resolution resolution); void setTargetHeight(int height); void setTargetWidth(int width); void setTargetRoot(String path); void setExportName(String name); void setAlgorithm(ResizeAlgorithm algorithm); void setMethod(String method); void setFormat(Format format); void setDestination(Destination destination); List getMethods(); Format getFormat(); Destination getDestination(); boolean isNinePatch(); int[] getScaledSize(Resolution resolution); List getImageInformation(Project project); List getImageInformation(Project project, String selectedFile, List imageInformation, Resolution sourceResolution); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/defaults/DefaultsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.defaults; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.util.Arrays; import java.util.HashSet; import java.util.Set; public class DefaultsController implements IDefaultsController { public static final HashSet DEFAULT_RESOLUTIONS = new HashSet(Arrays.asList(Resolution.MDPI, Resolution.HDPI, Resolution.XHDPI, Resolution.XXHDPI, Resolution.XXXHDPI)); public static final Resolution DEFAULT_SOURCE_RESOLUTION = Resolution.XHDPI; public static final ResizeAlgorithm DEFAULT_ALGORITHM = ResizeAlgorithm.SCALR; public static final String DEFAULT_METHOD = DEFAULT_ALGORITHM.getMethods().get(0); public static final Format DEFAULT_FORMAT = Format.PNG; public static final Destination DEFAULT_DESTINATION = Destination.DRAWABLE; private Set resolutions; private Resolution sourceResolution; private ImageAsset imageAsset; private ISettingsController settingsController; private ResizeAlgorithm algorithm; private String method; private Format format; private Destination destination; private String size; private String color; public DefaultsController(ISettingsController settingsController) { this.settingsController = settingsController; } @Override public Set getResolutions() { return resolutions; } @Override public void setResolutions(Set resolutions) { this.resolutions = resolutions; settingsController.saveResolutions(this.resolutions); } @Override public ImageAsset getImageAsset() { return imageAsset; } @Override public void setImageAsset(ImageAsset imageAsset) { this.imageAsset = imageAsset; settingsController.saveImageAsset(this.imageAsset); } @Override public Resolution getSourceResolution() { return sourceResolution; } @Override public void setSourceResolution(Resolution sourceResolution) { this.sourceResolution = sourceResolution; settingsController.saveSourceResolution(this.sourceResolution); } @Override public String getSize() { return size; } @Override public void setSize(String size) { this.size = size; settingsController.saveSize(this.size); } @Override public String getColor() { return color; } @Override public void setColor(String color) { this.color = color; settingsController.saveColor(this.color); } @Override public ResizeAlgorithm getAlgorithm() { return algorithm; } @Override public void setAlgorithm(ResizeAlgorithm algorithm) { this.algorithm = algorithm; settingsController.saveAlgorithm(this.algorithm); } @Override public String getMethod() { return method; } @Override public void setMethod(String method) { this.method = method; settingsController.saveMethod(this.method); } @Override public Format getFormat() { return format; } @Override public void setFormat(Format format) { this.format = format; settingsController.saveFormat(this.format); } @Override public Destination getDestination() { return destination; } @Override public void setDestination(Destination destination) { this.destination = destination; settingsController.saveDestination(this.destination); } @Override public void restore() { imageAsset = settingsController.getImageAsset(); resolutions = settingsController.getResolutions(DEFAULT_RESOLUTIONS); sourceResolution = settingsController.getSourceResolution(DEFAULT_SOURCE_RESOLUTION); algorithm = settingsController.getAlgorithm(DEFAULT_ALGORITHM); format = settingsController.getFormat(DEFAULT_FORMAT); destination = settingsController.getDestination(DEFAULT_DESTINATION); method = settingsController.getMethod(DEFAULT_METHOD); color = settingsController.getColor(); size = settingsController.getSize(); } @Override public void tearDown() { resolutions = null; imageAsset = null; sourceResolution = null; size = null; color = null; algorithm = null; format = null; destination = null; method = null; settingsController = null; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/defaults/IDefaultsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.defaults; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.util.Set; public interface IDefaultsController { Set getResolutions(); void setResolutions(Set resolutions); ImageAsset getImageAsset(); void setImageAsset(ImageAsset imageAsset); Resolution getSourceResolution(); void setSourceResolution(Resolution sourceResolution); String getSize(); void setSize(String size); String getColor(); void setColor(String color); ResizeAlgorithm getAlgorithm(); void setAlgorithm(ResizeAlgorithm algorithm); String getMethod(); void setMethod(String method); Format getFormat(); void setFormat(Format format); Destination getDestination(); void setDestination(Destination destination); void restore(); void tearDown(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/iconimporter/IIconsImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.IController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.IIconPackController; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.io.File; import java.util.List; import java.util.Set; public interface IIconsImporterController extends IController{ void setExportRoot(String exportRoot); void setSelectedIconPack(String iconPack); void setSelectedCategory(String category); void setSelectedAsset(ImageAsset asset); void setSelectedSize(String size); void setSelectedColor(String color); void setExportName(String exportName); String getExportName(); String getExportRoot(); File getImageFile(ImageAsset asset, String color, Resolution resolution); File getThumbnailFile(ImageAsset asset); File getSelectedImageFile(); ImageAsset getSelectedAsset(); File getSelectedImageFile(Resolution resolution); List getCategories(); List getAssets(); List getSizes(); List getColors(); String getSelectedSize(); String getSelectedColor(); IIconPackController getSelectedIconPack(); String getSelectedCategory(); void setFormat(Format format); boolean isNinePatch(); Format getFormat(); RefactoringTask getTask(Project project); void setExportResolution(Resolution resolution, boolean export); Set getExportResolutions(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/iconimporter/IconsImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter; import com.intellij.openapi.project.Project; import com.jgoodies.common.base.Objects; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.IIconPackController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons.IAndroidIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.IMaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.RefactorUtils; import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class IconsImporterController implements IIconsImporterController { private final Set observerSet; private final IAndroidIconsController androidIconsController; private final IMaterialIconsController materialIconsController; private Set exportResolutions; private ImageAsset selectedAsset; private String selectedSize; private String selectedColor; private Format format; private String exportName; private String exportRoot; public IconsImporterController(IDefaultsController defaultsController, IAndroidIconsController androidIconsController, IMaterialIconsController materialIconsController) { this.androidIconsController = androidIconsController; this.materialIconsController = materialIconsController; this.observerSet = new HashSet(); final ImageAsset defaultImageAsset = defaultsController.getImageAsset(); if (defaultImageAsset == null) { final String category = materialIconsController.getCategories().get(0); setSelectedAsset(materialIconsController.getAssets(category).get(0)); } else { this.selectedSize = defaultsController.getSize(); this.selectedColor = defaultsController.getColor(); setSelectedAsset(defaultImageAsset); } this.format = Format.PNG; this.exportName = null; this.exportResolutions = defaultsController.getResolutions(); } public IconsImporterController(IDefaultsController defaultsController, IMaterialIconsController materialIconsController) { this.androidIconsController = null; this.materialIconsController = materialIconsController; this.observerSet = new HashSet(); final ImageAsset defaultImageAsset = defaultsController.getImageAsset(); if (defaultImageAsset == null || !defaultImageAsset.getIconPack().equals(materialIconsController.getIconPack().getId())) { final String category = materialIconsController.getCategories().get(0); setSelectedAsset(materialIconsController.getAssets(category).get(0)); } else { setSelectedAsset(defaultImageAsset); } this.exportName = null; this.format = Format.XML; this.exportResolutions = Collections.singleton(Resolution.ANYDPI); } @Override public void addObserver(IconsImporterObserver observer) { observerSet.add(observer); notifyUpdated(); } @Override public void removeObserver(IconsImporterObserver observer) { observerSet.remove(observer); } @Override public void tearDown() { observerSet.clear(); } @Override public void setExportRoot(String exportRoot) { if (exportRoot.equals(this.exportRoot)) { return; } this.exportRoot = exportRoot; notifyUpdated(); } @Override public void setSelectedIconPack(String iconPack) { if (selectedAsset.getIconPack().equals(iconPack)) { return; } final IIconPackController controller = getControllerForIconPackId(iconPack); final String category = controller.getCategories().get(0); selectedAsset = controller.getAssets(category).get(0); updateColorAndSize(); notifyUpdated(); } @NotNull private IIconPackController getControllerForIconPackId(String iconPack) { IIconPackController controller; if (materialIconsController.getId().equals(iconPack)) { controller = materialIconsController; } else if (androidIconsController != null && androidIconsController.getId().equals(iconPack)) { controller = androidIconsController; } else { throw new IllegalArgumentException(iconPack + " not found!"); } return controller; } @Override public void setSelectedCategory(String category) { if (selectedAsset.getCategory().equals(category)) { return; } selectedAsset = materialIconsController.getAssets(category).get(0); updateColorAndSize(); notifyUpdated(); } @Override public void setSelectedAsset(ImageAsset asset) { selectedAsset = asset; updateColorAndSize(); notifyUpdated(); } private void updateColorAndSize() { if (!selectedAsset.getColors().contains(selectedColor)) { selectedColor = selectedAsset.getColors().get(0); } if (!selectedAsset.getSizes().contains(selectedSize)) { selectedSize = selectedAsset.getSizes().get(0); } } @Override public void setSelectedSize(String size) { if (selectedSize.equals(size) && selectedAsset.getSizes().contains(size)) { return; } selectedSize = size; if (!selectedAsset.getSizes().contains(selectedSize)) { selectedSize = selectedAsset.getSizes().get(0); } notifyUpdated(); } @Override public void setSelectedColor(String color) { if (selectedColor.equals(color) && selectedAsset.getColors().contains(color)) { return; } selectedColor = color; if (!selectedAsset.getColors().contains(selectedColor)) { selectedSize = selectedAsset.getColors().get(0); } notifyUpdated(); } @Override public void setExportName(String exportName) { if (exportName.equals(selectedAsset.getName())) { exportName = null; } if (Objects.equals(exportName, this.exportName)) { return; } this.exportName = exportName; notifyUpdated(); } @Override public String getExportName() { return exportName != null ? exportName : selectedAsset.getName(); } @Override public String getExportRoot() { return exportRoot; } @Override public File getImageFile(ImageAsset asset, String color, Resolution resolution) { return getSelectedIconPack().getImageFile(asset, color, resolution); } @Override public File getThumbnailFile(ImageAsset asset) { final IIconPackController iconPackController = getControllerForIconPackId(asset.getIconPack()); return iconPackController.getImageFile(asset, "black", iconPackController.getThumbnailResolution()); } @Override public File getSelectedImageFile() { return getSelectedImageFile(Resolution.HDPI); } @Override public File getSelectedImageFile(Resolution resolution) { final IIconPackController iconPackController = getSelectedIconPack(); return iconPackController.getImageFile(selectedAsset, selectedColor, selectedSize, resolution); } @Override public List getCategories() { return getSelectedIconPack().getCategories(); } @Override public List getAssets() { return getSelectedIconPack().getAssets(selectedAsset.getCategory()); } @Override public List getSizes() { return selectedAsset.getSizes(); } @Override public List getColors() { return selectedAsset.getColors(); } @Override public ImageAsset getSelectedAsset() { return selectedAsset; } @Override public String getSelectedSize() { return selectedSize; } @Override public String getSelectedColor() { return selectedColor; } @Override public IIconPackController getSelectedIconPack() { return getControllerForIconPackId(selectedAsset.getIconPack()); } @Override public String getSelectedCategory() { return selectedAsset.getCategory(); } @Override public void setFormat(Format format) { if (this.format == format) { return; } this.format = isNinePatch() ? Format.PNG : format; notifyUpdated(); } @Override public boolean isNinePatch() { return false; } @Override public Format getFormat() { return format; } @Override public RefactoringTask getTask(Project project) { final RefactoringTask task = new RefactoringTask(project); final ImageInformation baseInformation = ImageInformation.newBuilder() .setExportName(getExportName()) .setExportPath(getExportRoot()) .setFormat(getFormat()) .build(); for (Resolution resolution : exportResolutions) { ImageInformation.Builder imageInformationBuilder = ImageInformation.newBuilder(baseInformation); imageInformationBuilder.setTargetResolution(resolution); imageInformationBuilder.setVector(resolution == Resolution.ANYDPI); final File selectedImageFile; if (getSelectedAsset().getResolutions().contains(resolution)) { selectedImageFile = getSelectedImageFile(resolution); } else { if (getSelectedIconPack().getId().equals(materialIconsController.getIconPack().getId())) { selectedImageFile = getSelectedImageFile(Resolution.HDPI); imageInformationBuilder.setFactor(RefactorUtils.getScaleFactor(resolution, Resolution.HDPI)); } else if (androidIconsController != null && getSelectedIconPack().getId().equals(androidIconsController.getIconPack().getId())) { selectedImageFile = getSelectedImageFile(Resolution.XXHDPI); imageInformationBuilder.setFactor(RefactorUtils.getScaleFactor(resolution, Resolution.XXHDPI)); } else { throw new IllegalStateException(); } } imageInformationBuilder.setImageFile(selectedImageFile); task.addImage(imageInformationBuilder.build()); } return task; } @Override public void setExportResolution(Resolution resolution, boolean export) { if (exportResolutions.contains(resolution) && !export) { exportResolutions.remove(resolution); } else if (!exportResolutions.contains(resolution) && export) { exportResolutions.add(resolution); } } @Override public Set getExportResolutions() { return exportResolutions; } private void notifyUpdated() { for (IconsImporterObserver observer : observerSet) { observer.updated(); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/iconimporter/IconsImporterObserver.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter; public interface IconsImporterObserver { void updated(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/IIconPackController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.icons; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.io.File; import java.util.List; public interface IIconPackController { String getId(); List getAssets(String category); List getAssets(List categories); File getImageFile(ImageAsset asset, String color, Resolution resolution); File getImageFile(ImageAsset asset, String color, String size, Resolution resolution); void tearDown(); List getCategories(); IconPack getIconPack(); boolean supportsVectors(); Resolution getThumbnailResolution(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/androidicons/AndroidIconsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.resources.ResourceLoader; import java.io.File; import java.util.List; import java.util.Locale; public class AndroidIconsController implements IAndroidIconsController { private IconPack iconPack; public AndroidIconsController(IconPack iconPack) { this.iconPack = iconPack; } @Override public String getId() { return iconPack.getId(); } @Override public IconPack getIconPack() { return iconPack; } @Override public boolean supportsVectors() { return false; } @Override public Resolution getThumbnailResolution() { return Resolution.LDPI; } @Override public List getAssets(String category) { return iconPack.getAssets(); } @Override public List getAssets(List categories) { return iconPack.getAssets(); } @Override public List getCategories() { return iconPack.getCategories(); } @Override public File getImageFile(ImageAsset asset, String color, Resolution resolution) { return getImageFile(asset, color, null, resolution); } @Override public File getImageFile(ImageAsset asset, String color, String size, Resolution resolution) { if (resolution == Resolution.ANYDPI) { throw new IllegalStateException("Vectors not supported by AndroidIcons"); } final String localPath = String.format("%s/%s/%s.png", color, resolution.toString().toLowerCase(Locale.ENGLISH), asset.getName()); return ResourceLoader.getAssetResource(new File(iconPack.getPath(), localPath).getPath()); } @Override public void tearDown() { iconPack = null; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/androidicons/IAndroidIconsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.IIconPackController; public interface IAndroidIconsController extends IIconPackController { } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/materialicons/IMaterialIconsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.IIconPackController; public interface IMaterialIconsController extends IIconPackController { void openHelp(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/materialicons/MaterialIconsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.intellij.ide.BrowserUtil; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.resources.ResourceLoader; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; public class MaterialIconsController implements IMaterialIconsController { private IconPack iconPack; private Map> categoryMap; public MaterialIconsController(IconPack iconPack) { this.iconPack = iconPack; this.categoryMap = initCategoryMap(iconPack); } private HashMap> initCategoryMap(IconPack iconPack) { final HashMap> categoryMap = Maps.newHashMap(); if (iconPack == null) { return categoryMap; } for (String category : iconPack.getCategories()) { categoryMap.put(category, Lists.newArrayList()); } for (ImageAsset asset : iconPack.getAssets()) { categoryMap.get(asset.getCategory()).add(asset); } return categoryMap; } @Override public String getId() { return iconPack.getId(); } @Override public IconPack getIconPack() { return iconPack; } @Override public boolean supportsVectors() { return true; } @Override public Resolution getThumbnailResolution() { return Resolution.MDPI; } @Override public List getAssets(String category) { return categoryMap.get(category); } @Override public List getAssets(List categories) { return iconPack.getAssets(); } @Override public List getCategories() { return iconPack.getCategories(); } @Override public void openHelp() { BrowserUtil.browse(iconPack.getUrl()); } @Override public File getImageFile(ImageAsset asset, String color, Resolution resolution) { return getImageFile(asset, color, "24dp", resolution); } @Override public File getImageFile(ImageAsset asset, String color, String size, Resolution resolution) { final String localPath; if (resolution == Resolution.ANYDPI) { localPath = getVectorFilePath(asset); } else { localPath = getImageFilePath(asset, color, size, resolution); } return ResourceLoader.getAssetResource(new File(iconPack.getPath(), localPath).getPath()); } private String getImageFilePath(ImageAsset asset, String color, String size, Resolution resolution) { return String.format("%s/drawable-%s/%s_%s_%s.png", asset.getCategory(), resolution.toString().toLowerCase(Locale.ENGLISH), asset.getName(), color, size); } private String getVectorFilePath(ImageAsset asset) { return String.format("%s/drawable-%s-v21/%s_black_24dp.xml", asset.getCategory(), Resolution.ANYDPI.toString().toLowerCase(Locale.ENGLISH), asset.getName()); } @Override public void tearDown() { iconPack = null; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/multi/IMultiImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.multi; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.IController; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.io.File; import java.util.List; import java.util.Map; public interface IMultiImporterController extends IController { String getTargetRoot(); void setTargetRoot(File path); void addImage(File source, Resolution target); RefactoringTask getTask(Project project); void addZipImage(File file, Resolution resolution); Map> getZipImages(); void resetZipInformation(); RefactoringTask getZipTask(Project project, File tempDir); void setExportName(String exportName); String getExportName(); File getMostRecentImage(); void setMostRecentImage(Resolution resolution); boolean containsNinePatch(); Format getFormat(); void setFormat(Format format); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/multi/MultiImporterController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.multi; import com.google.common.base.Objects; import com.intellij.openapi.project.Project; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.images.RefactoringTask; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.ExportNameUtils; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class MultiImporterController implements IMultiImporterController { private Set observers; private Map> zipImageInformationMap; private Map imageInformationMap; private String targetRoot; private String exportName; private Resolution mostRecentResolution; private Format format; public MultiImporterController(IDefaultsController defaultsController) { this.observers = new HashSet(); this.imageInformationMap = new HashMap(); this.zipImageInformationMap = new HashMap>(); this.format = defaultsController.getFormat(); } @Override public void addObserver(MultiImporterObserver observer) { observers.add(observer); observer.updated(); } @Override public void removeObserver(MultiImporterObserver observer) { observers.remove(observer); } @Override public String getTargetRoot() { return targetRoot; } @Override public void setTargetRoot(File path) { if (Objects.equal(targetRoot, path.getAbsolutePath())) { return; } targetRoot = path.getAbsolutePath(); notifyUpdated(); } @Override public void addImage(File source, Resolution resolution) { imageInformationMap.put(resolution, ImageInformation.newBuilder() .setImageFile(source) .setNinePatch(source.getName().endsWith(".9.png")) .setTargetResolution(resolution) .build()); mostRecentResolution = resolution; setFormat(format); if (TextUtils.isEmpty(exportName)) { exportName = ExportNameUtils.getExportNameFromFilename(source.getName()); } notifyUpdated(); } @Override public void addZipImage(File source, Resolution resolution) { if (!zipImageInformationMap.containsKey(resolution)) { zipImageInformationMap.put(resolution, new ArrayList()); } final String fileName = FilenameUtils.getBaseName(source.getName()) .replaceAll("(?i)[-_]+" + resolution.toString(), ""); zipImageInformationMap.get(resolution).add(ImageInformation.newBuilder() .setImageFile(source) .setTargetResolution(resolution) .setFormat(format) .setNinePatch(source.getName().endsWith(".9.png")) .setExportName(fileName) .build()); } @Override public Map> getZipImages() { return zipImageInformationMap; } @Override public void resetZipInformation() { zipImageInformationMap.clear(); } @Override public RefactoringTask getTask(Project project) { RefactoringTask task = new RefactoringTask(project); for (Resolution resolution : imageInformationMap.keySet()) { task.addImage(ImageInformation.newBuilder(imageInformationMap.get(resolution)) .setExportPath(targetRoot) .setExportName(exportName) .setFormat(format) .build()); } return task; } @Override public RefactoringTask getZipTask(Project project, File tempDir) { RefactoringTask task = new ZipRefactoringTask(project, tempDir); for (Resolution resolution : zipImageInformationMap.keySet()) { for (ImageInformation imageInformation : zipImageInformationMap.get(resolution)) { task.addImage(ImageInformation.newBuilder(imageInformation) .setExportPath(targetRoot) .build()); } } return task; } @Override public void setExportName(String exportName) { if (Objects.equal(exportName, this.exportName)) { return; } this.exportName = ExportNameUtils.getExportNameFromFilename(exportName); notifyUpdated(); } @Override public String getExportName() { return exportName; } @Override public File getMostRecentImage() { if (!imageInformationMap.containsKey(mostRecentResolution)) { return null; } return imageInformationMap.get(mostRecentResolution).getImageFile(); } @Override public void setMostRecentImage(Resolution resolution) { if (resolution == mostRecentResolution) { return; } this.mostRecentResolution = resolution; notifyUpdated(); } private void notifyUpdated() { for (MultiImporterObserver observer : observers) { observer.updated(); } } @Override public boolean containsNinePatch() { for (ImageInformation information : imageInformationMap.values()) { if (information.isNinePatch()) { return true; } } return false; } @Override public Format getFormat() { return format; } @Override public void setFormat(Format format) { if (this.format == format) { return; } this.format = containsNinePatch() ? Format.PNG : format; notifyUpdated(); } @Override public void tearDown() { observers.clear(); } private static class ZipRefactoringTask extends RefactoringTask { private File tempDir; public ZipRefactoringTask(Project project, File tempDir) { super(project); this.tempDir = tempDir; } @Override public boolean shouldStartInBackground() { return false; } @Override protected void onPostExecute() { FileUtils.deleteQuietly(tempDir); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/multi/MultiImporterObserver.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.multi; public interface MultiImporterObserver { void updated(); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/settings/ISettingsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.settings; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import de.mprengemann.intellij.plugin.androidicons.controllers.IController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import java.util.Set; public interface ISettingsController extends IController { void saveResRootForProject(String fileUrl); VirtualFile getResourceRoot(); String getResourceRootPath(); String getLastImageFolder(); void saveLastImageFolder(String fileUrl); void setProject(Project project); void saveResolutions(Set resolutions); Set getResolutions(Set defaultResolutions); void saveSourceResolution(Resolution sourceResolution); Resolution getSourceResolution(Resolution defaultSourceResolution); void saveAlgorithm(ResizeAlgorithm algorithm); ResizeAlgorithm getAlgorithm(ResizeAlgorithm defaultAlgorithm); void saveMethod(String method); String getMethod(String defaultMethod); void saveColor(String color); String getColor(); void saveSize(String size); String getSize(); void saveImageAsset(ImageAsset imageAsset); ImageAsset getImageAsset(); void saveFormat(Format format); Format getFormat(Format defaultFormat); void saveDestination(Destination destination); Destination getDestination(Destination defaultDestination); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/settings/SettingsController.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.settings; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.Base64; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SettingsController implements ISettingsController { private static final String RES_ROOT = "resourcesRoot"; private static final String LAST_FOLDER_ROOT = "lastFolderRoot"; private static final String RESOLUTIONS = "resolutions"; private static final String SOURCE_RESOLUTION = "sourceResolution"; private static final String ALGORITHM = "algorithm"; private static final String METHOD = "method"; private static final String COLOR = "color"; private static final String SIZE = "size"; private static final String ASSET = "asset"; private static final String FORMAT = "format"; private static final String DESTINATION = "destination"; private Set observerSet; private Project project; public SettingsController() { observerSet = new HashSet(); } @Override public void addObserver(SettingsObserver observer) { observerSet.add(observer); } @Override public void removeObserver(SettingsObserver observer) { observerSet.remove(observer); } @Override public void saveResRootForProject(String fileUrl) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); propertiesComponent.setValue(RES_ROOT, fileUrl); } @Override public VirtualFile getResourceRoot() { String persistedFile = getResourceRootPath(); if (persistedFile != null) { return VirtualFileManager.getInstance().findFileByUrl(persistedFile); } else { return null; } } @Override public String getResourceRootPath() { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); return propertiesComponent.getValue(RES_ROOT); } @Override public String getLastImageFolder() { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); return propertiesComponent.getValue(LAST_FOLDER_ROOT); } @Override public void saveLastImageFolder(String fileUrl) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); propertiesComponent.setValue(LAST_FOLDER_ROOT, fileUrl); } @Override public void setProject(Project project) { this.project = project; } @Override public void saveResolutions(Set resolutions) { String[] tmp = new String[resolutions.size()]; int i=0; for (Iterator iterator = resolutions.iterator(); iterator.hasNext(); i++) { Resolution resolution = iterator.next(); tmp[i] = resolution.toString(); } PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); propertiesComponent.setValues(RESOLUTIONS, tmp); } @Override public Set getResolutions(Set defaultResolutions) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); String[] values = propertiesComponent.getValues(RESOLUTIONS); if (values == null) { return defaultResolutions; } Set resolutions = new HashSet(); for (String value : values) { if (TextUtils.isEmpty(value)) { return defaultResolutions; } final Resolution resolution = Resolution.from(value); if (resolution == null) { return defaultResolutions; } resolutions.add(resolution); } return resolutions; } @Override public void saveSourceResolution(Resolution sourceResolution) { updateOrDelete(SOURCE_RESOLUTION, sourceResolution); } @Override public Resolution getSourceResolution(Resolution defaultResolution) { return Resolution.from(getOrDefault(SOURCE_RESOLUTION, defaultResolution.toString())); } @Override public void saveAlgorithm(ResizeAlgorithm algorithm) { updateOrDelete(ALGORITHM, algorithm); } @Override public ResizeAlgorithm getAlgorithm(ResizeAlgorithm defaultAlgorithm) { return ResizeAlgorithm.from(getOrDefault(ALGORITHM, defaultAlgorithm.toString())); } @Override public void saveMethod(String method) { updateOrDelete(METHOD, method); } @Override public String getMethod(String defaultMethod) { return getOrDefault(METHOD, defaultMethod); } @Override public void saveColor(String color) { updateOrDelete(COLOR, color); } @Override public String getColor() { return getOrDefault(COLOR, null); } @Override public void saveSize(String size) { updateOrDelete(SIZE, size); } @Override public String getSize() { return getOrDefault(SIZE, null); } @Override public void saveImageAsset(ImageAsset imageAsset) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); if (imageAsset == null) { propertiesComponent.unsetValue(ASSET); return; } String serializedImageAsset = null; ByteArrayOutputStream bo = null; ObjectOutputStream so = null; try { bo = new ByteArrayOutputStream(); so = new ObjectOutputStream(bo); so.writeObject(imageAsset); so.flush(); serializedImageAsset = Base64.encode(bo.toByteArray()); } catch (IOException e) { e.printStackTrace(); } finally { StreamUtil.closeStream(so); StreamUtil.closeStream(bo); } if (serializedImageAsset == null) { propertiesComponent.unsetValue(ASSET); return; } propertiesComponent.setValue(ASSET, serializedImageAsset); } @Override public ImageAsset getImageAsset() { final String serializedImageAsset = getOrDefault(ASSET, null); if (serializedImageAsset == null) { return null; } ByteArrayInputStream bi = null; ObjectInputStream si = null; try { byte b[] = Base64.decode(serializedImageAsset); bi = new ByteArrayInputStream(b); si = new ObjectInputStream(bi); return (ImageAsset) si.readObject(); } catch (Exception e) { e.printStackTrace(); } finally { StreamUtil.closeStream(si); StreamUtil.closeStream(bi); } return null; } @Override public void saveFormat(Format format) { updateOrDelete(FORMAT, format); } @Override public Format getFormat(Format defaultFormat) { return Format.valueOf(getOrDefault(FORMAT, defaultFormat.toString())); } @Override public void saveDestination(Destination destination) { updateOrDelete(DESTINATION, destination); } @Override public Destination getDestination(Destination defaultDestination) { return Destination.valueOf(getOrDefault(DESTINATION, defaultDestination.toString())); } private String getOrDefault(String key, String defaultValue) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); if (!propertiesComponent.isValueSet(key)) { return defaultValue; } return propertiesComponent.getValue(key); } private void updateOrDelete(String key, Object value) { PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(project); if (value != null) { propertiesComponent.setValue(key, value.toString()); } else { propertiesComponent.unsetValue(key); } } @Override public void tearDown() { project = null; observerSet.clear(); observerSet = null; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/settings/SettingsObserver.java ================================================ package de.mprengemann.intellij.plugin.androidicons.controllers.settings; public interface SettingsObserver { } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AddItemBatchScaleDialog.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AddItemBatchScaleDialog.java ================================================ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.BatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.AddItemBatchScaleDialogObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.AddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.IAddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.listeners.SimpleKeyListener; import de.mprengemann.intellij.plugin.androidicons.model.Destination; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.widgets.ExportNameField; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import de.mprengemann.intellij.plugin.androidicons.widgets.ResolutionButtonModel; import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.text.NumberFormatter; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.text.NumberFormat; import java.util.Arrays; import java.util.List; import java.util.Set; public class AddItemBatchScaleDialog extends DialogWrapper implements AddItemBatchScaleDialogObserver { private final Project project; private final Module module; private final BatchScaleImporterController batchScaleController; private JPanel uiContainer; private JLabel imageContainer; private JTextField sourceFile; private JCheckBox LDPICheckBox; private JCheckBox MDPICheckBox; private JCheckBox HDPICheckBox; private JCheckBox XHDPICheckBox; private JCheckBox XXHDPICheckBox; private JCheckBox XXXHDPICheckBox; private JCheckBox TVDPICheckBox; private JComboBox sourceResolutionSpinner; private JFormattedTextField targetWidth; private JFormattedTextField targetHeight; private ExportNameField targetName; private FileBrowserField targetRoot; private JComboBox algorithmSpinner; private JComboBox methodSpinner; private JComboBox formatSpinner; private JComboBox destinationSpinner; private IAddItemBatchScaleImporterController controller; private final ActionListener sourceResolutionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final Resolution selectedItem = (Resolution) source.getSelectedItem(); controller.setSourceResolution(selectedItem); } }; private final ActionListener algorithmListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final ResizeAlgorithm selectedItem = (ResizeAlgorithm) source.getSelectedItem(); controller.setAlgorithm(selectedItem); } }; private final ActionListener methodListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setMethod(selectedItem); } }; private final ActionListener resolutionActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JCheckBox source = (JCheckBox) actionEvent.getSource(); final Resolution resolution = ((ResolutionButtonModel) source.getModel()).getResolution(); if (source.isSelected()) { controller.addTargetResolution(resolution); } else { controller.removeTargetResolution(resolution); } } }; private final PropertyChangeListener targetSizeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { final Object source = propertyChangeEvent.getSource(); if (source == targetHeight) { controller.setTargetHeight(((Number) targetHeight.getValue()).intValue()); } else if (source == targetWidth) { controller.setTargetWidth(((Number) targetWidth.getValue()).intValue()); } } }; private final ActionListener formatListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JComboBox source = (JComboBox) e.getSource(); final Format selectedItem = (Format) source.getSelectedItem(); controller.setFormat(selectedItem); } }; private final ActionListener destinationListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JComboBox source = (JComboBox) e.getSource(); final Destination selectedItem = (Destination) source.getSelectedItem(); controller.setDestination(selectedItem); } }; private ISettingsController settingsController; private IDefaultsController defaultsController; public AddItemBatchScaleDialog(final Project project, final Module module, final BatchScaleImporterController batchScaleImporterController, final VirtualFile file) { super(project); this.project = project; this.module = module; this.batchScaleController = batchScaleImporterController; if (file == null) { close(0); return; } String path = file.getCanonicalPath(); if (path == null) { close(0); return; } final File realFile = new File(path); initRequiredControllers(); initController(realFile); initTargetRoot(); initInternal(); } public AddItemBatchScaleDialog(final Project project, final Module module, final BatchScaleImporterController batchScaleImporterController, final Resolution sourceResolution, final List information) { super(project); this.project = project; this.module = module; this.batchScaleController = batchScaleImporterController; initRequiredControllers(); initController(sourceResolution, information); initTargetRoot(); initInternal(); } private void initInternal() { initCheckBoxes(); initExportName(); initExportRoot(); init(); pack(); controller.addObserver(this); } private void initTargetRoot() { targetRoot.initWithResourceRoot(project, module, settingsController); targetRoot.setSelectionListener(new Consumer() { @Override public void consume(File file) { controller.setTargetRoot(file.getAbsolutePath()); } }); } private void initCheckBoxes() { LDPICheckBox.setModel(new ResolutionButtonModel(Resolution.LDPI)); MDPICheckBox.setModel(new ResolutionButtonModel(Resolution.MDPI)); HDPICheckBox.setModel(new ResolutionButtonModel(Resolution.HDPI)); XHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XHDPI)); XXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXHDPI)); XXXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXXHDPI)); TVDPICheckBox.setModel(new ResolutionButtonModel(Resolution.TVDPI)); } private void initExportRoot() { targetRoot.setText(controller.getExportPath()); targetRoot.addKeyListener(new SimpleKeyListener() { @Override public void keyReleased(KeyEvent keyEvent) { controller.setTargetRoot(((JTextField) keyEvent.getSource()).getText()); } }); } private void initExportName() { targetName.setText(controller.getExportName()); targetName.addPropertyChangeListener("value", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { controller.setExportName((String) targetName.getValue()); } }); } private void initController(File file) { final VirtualFile root = settingsController.getResourceRoot(); String exportRoot = ""; if (root != null) { exportRoot = root.getCanonicalPath(); } else { exportRoot = AndroidFacetUtils.getResourcesRoot(project, module); } controller = new AddItemBatchScaleImporterController(defaultsController, exportRoot, file); } private void initRequiredControllers() { final IconApplication container = ApplicationManager.getApplication().getComponent(IconApplication.class); settingsController = container.getControllerFactory().getSettingsController(); defaultsController = container.getControllerFactory().getDefaultsController(); } private void initController(Resolution sourceResolution, List information) { controller = new AddItemBatchScaleImporterController(sourceResolution, information); } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } @Override protected void doOKAction() { final List imageInformation = controller.getImageInformation(project); batchScaleController.addImage(controller.getSourceResolution(), imageInformation); defaultsController.setAlgorithm(controller.getAlgorithm()); defaultsController.setMethod(controller.getMethod()); defaultsController.setSourceResolution(controller.getSourceResolution()); defaultsController.setResolutions(controller.getTargetResolutions()); if (!controller.isNinePatch()) { defaultsController.setFormat(controller.getFormat()); } defaultsController.setDestination(controller.getDestination()); super.doOKAction(); } @Override public void updated() { updateSource(); updateSourceResolution(); updateTargetSize(); updateTargetResolutions(); updateAlgorithms(); updateAlgorithmMethod(); updateFormat(); updateDestination(); updateImage(controller.getImageFile()); } private void updateAlgorithms() { algorithmSpinner.removeActionListener(algorithmListener); algorithmSpinner.removeAllItems(); for (ResizeAlgorithm algorithm : ResizeAlgorithm.values()) { algorithmSpinner.addItem(algorithm); } algorithmSpinner.setSelectedItem(controller.getAlgorithm()); algorithmSpinner.addActionListener(algorithmListener); } private void updateAlgorithmMethod() { methodSpinner.removeActionListener(methodListener); methodSpinner.removeAllItems(); final List methods = controller.getMethods(); for (String method : methods) { methodSpinner.addItem(method); } methodSpinner.setSelectedItem(controller.getMethod()); methodSpinner.setEnabled(methods.size() > 1); methodSpinner.addActionListener(methodListener); } private void updateFormat() { formatSpinner.removeActionListener(formatListener); formatSpinner.removeAllItems(); for (Format format : Format.nonVectorValues()) { formatSpinner.addItem(format); } formatSpinner.setSelectedItem(controller.getFormat()); formatSpinner.setEnabled(!controller.isNinePatch()); formatSpinner.addActionListener(formatListener); } private void updateDestination() { destinationSpinner.removeActionListener(destinationListener); destinationSpinner.removeAllItems(); for (Destination format : Destination.values()) { destinationSpinner.addItem(format); } destinationSpinner.setSelectedItem(controller.getDestination()); destinationSpinner.addActionListener(destinationListener); } private void updateTargetSize() { targetHeight.removePropertyChangeListener("value", targetSizeListener); targetWidth.removePropertyChangeListener("value", targetSizeListener); targetHeight.setValue(controller.getTargetHeight()); targetWidth.setValue(controller.getTargetWidth()); targetHeight.addPropertyChangeListener("value", targetSizeListener); targetWidth.addPropertyChangeListener("value", targetSizeListener); } private void updateSourceResolution() { sourceResolutionSpinner.removeActionListener(sourceResolutionListener); sourceResolutionSpinner.removeAllItems(); for (Resolution resolution : Resolution.nonVectorValues()) { sourceResolutionSpinner.addItem(resolution); } sourceResolutionSpinner.setSelectedItem(controller.getSourceResolution()); sourceResolutionSpinner.addActionListener(sourceResolutionListener); } private void updateSource() { sourceFile.setText(controller.getImageFile().getAbsolutePath()); sourceFile.setEnabled(false); } private void updateTargetResolutions() { final Set resolutions = controller.getTargetResolutions(); for (JCheckBox checkBox : Arrays.asList(LDPICheckBox, MDPICheckBox, HDPICheckBox, XHDPICheckBox, XXHDPICheckBox, XXXHDPICheckBox, TVDPICheckBox)) { checkBox.removeActionListener(resolutionActionListener); final Resolution resolution = ((ResolutionButtonModel) checkBox.getModel()).getResolution(); checkBox.setSelected(resolutions.contains(resolution)); final int[] sizes = controller.getScaledSize(resolution); checkBox.setText(String.format("%s (%d px x %d px)", resolution, sizes[0], sizes[1])); checkBox.addActionListener(resolutionActionListener); } } private void updateImage(final File file) { EventQueue.invokeLater(new Runnable() { @Override public void run() { if (imageContainer == null) { return; } if (file == null) { imageContainer.setIcon(null); return; } ImageUtils.updateImage(imageContainer, file, controller.getFormat()); } }); } private void createUIComponents() { NumberFormat format = NumberFormat.getIntegerInstance(); NumberFormatter numberFormatter = new NumberFormatter(format); numberFormatter.setValueClass(Integer.class); numberFormatter.setAllowsInvalid(false); numberFormatter.setMinimum(1); numberFormatter.setCommitsOnValidEdit(true); targetHeight = new JFormattedTextField(numberFormatter); targetWidth = new JFormattedTextField(numberFormatter); targetRoot = new FileBrowserField(FileBrowserField.RESOURCE_DIR_CHOOSER); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AndroidBatchScaleImporter.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AndroidBatchScaleImporter.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.ex.FileDrop; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileVisitor; import com.intellij.ui.table.JBTable; import com.intellij.util.Consumer; import com.intellij.util.ui.UIUtil; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.BatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.BatchScaleImporterObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.IBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.AddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.IAddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.util.MathUtils; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import org.apache.commons.io.FilenameUtils; import org.intellij.images.fileTypes.ImageFileTypeManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; public class AndroidBatchScaleImporter extends DialogWrapper implements BatchScaleImporterObserver { private final Project project; private final Module module; private final IconApplication container; private JPanel uiContainer; private JTable table; private JLabel imageContainer; private JButton addButton; private JButton deleteButton; private JButton editButton; private ImageTableModel tableModel; private final BatchScaleImporterController controller; private final Consumer> fileChooserConsumer = new Consumer>() { @Override public void consume(final List virtualFiles) { if (virtualFiles == null || virtualFiles.isEmpty()) { return; } final VirtualFile file = virtualFiles.get(0); if (file == null) { return; } container.getControllerFactory().getSettingsController().saveLastImageFolder(file.getCanonicalPath()); if (virtualFiles.size() == 1 && !file.isDirectory()) { addSingleFile(file); } else { new Task.Modal(project, "Adding Files...", true) { @Override public void run(@NotNull ProgressIndicator progressIndicator) { progressIndicator.setIndeterminate(true); try { addMultipleFiles(virtualFiles, progressIndicator); } catch (ProcessCanceledException ignored) { } } }.queue(); } } }; public AndroidBatchScaleImporter(final Project project, final Module module) { super(project); this.project = project; this.container = ApplicationManager.getApplication().getComponent(IconApplication.class); this.controller = new BatchScaleImporterController(); this.controller.addObserver(this); this.module = module; setTitle("Batch Drawable Importer"); initButtons(project); initDragDrop(); initTable(); init(); pack(); } private void initButtons(final Project project) { addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { FileChooser.chooseFiles(FileBrowserField.IMAGE_FILES_FOLDER_CHOOSER, project, getInitialFile(), fileChooserConsumer); } }); deleteButton.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { controller.removeImages(table.getSelectedRows()); } }); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { controller.editImages(project, module, table.getSelectedRows()); } }); } private void initDragDrop() { new FileDrop(table, new FileDrop.Target() { @Override public FileChooserDescriptor getDescriptor() { return FileBrowserField.IMAGE_FILES_FOLDER_CHOOSER; } @Override public boolean isHiddenShown() { return false; } @Override public void dropFiles(final List virtualFiles) { fileChooserConsumer.consume(virtualFiles); } }); } private void addMultipleFiles(List virtualFiles, final ProgressIndicator progressIndicator) throws ProcessCanceledException { for (final VirtualFile file : virtualFiles) { progressIndicator.checkCanceled(); if (file.isDirectory()) { progressIndicator.setText2(file.getCanonicalPath()); VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile child) throws ProcessCanceledException { if (file.equals(child)) { return true; } progressIndicator.checkCanceled(); addMultipleFiles(Arrays.asList(child), progressIndicator); return true; } }); continue; } addSingleFileImmediately(file); } } private void addSingleFileImmediately(VirtualFile file) { if (!file.getFileType().equals(ImageFileTypeManager.getInstance().getImageFileType())) { return; } // Hack String path = file.getCanonicalPath(); if (path == null) { return; } final File realFile = new File(path); final ISettingsController settingsController = container.getControllerFactory().getSettingsController(); final IDefaultsController defaultsController = container.getControllerFactory().getDefaultsController(); final VirtualFile root = settingsController.getResourceRoot(); String exportRoot = ""; if (root != null) { exportRoot = root.getCanonicalPath(); } else { exportRoot = AndroidFacetUtils.getResourcesRoot(project, module); } final IAddItemBatchScaleImporterController addItemController = new AddItemBatchScaleImporterController(defaultsController, exportRoot, realFile); controller.addImage(addItemController.getSourceResolution(), addItemController.getImageInformation(project)); addItemController.tearDown(); } private void addSingleFile(VirtualFile file) { container.getControllerFactory() .getSettingsController() .saveLastImageFolder(file.getCanonicalPath()); AddItemBatchScaleDialog addItemBatchScaleDialog = new AddItemBatchScaleDialog(project, module, controller, file); addItemBatchScaleDialog.show(); } private void initTable() { tableModel = new ImageTableModel(controller); table.setModel(tableModel); initRenderers(); initRowSelection(); initColumnSizes(); } private void initRenderers() { final DefaultTableCellRenderer fileCellRenderer = new DefaultTableCellRenderer() { @Override protected void setValue(Object o) { File file = (File) o; if (file == null) { setText(""); return; } if (file.isDirectory()) { setText(file.getAbsolutePath()); } else { setText(FilenameUtils.removeExtension(file.getName())); } } }; fileCellRenderer.setHorizontalTextPosition(DefaultTableCellRenderer.TRAILING); table.setDefaultRenderer(File.class, fileCellRenderer); table.setDefaultRenderer(ArrayList.class, new DefaultTableCellRenderer() { @Override protected void setValue(Object o) { if (o == null) { setText(""); } else { ArrayList list = (ArrayList) o; Collections.sort(list); StringBuilder buffer = new StringBuilder(); Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object val = iterator.next(); buffer.append(val.toString()); if (iterator.hasNext()) { buffer.append(", "); } } setText(buffer.toString()); } } }); } private void initRowSelection() { table.setSelectionBackground(Color.decode("0xFEFBDE")); // MPArnold 29/1/2020 table.setSelectionForeground(Color.decode("0x6F6F6F")); // MPArnold 29/1/2020 table.getColumnModel().setColumnSelectionAllowed(false); table.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { return; } int selectedRow = table.getSelectedRow(); if (table.getSelectedRowCount() == 1) { updateImage(controller.getImage(selectedRow)); } else { updateImage(null); } } }); } private void initColumnSizes() { table.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent componentEvent) { super.componentResized(componentEvent); Dimension tableSize = table.getSize(); final int[] columnSizes = new int[]{ 20, 20, 20, 40 }; for (int i = 0; i < table.getColumnCount(); i++) { TableColumn column = table.getColumnModel().getColumn(i); column.setPreferredWidth((int) (tableSize.width * (columnSizes[i] / 100f))); } } }); } private void updateImage(ImageInformation item) { if (imageContainer == null) { return; } if (item == null) { imageContainer.setIcon(null); return; } ImageUtils.updateImage(imageContainer, item.getImageFile(), item.getFormat()); } protected VirtualFile getInitialFile() { String directoryName = container.getControllerFactory().getSettingsController().getLastImageFolder(); VirtualFile path; String expandPath = expandPath(directoryName); if (expandPath == null) { return null; } for (path = LocalFileSystem.getInstance().findFileByPath(expandPath); path == null && directoryName.length() > 0; path = LocalFileSystem.getInstance().findFileByPath(directoryName)) { int pos = directoryName.lastIndexOf(47); if (pos <= 0) { break; } directoryName = directoryName.substring(0, pos); } return path; } private String expandPath(String dirName) { if (project != null) { dirName = PathMacroManager.getInstance(project).expandPath(dirName); } if (module != null) { dirName = PathMacroManager.getInstance(module).expandPath(dirName); } return dirName; } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } private void createUIComponents() { table = new JBTable() { @NotNull @Override public Component prepareRenderer(@NotNull TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); c.setEnabled(isCellEditable(row, column)); return c; } }; addButton = new JButton(getIcon("ic_action_add")); editButton = new JButton(getIcon("ic_action_edit")); deleteButton = new JButton(getIcon("ic_action_trash")); } @NotNull private Icon getIcon(String name) { boolean isDarkTheme = UIUtil.isUnderDarcula(); final String asset = String.format("/icons/%s%s.png", name, isDarkTheme ? "_dark" : ""); return IconLoader.getIcon(asset); } @Override protected void doOKAction() { controller.getExportTask(project).queue(); super.doOKAction(); } /** Implements {@link de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.BatchScaleImporterObserver */ @Override public void updated() { UIUtil.invokeLaterIfNeeded(new Runnable() { @Override public void run() { updateTable(); } }); } private void updateTable() { if (table == null || tableModel == null) { return; } int selectedRow = table.getSelectedRow(); tableModel.fireTableDataChanged(); if (table.getRowCount() > 0) { selectedRow = MathUtils.clamp(selectedRow, 0, table.getRowCount()-1); // MPArnold 31/1/2020 table.setRowSelectionInterval(selectedRow, selectedRow); } else { imageContainer.setDisabledIcon(null); } } private static class ImageTableModel extends AbstractTableModel { private static final List columnNames = Arrays.asList("Source-File", "Target-Resolutions", "Target-Name", "Target-Root"); private IBatchScaleImporterController controller; public ImageTableModel(IBatchScaleImporterController controller) { this.controller = controller; } @Override public int getRowCount() { return controller.getImageCount(); } @Override public int getColumnCount() { return columnNames.size(); } @Override public String getColumnName(int col) { return columnNames.get(col); } @Override public Object getValueAt(int row, int col) { ImageInformation information = controller.getImage(row); switch (col) { case 0: return information.getImageFile(); case 1: return controller.getTargetResolutions(information); case 2: return information.getExportName(); case 3: return information.getExportPath(); } return information; } @Override public Class getColumnClass(int col) { return getValueAt(0, col).getClass(); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AndroidMultiDrawableImporter.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/AndroidMultiDrawableImporter.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; import com.intellij.util.io.ZipUtil; import com.intellij.util.ui.UIUtil; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.multi.IMultiImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.multi.MultiImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.multi.MultiImporterObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.listeners.SimpleMouseListener; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.widgets.ExportNameField; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.filefilter.TrueFileFilter; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.activation.MimetypesFileTypeMap; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; public class AndroidMultiDrawableImporter extends DialogWrapper implements MultiImporterObserver { private final FileChooserDescriptor archiveDescriptor = new FileChooserDescriptor(true, false, true, true, false, false) { @Override public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) { return file.isDirectory() || isZip(file.getName()); } @Override public boolean isFileSelectable(VirtualFile file) { return isZip(file.getName()); } private boolean isZip(String name) { return name.contains(".zip"); } }; private static final Resolution[] RESOLUTIONS = new Resolution[]{ Resolution.XXXHDPI, Resolution.XXHDPI, Resolution.XHDPI, Resolution.HDPI, Resolution.MDPI, Resolution.LDPI, Resolution.TVDPI }; private static final String TAG = AndroidMultiDrawableImporter.class.getSimpleName(); private static final Logger LOGGER = Logger.getInstance(TAG); private final Project project; private final Module module; private final IMultiImporterController controller; private Action zipImportAction; private FileBrowserField resRoot; private FileBrowserField ldpiFile; private FileBrowserField mdpiFile; private FileBrowserField hdpiFile; private FileBrowserField xhdpiFile; private FileBrowserField xxhdpiFile; private FileBrowserField xxxhdpiFile; private FileBrowserField tvdpiFile; private JLabel imageContainer; private ExportNameField resExportName; private JPanel uiContainer; private JComboBox formatSpinner; private final ActionListener formatListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JComboBox source = (JComboBox) e.getSource(); final Format selectedItem = (Format) source.getSelectedItem(); controller.setFormat(selectedItem); } }; private final ISettingsController settingsController; private final IconApplication container; public AndroidMultiDrawableImporter(final Project project, final Module module) { super(project, true); this.project = project; this.module = module; container = ApplicationManager.getApplication().getComponent(IconApplication.class); settingsController = container.getControllerFactory().getSettingsController(); this.controller = new MultiImporterController(container.getControllerFactory().getDefaultsController()); this.controller.addObserver(this); initResourceRoot(); initBrowser(Resolution.LDPI, ldpiFile); initBrowser(Resolution.MDPI, mdpiFile); initBrowser(Resolution.HDPI, hdpiFile); initBrowser(Resolution.XHDPI, xhdpiFile); initBrowser(Resolution.XXHDPI, xxhdpiFile); initBrowser(Resolution.XXXHDPI, xxxhdpiFile); initBrowser(Resolution.TVDPI, tvdpiFile); setTitle("Android Multi Drawable Importer"); init(); pack(); } @Nullable @Override protected ValidationInfo doValidate() { if (StringUtils.isEmpty(controller.getTargetRoot())) { return new ValidationInfo("Please select the resources root.", resRoot); } if (StringUtils.isEmpty(controller.getExportName())) { return new ValidationInfo("Please select a name for the drawable.", resExportName); } return super.doValidate(); } @Override protected void doOKAction() { controller.getTask(project).queue(); if (!controller.containsNinePatch()) { container.getControllerFactory().getDefaultsController().setFormat(controller.getFormat()); } super.doOKAction(); } @Override public void updated() { updateImage(); updateTargetRoot(); updateName(); updateFormat(); } private void updateFormat() { formatSpinner.removeActionListener(formatListener); formatSpinner.removeAllItems(); for (Format format : Format.nonVectorValues()) { formatSpinner.addItem(format); } formatSpinner.setSelectedItem(controller.getFormat()); formatSpinner.setEnabled(!controller.containsNinePatch()); formatSpinner.addActionListener(formatListener); } private void updateTargetRoot() { final String targetRoot = controller.getTargetRoot(); if (targetRoot == null) { return; } resRoot.setText(targetRoot); } private void updateName() { final String exportName = controller.getExportName(); if (exportName == null) { return; } resExportName.setText(exportName); resExportName.addPropertyChangeListener("value", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { controller.setExportName(((String) resExportName.getValue())); } }); } private void updateImage() { final File file = controller.getMostRecentImage(); if (file == null) { return; } ImageUtils.updateImage(imageContainer, file, controller.getFormat()); } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } private void initResourceRoot() { resRoot.setSelectionListener(new Consumer() { @Override public void consume(File file) { controller.setTargetRoot(file); } }); resRoot.initWithResourceRoot(project, module, settingsController); } private void initBrowser(final Resolution resolution, final FileBrowserField fileBrowser) { fileBrowser.init(project, settingsController); fileBrowser.setSelectionListener(new Consumer() { @Override public void consume(File file) { controller.addImage(file, resolution); } }); fileBrowser.getTextField().addMouseListener(new SimpleMouseListener() { @Override public void mouseClicked(MouseEvent mouseEvent) { controller.setMostRecentImage(resolution); } }); } private void createUIComponents() { resRoot = new FileBrowserField(FileBrowserField.RESOURCE_DIR_CHOOSER); ldpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); mdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); hdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); xhdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); xxhdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); xxxhdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); tvdpiFile = new FileBrowserField(FileBrowserField.IMAGE_FILE_CHOOSER); } @Override protected void createDefaultActions() { super.createDefaultActions(); this.zipImportAction = new AndroidMultiDrawableImporter.ZipImportAction(); } protected final Action getZipImportAction() { return this.zipImportAction; } private void openZipArchive() { FileChooser.chooseFile(archiveDescriptor, project, getInitialFile(), new Consumer() { @Override public void consume(VirtualFile virtualFile) { if (virtualFile == null) { return; } final String filePath = virtualFile.getCanonicalPath(); if (filePath == null) { return; } settingsController.saveLastImageFolder(filePath); controller.resetZipInformation(); importZipArchive(virtualFile); } }); } private void importZipArchive(VirtualFile virtualFile) { final String filePath = virtualFile.getCanonicalPath(); if (filePath == null) { return; } final File tempDir = new File(ImageInformation.getTempDir(), virtualFile.getNameWithoutExtension()); final String archiveName = virtualFile.getName(); new Task.Modal(project, "Importing Archive...", true) { @Override public void run(@NotNull final ProgressIndicator progressIndicator) { progressIndicator.setIndeterminate(true); try { FileUtils.forceMkdir(tempDir); ZipUtil.extract(new File(filePath), tempDir, new FilenameFilter() { @Override public boolean accept(File dir, String name) { final String mimeType = new MimetypesFileTypeMap().getContentType(name); final String type = mimeType.split("/")[0]; return type.equals("image"); } }, true); progressIndicator.checkCanceled(); final Iterator fileIterator = FileUtils.iterateFiles(tempDir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE); while (fileIterator.hasNext()) { File file = fileIterator.next(); if (file.isDirectory() || file.isHidden()) { continue; } final String fileRoot = file.getParent().toUpperCase(); final String name = FilenameUtils.getBaseName(file.toString()); if (name.startsWith(".") || fileRoot.contains("__MACOSX")) { continue; } for (Resolution resolution : RESOLUTIONS) { if (name.toUpperCase().contains("-" + resolution) || name.toUpperCase().contains("_" + resolution) || fileRoot.contains(resolution.toString())) { controller.addZipImage(file, resolution); break; } } } progressIndicator.checkCanceled(); final Map> zipImages = controller.getZipImages(); final List foundResolutions = new ArrayList(); int foundAssets = 0; for (Resolution resolution : zipImages.keySet()) { final List assetInformation = zipImages.get(resolution); if (assetInformation != null && !assetInformation.isEmpty()) { foundAssets += assetInformation.size(); foundResolutions.add(resolution); } } progressIndicator.checkCanceled(); final int finalFoundAssets = foundAssets; UIUtil.invokeLaterIfNeeded(new DumbAwareRunnable() { public void run() { final String title = String.format("Import '%s'", archiveName); if (foundResolutions.isEmpty() || finalFoundAssets == 0) { Messages.showErrorDialog("No assets found.", title); FileUtils.deleteQuietly(tempDir); return; } final String[] options = new String[] {"Import", "Cancel"}; final String description = String.format("Import %d assets for %s to %s.", finalFoundAssets, StringUtils.join(foundResolutions, ", "), controller.getTargetRoot()); final int selection = Messages.showDialog(description, title, options, 0, Messages.getQuestionIcon()); if (selection == 0) { controller.getZipTask(project, tempDir).queue(); close(0); } else { FileUtils.deleteQuietly(tempDir); } } }); } catch (ProcessCanceledException e) { FileUtils.deleteQuietly(tempDir); } catch (IOException e) { LOGGER.error(e); } } }.queue(); } private VirtualFile getInitialFile() { String directoryName = settingsController.getLastImageFolder(); VirtualFile path; String expandPath = expandPath(directoryName); if (expandPath == null) { return null; } for (path = LocalFileSystem.getInstance().findFileByPath(expandPath); path == null && directoryName.length() > 0; path = LocalFileSystem.getInstance().findFileByPath(directoryName)) { int pos = directoryName.lastIndexOf(47); if (pos <= 0) { break; } directoryName = directoryName.substring(0, pos); } return path; } private String expandPath(String dirName) { if (project != null) { dirName = PathMacroManager.getInstance(project).expandPath(dirName); } if (module != null) { dirName = PathMacroManager.getInstance(module).expandPath(dirName); } return dirName; } @Override @NotNull protected Action[] createActions() { final ArrayList actions = new ArrayList(); actions.add(this.getZipImportAction()); actions.add(this.getCancelAction()); actions.add(this.getOKAction()); if (SystemInfo.isMac) { Collections.reverse(actions); } return actions.toArray(new Action[actions.size()]); } private class ZipImportAction extends AbstractAction { public ZipImportAction() { this.putValue("Name", "Import Zip Archive"); } public void actionPerformed(ActionEvent e) { AndroidMultiDrawableImporter.this.openZipArchive(); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/EditItemsBatchScaleDialog.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/EditItemsBatchScaleDialog.java ================================================ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.util.Consumer; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.BatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.AddItemBatchScaleDialogObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.AddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.batchscale.additem.IAddItemBatchScaleImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import de.mprengemann.intellij.plugin.androidicons.listeners.SimpleKeyListener; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import de.mprengemann.intellij.plugin.androidicons.widgets.ResolutionButtonModel; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Set; public class EditItemsBatchScaleDialog extends DialogWrapper implements AddItemBatchScaleDialogObserver { private final Project project; private final Module module; private final BatchScaleImporterController batchScaleController; private final List selectedFiles; private List sourceResolution; private final List> information; private JPanel uiContainer; private JCheckBox LDPICheckBox; private JCheckBox MDPICheckBox; private JCheckBox HDPICheckBox; private JCheckBox XHDPICheckBox; private JCheckBox XXHDPICheckBox; private JCheckBox XXXHDPICheckBox; private JCheckBox TVDPICheckBox; private JComboBox sourceResolutionSpinner; private FileBrowserField targetRoot; private JComboBox algorithmSpinner; private JComboBox methodSpinner; private JComboBox formatSpinner; private IAddItemBatchScaleImporterController controller; private final ActionListener sourceResolutionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final Resolution selectedItem = (Resolution) source.getSelectedItem(); controller.setSourceResolution(selectedItem); } }; private final ActionListener algorithmListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final ResizeAlgorithm selectedItem = (ResizeAlgorithm) source.getSelectedItem(); controller.setAlgorithm(selectedItem); } }; private final ActionListener methodListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setMethod(selectedItem); } }; private final ActionListener resolutionActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JCheckBox source = (JCheckBox) actionEvent.getSource(); final Resolution resolution = ((ResolutionButtonModel) source.getModel()).getResolution(); if (source.isSelected()) { controller.addTargetResolution(resolution); } else { controller.removeTargetResolution(resolution); } } }; private final ActionListener formatListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JComboBox source = (JComboBox) e.getSource(); final Format selectedItem = (Format) source.getSelectedItem(); controller.setFormat(selectedItem); } }; private ISettingsController settingsController; private IDefaultsController defaultsController; public EditItemsBatchScaleDialog(final Project project, final Module module, final BatchScaleImporterController batchScaleImporterController, final List selectedFiles, final List sourceResolution, final List> information) { super(project); this.project = project; this.module = module; this.batchScaleController = batchScaleImporterController; this.selectedFiles = selectedFiles; this.sourceResolution = sourceResolution; this.information = information; initRequiredControllers(); initController(sourceResolution.get(0), information.get(0)); initTargetRoot(); initInternal(); } private void initInternal() { initCheckBoxes(); initExportRoot(); initAlgorithms(); init(); pack(); controller.addObserver(this); } private void initTargetRoot() { targetRoot.initWithResourceRoot(project, module, settingsController); targetRoot.setSelectionListener(new Consumer() { @Override public void consume(File file) { controller.setTargetRoot(file.getAbsolutePath()); } }); } private void initAlgorithms() { for (ResizeAlgorithm algorithm : ResizeAlgorithm.values()) { algorithmSpinner.addItem(algorithm); } } private void initCheckBoxes() { LDPICheckBox.setModel(new ResolutionButtonModel(Resolution.LDPI)); MDPICheckBox.setModel(new ResolutionButtonModel(Resolution.MDPI)); HDPICheckBox.setModel(new ResolutionButtonModel(Resolution.HDPI)); XHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XHDPI)); XXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXHDPI)); XXXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXXHDPI)); TVDPICheckBox.setModel(new ResolutionButtonModel(Resolution.TVDPI)); } private void initExportRoot() { targetRoot.setText(controller.getExportPath()); targetRoot.addKeyListener(new SimpleKeyListener() { @Override public void keyReleased(KeyEvent keyEvent) { controller.setTargetRoot(((JTextField) keyEvent.getSource()).getText()); } }); } private void initRequiredControllers() { final IconApplication container = ApplicationManager.getApplication().getComponent(IconApplication.class); settingsController = container.getControllerFactory().getSettingsController(); defaultsController = container.getControllerFactory().getDefaultsController(); } private void initController(Resolution sourceResolution, List information) { controller = new AddItemBatchScaleImporterController(sourceResolution, information); } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } @Override protected void doOKAction() { for (int i = 0; i < selectedFiles.size(); i++) { final List originalImageInformation = information.get(i); final Resolution originalSourceResolution = sourceResolution.get(i); final String selectedFile = selectedFiles.get(i); final List imageInformation = controller.getImageInformation(project, selectedFile, originalImageInformation, originalSourceResolution); batchScaleController.addImage(controller.getSourceResolution(), imageInformation); } defaultsController.setAlgorithm(controller.getAlgorithm()); defaultsController.setMethod(controller.getMethod()); defaultsController.setSourceResolution(controller.getSourceResolution()); defaultsController.setResolutions(controller.getTargetResolutions()); super.doOKAction(); } @Override public void updated() { updateSourceResolution(); updateTargetResolutions(); updateAlgorithms(); updateAlgorithmMethod(); updateFormat(); } private void updateFormat() { formatSpinner.removeActionListener(formatListener); formatSpinner.removeAllItems(); for (Format format : Format.nonVectorValues()) { formatSpinner.addItem(format); } formatSpinner.setSelectedItem(controller.getFormat()); formatSpinner.addActionListener(formatListener); } private void updateAlgorithms() { algorithmSpinner.removeActionListener(algorithmListener); algorithmSpinner.removeAllItems(); for (ResizeAlgorithm algorithm : ResizeAlgorithm.values()) { algorithmSpinner.addItem(algorithm); } algorithmSpinner.setSelectedItem(controller.getAlgorithm()); algorithmSpinner.addActionListener(algorithmListener); } private void updateAlgorithmMethod() { methodSpinner.removeActionListener(methodListener); methodSpinner.removeAllItems(); final List methods = controller.getMethods(); for (String method : methods) { methodSpinner.addItem(method); } methodSpinner.setSelectedItem(controller.getMethod()); methodSpinner.setEnabled(methods.size() > 1); methodSpinner.addActionListener(methodListener); } private void updateSourceResolution() { sourceResolutionSpinner.removeActionListener(sourceResolutionListener); sourceResolutionSpinner.removeAllItems(); for (Resolution resolution : Resolution.nonVectorValues()) { sourceResolutionSpinner.addItem(resolution); } sourceResolutionSpinner.setSelectedItem(controller.getSourceResolution()); sourceResolutionSpinner.addActionListener(sourceResolutionListener); } private void updateTargetResolutions() { final Set resolutions = controller.getTargetResolutions(); for (JCheckBox checkBox : Arrays.asList(LDPICheckBox, MDPICheckBox, HDPICheckBox, XHDPICheckBox, XXHDPICheckBox, XXXHDPICheckBox, TVDPICheckBox)) { checkBox.removeActionListener(resolutionActionListener); final Resolution resolution = ((ResolutionButtonModel) checkBox.getModel()).getResolution(); checkBox.setSelected(resolutions.contains(resolution)); checkBox.addActionListener(resolutionActionListener); } } private void createUIComponents() { targetRoot = new FileBrowserField(FileBrowserField.RESOURCE_DIR_CHOOSER); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/IconImporter.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/IconImporter.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.ComboboxSpeedSearch; import com.intellij.ui.JBColor; import com.intellij.ui.LayeredIcon; import com.intellij.ui.ListCellRendererWrapper; import com.intellij.util.Consumer; import com.intellij.util.ui.EmptyIcon; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IIconsImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IconsImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IconsImporterObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.androidicons.IAndroidIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.IMaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.widgets.ExportNameField; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import de.mprengemann.intellij.plugin.androidicons.widgets.ResolutionButtonModel; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; public class IconImporter extends DialogWrapper implements IconsImporterObserver { private final Project project; private Module module; private final IAndroidIconsController androidIconsController; private final IMaterialIconsController materialIconsController; private final ISettingsController settingsController; private final IDefaultsController defaultsController; private final IIconsImporterController controller; private JLabel imageContainer; private JComboBox assetSpinner; private JComboBox colorSpinner; private JComboBox categorySpinner; private JComboBox sizeSpinner; private JPanel uiContainer; private FileBrowserField resRoot; private ExportNameField resExportName; private JCheckBox LDPICheckBox; private JCheckBox MDPICheckBox; private JCheckBox HDPICheckBox; private JCheckBox XHDPICheckBox; private JCheckBox XXHDPICheckBox; private JCheckBox XXXHDPICheckBox; private JComboBox iconPackSpinner; private JComboBox searchField; private JCheckBox TVDPICheckBox; private JComboBox formatSpinner; private final ActionListener iconPackActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final IconPack selectedItem = (IconPack) source.getSelectedItem(); controller.setSelectedIconPack(selectedItem.getId()); } }; private final ActionListener categoryActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setSelectedCategory(selectedItem); } }; private final ActionListener assetActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final ImageAsset selectedItem = (ImageAsset) source.getSelectedItem(); controller.setSelectedAsset(selectedItem); } }; private final ActionListener sizeActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setSelectedSize(selectedItem); } }; private final ActionListener colorActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setSelectedColor(selectedItem); } }; private final ActionListener resolutionActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JCheckBox source = (JCheckBox) actionEvent.getSource(); final Resolution resolution = ((ResolutionButtonModel) source.getModel()).getResolution(); controller.setExportResolution(resolution, source.isSelected()); } }; private final ActionListener formatListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JComboBox source = (JComboBox) e.getSource(); final Format selectedItem = (Format) source.getSelectedItem(); controller.setFormat(selectedItem); } }; private final Consumer resRootListener = new Consumer() { @Override public void consume(File file) { String path; if (file == null) { path = ""; } else { path = file.getPath(); } controller.setExportRoot(path); } }; private final ItemListener searchFieldListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { final ImageAsset selectedItem = (ImageAsset) searchField.getSelectedItem(); if (selectedItem == null) { return; } controller.setSelectedAsset(selectedItem); } }; private ComboboxSpeedSearch comboboxSpeedSearch; public IconImporter(Project project, Module module) { super(project, true); this.project = project; this.module = module; final IconApplication container = ApplicationManager.getApplication().getComponent(IconApplication.class); androidIconsController = container.getControllerFactory().getAndroidIconsController(); materialIconsController = container.getControllerFactory().getMaterialIconsController(); settingsController = container.getControllerFactory().getSettingsController(); defaultsController = container.getControllerFactory().getDefaultsController(); controller = new IconsImporterController(defaultsController, androidIconsController, materialIconsController); initResRoot(); setTitle("Icon Pack Drawable Importer"); getHelpAction().setEnabled(true); AssetSpinnerRenderer renderer = new AssetSpinnerRenderer(); //noinspection GtkPreferredJComboBoxRenderer assetSpinner.setRenderer(renderer); imageContainer.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { super.componentResized(e); updateImage(); } }); initCheckBoxes(); initSearch(); controller.addObserver(this); init(); pack(); } private void initSearch() { final List imageAssets = new ArrayList(); imageAssets.addAll(androidIconsController.getAssets(androidIconsController.getCategories())); imageAssets.addAll(materialIconsController.getAssets(materialIconsController.getCategories())); for (ImageAsset imageAsset : imageAssets) { searchField.addItem(imageAsset); } searchField.setRenderer(new AssetSpinnerRenderer()); comboboxSpeedSearch = new ComboboxSpeedSearch(searchField) { @Override protected String getElementText(Object element) { return element instanceof ImageAsset ? ((ImageAsset) element).getName() : ""; } }; searchField.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { comboboxSpeedSearch.showPopup(); } }); searchField.addItemListener(searchFieldListener); } private void initCheckBoxes() { LDPICheckBox.setModel(new ResolutionButtonModel(Resolution.LDPI)); MDPICheckBox.setModel(new ResolutionButtonModel(Resolution.MDPI)); HDPICheckBox.setModel(new ResolutionButtonModel(Resolution.HDPI)); XHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XHDPI)); XXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXHDPI)); XXXHDPICheckBox.setModel(new ResolutionButtonModel(Resolution.XXXHDPI)); TVDPICheckBox.setModel(new ResolutionButtonModel(Resolution.TVDPI)); } @NotNull @Override public Action[] createActions() { return SystemInfo.isMac ? new Action[] {this.getHelpAction(), this.getCancelAction(), this.getOKAction()} : new Action[] {this.getOKAction(), this.getCancelAction(), this.getHelpAction()}; } private void prepareSpinner(JComboBox comboBox, ActionListener listener) { comboBox.removeActionListener(listener); comboBox.setSelectedItem(null); comboBox.removeAllItems(); } private void initSpinner(JComboBox comboBox, Object selectedItem, ActionListener listener) { comboBox.setSelectedItem(selectedItem); comboBox.addActionListener(listener); } private void updatePacks() { prepareSpinner(iconPackSpinner, iconPackActionListener); iconPackSpinner.addItem(androidIconsController.getIconPack()); iconPackSpinner.addItem(materialIconsController.getIconPack()); initSpinner(iconPackSpinner, controller.getSelectedIconPack().getIconPack(), iconPackActionListener); } private void updateCategories() { prepareSpinner(categorySpinner, categoryActionListener); for (String category : controller.getCategories()) { categorySpinner.addItem(category); } categorySpinner.setEnabled(categorySpinner.getItemCount() > 1); initSpinner(categorySpinner, controller.getSelectedCategory(), categoryActionListener); } private void updateExportResolutions() { final Set resolutions = controller.getExportResolutions(); for (JCheckBox checkBox : Arrays.asList(LDPICheckBox, MDPICheckBox, HDPICheckBox, XHDPICheckBox, XXHDPICheckBox, XXXHDPICheckBox, TVDPICheckBox)) { checkBox.removeActionListener(resolutionActionListener); final Resolution resolution = ((ResolutionButtonModel) checkBox.getModel()).getResolution(); checkBox.setSelected(resolutions.contains(resolution)); checkBox.addActionListener(resolutionActionListener); } } private void updateAssets() { prepareSpinner(assetSpinner, assetActionListener); List assets = controller.getAssets(); for (ImageAsset asset : assets) { assetSpinner.addItem(asset); } initSpinner(assetSpinner, controller.getSelectedAsset(), assetActionListener); } private void updateSizes() { prepareSpinner(sizeSpinner, sizeActionListener); List sizes = controller.getSizes(); for (String size : sizes) { sizeSpinner.addItem(size); } sizeSpinner.setEnabled(sizeSpinner.getItemCount() > 1); initSpinner(sizeSpinner, controller.getSelectedSize(), sizeActionListener); } private void updateColors() { prepareSpinner(colorSpinner, colorActionListener); List colors = controller.getColors(); for (String color : colors) { colorSpinner.addItem(color); } initSpinner(colorSpinner, controller.getSelectedColor(), colorActionListener); } private void updateFormat() { formatSpinner.removeActionListener(formatListener); formatSpinner.removeAllItems(); for (Format format : Format.nonVectorValues()) { formatSpinner.addItem(format); } formatSpinner.setSelectedItem(controller.getFormat()); formatSpinner.setEnabled(!controller.isNinePatch()); formatSpinner.addActionListener(formatListener); } private void updateExportName() { resExportName.setText(controller.getExportName()); } private void updateSearch() { searchField.removeItemListener(searchFieldListener); searchField.setSelectedItem(controller.getSelectedAsset()); searchField.addItemListener(searchFieldListener); } private void updateImage() { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (imageContainer == null) { return; } ImageUtils.updateImage(imageContainer, controller.getSelectedImageFile(), controller.getFormat()); } }); } @Override protected void doHelpAction() { materialIconsController.openHelp(); } @Override protected void doOKAction() { importIcons(); defaultsController.setImageAsset(controller.getSelectedAsset()); defaultsController.setColor(controller.getSelectedColor()); defaultsController.setSize(controller.getSelectedSize()); defaultsController.setResolutions(controller.getExportResolutions()); super.doOKAction(); settingsController.saveResRootForProject("file://" + controller.getExportRoot()); } private void importIcons() { controller.getTask(project).queue(); } @Nullable @Override protected ValidationInfo doValidate() { if (StringUtils.isEmpty(controller.getExportRoot())) { return new ValidationInfo("Please select the resources root.", resRoot); } if (StringUtils.isEmpty(controller.getExportName() .trim())) { return new ValidationInfo("Please select a name for the drawable.", resExportName); } else if (!controller.getExportName().matches("[a-z0-9_.]*")) { return new ValidationInfo( "Please select a valid name for the drawable. There are just \"[a-z0-9_.]\" allowed.", resExportName); } return null; } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } @Override public void updated() { updatePacks(); updateExportResolutions(); updateCategories(); updateAssets(); updateSearch(); updateSizes(); updateColors(); updateFormat(); updateImage(); updateExportName(); } private void createUIComponents() { resRoot = new FileBrowserField(FileBrowserField.RESOURCE_DIR_CHOOSER); } private void initResRoot() { resRoot.setSelectionListener(resRootListener); resRoot.initWithResourceRoot(project, module, settingsController); resExportName.addPropertyChangeListener("value", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { controller.setExportName((String) resExportName.getValue()); } }); } private class AssetSpinnerRenderer extends ListCellRendererWrapper { private final Icon EMPTY_ICON = EmptyIcon.ICON_18; @Override public void customize(JList list, ImageAsset imageAsset, int index, boolean selected, boolean hasFocus) { LayeredIcon layeredIcon = new LayeredIcon(2); File imageFile = controller.getThumbnailFile(imageAsset); if (imageFile != null && imageFile.exists()) { final ImageIcon icon = new ImageIcon(imageFile.getAbsolutePath()); layeredIcon.setIcon(icon, 1, (- icon.getIconWidth() + EMPTY_ICON.getIconWidth())/2, (EMPTY_ICON.getIconHeight() - icon.getIconHeight())/2); } setIcon(layeredIcon); final String searchQuery = comboboxSpeedSearch.getEnteredPrefix(); if (searchQuery != null && searchQuery.trim().length() > 0 && imageAsset.getName().contains(searchQuery)) { setBackground(JBColor.YELLOW); } else { setBackground(null); } } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/ResourcesDialog.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/ResourcesDialog.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Function; import de.mprengemann.intellij.plugin.androidicons.listeners.RadioListListener; import de.mprengemann.intellij.plugin.androidicons.widgets.RadioButtonList; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.List; public class ResourcesDialog extends DialogWrapper { private final ResourceSelectionListener listener; private JPanel container; private RadioButtonList list; private VirtualFile selectedDir = null; public ResourcesDialog(Project project, final List items, ResourceSelectionListener listener) { super(project, true); this.listener = listener; list.setRadioListListener(new RadioListListener() { @Override public void radioSelectionChanged(int selectedIndex) { selectedDir = items.get(selectedIndex); } }); list.setItems(items, new Function() { @Override public String fun(VirtualFile virtualFile) { return virtualFile.getCanonicalPath(); } }); init(); } @Override protected void doOKAction() { if (listener != null) { listener.onResourceSelected(selectedDir); } super.doOKAction(); } @Nullable @Override protected ValidationInfo doValidate() { if (selectedDir == null) { return new ValidationInfo("Please select a resource dir.", list); } return super.doValidate(); } @Nullable @Override protected JComponent createCenterPanel() { return container; } public interface ResourceSelectionListener { void onResourceSelected(VirtualFile resDir); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/VectorImporter.form ================================================
================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/dialogs/VectorImporter.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.dialogs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.ComboboxSpeedSearch; import com.intellij.ui.JBColor; import com.intellij.ui.LayeredIcon; import com.intellij.ui.ListCellRendererWrapper; import com.intellij.util.Consumer; import com.intellij.util.ui.EmptyIcon; import de.mprengemann.intellij.plugin.androidicons.IconApplication; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.IDefaultsController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IIconsImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IconsImporterController; import de.mprengemann.intellij.plugin.androidicons.controllers.iconimporter.IconsImporterObserver; import de.mprengemann.intellij.plugin.androidicons.controllers.icons.materialicons.IMaterialIconsController; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.model.IconPack; import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.widgets.ExportNameField; import de.mprengemann.intellij.plugin.androidicons.widgets.FileBrowserField; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; import java.util.List; public class VectorImporter extends DialogWrapper implements IconsImporterObserver { private final Project project; private Module module; private final IMaterialIconsController materialIconsController; private final ISettingsController settingsController; private final IDefaultsController defaultsController; private final IIconsImporterController controller; private JLabel imageContainer; private JComboBox assetSpinner; private JComboBox categorySpinner; private JPanel uiContainer; private FileBrowserField resRoot; private ExportNameField resExportName; private JComboBox searchField; private final ActionListener iconPackActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final IconPack selectedItem = (IconPack) source.getSelectedItem(); controller.setSelectedIconPack(selectedItem.getId()); } }; private final ActionListener categoryActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final String selectedItem = (String) source.getSelectedItem(); controller.setSelectedCategory(selectedItem); } }; private final ActionListener assetActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { final JComboBox source = (JComboBox) actionEvent.getSource(); final ImageAsset selectedItem = (ImageAsset) source.getSelectedItem(); controller.setSelectedAsset(selectedItem); } }; private final Consumer resRootListener = new Consumer() { @Override public void consume(File file) { String path; if (file == null) { path = ""; } else { path = file.getPath(); } controller.setExportRoot(path); } }; private final ItemListener searchFieldListener = new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { final ImageAsset selectedItem = (ImageAsset) searchField.getSelectedItem(); if (selectedItem == null) { return; } controller.setSelectedAsset(selectedItem); } }; private ComboboxSpeedSearch comboboxSpeedSearch; public VectorImporter(Project project, Module module) { super(project, true); this.project = project; this.module = module; final IconApplication container = ApplicationManager.getApplication().getComponent(IconApplication.class); materialIconsController = container.getControllerFactory().getMaterialIconsController(); settingsController = container.getControllerFactory().getSettingsController(); defaultsController = container.getControllerFactory().getDefaultsController(); controller = new IconsImporterController(defaultsController, materialIconsController); initResRoot(); setTitle("Vector Drawable Importer"); getHelpAction().setEnabled(true); AssetSpinnerRenderer renderer = new AssetSpinnerRenderer(); //noinspection GtkPreferredJComboBoxRenderer assetSpinner.setRenderer(renderer); imageContainer.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { super.componentResized(e); updateImage(); } }); initSearch(); controller.addObserver(this); init(); pack(); } private void initSearch() { final List imageAssets = new ArrayList(); imageAssets.addAll(materialIconsController.getAssets(materialIconsController.getCategories())); for (ImageAsset imageAsset : imageAssets) { searchField.addItem(imageAsset); } searchField.setRenderer(new AssetSpinnerRenderer()); comboboxSpeedSearch = new ComboboxSpeedSearch(searchField) { @Override protected String getElementText(Object element) { return element instanceof ImageAsset ? ((ImageAsset) element).getName() : ""; } }; searchField.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { comboboxSpeedSearch.showPopup(); } }); searchField.addItemListener(searchFieldListener); } @NotNull @Override public Action[] createActions() { return SystemInfo.isMac ? new Action[] {this.getHelpAction(), this.getCancelAction(), this.getOKAction()} : new Action[] {this.getOKAction(), this.getCancelAction(), this.getHelpAction()}; } private void prepareSpinner(JComboBox comboBox, ActionListener listener) { comboBox.removeActionListener(listener); comboBox.setSelectedItem(null); comboBox.removeAllItems(); } private void initSpinner(JComboBox comboBox, Object selectedItem, ActionListener listener) { comboBox.setSelectedItem(selectedItem); comboBox.addActionListener(listener); } private void updateCategories() { prepareSpinner(categorySpinner, categoryActionListener); for (String category : controller.getCategories()) { categorySpinner.addItem(category); } categorySpinner.setEnabled(categorySpinner.getItemCount() > 1); initSpinner(categorySpinner, controller.getSelectedCategory(), categoryActionListener); } private void updateAssets() { prepareSpinner(assetSpinner, assetActionListener); List assets = controller.getAssets(); for (ImageAsset asset : assets) { assetSpinner.addItem(asset); } initSpinner(assetSpinner, controller.getSelectedAsset(), assetActionListener); } private void updateExportName() { resExportName.setText(controller.getExportName()); } private void updateSearch() { searchField.removeItemListener(searchFieldListener); searchField.setSelectedItem(controller.getSelectedAsset()); searchField.addItemListener(searchFieldListener); } private void updateImage() { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (imageContainer == null) { return; } ImageUtils.updateImage(imageContainer, controller.getSelectedImageFile(), controller.getFormat()); } }); } @Override protected void doHelpAction() { materialIconsController.openHelp(); } @Override protected void doOKAction() { importIcons(); defaultsController.setImageAsset(controller.getSelectedAsset()); super.doOKAction(); settingsController.saveResRootForProject("file://" + controller.getExportRoot()); } private void importIcons() { controller.getTask(project).queue(); } @Nullable @Override protected ValidationInfo doValidate() { if (StringUtils.isEmpty(controller.getExportRoot())) { return new ValidationInfo("Please select the resources root.", resRoot); } if (StringUtils.isEmpty(controller.getExportName() .trim())) { return new ValidationInfo("Please select a name for the drawable.", resExportName); } else if (!controller.getExportName().matches("[a-z0-9_.]*")) { return new ValidationInfo( "Please select a valid name for the drawable. There are just \"[a-z0-9_.]\" allowed.", resExportName); } return null; } @Nullable @Override protected JComponent createCenterPanel() { return uiContainer; } @Override public void updated() { updateCategories(); updateAssets(); updateSearch(); updateImage(); updateExportName(); } private void createUIComponents() { resRoot = new FileBrowserField(FileBrowserField.RESOURCE_DIR_CHOOSER); } private void initResRoot() { resRoot.setSelectionListener(resRootListener); resRoot.initWithResourceRoot(project, module, settingsController); resExportName.addPropertyChangeListener("value", new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent propertyChangeEvent) { controller.setExportName((String) resExportName.getValue()); } }); } private class AssetSpinnerRenderer extends ListCellRendererWrapper { private final Icon EMPTY_ICON = EmptyIcon.ICON_18; @Override public void customize(JList list, ImageAsset imageAsset, int index, boolean selected, boolean hasFocus) { LayeredIcon layeredIcon = new LayeredIcon(2); File imageFile = controller.getThumbnailFile(imageAsset); if (imageFile != null && imageFile.exists()) { final ImageIcon icon = new ImageIcon(imageFile.getAbsolutePath()); layeredIcon.setIcon(icon, 1, (- icon.getIconWidth() + EMPTY_ICON.getIconWidth())/2, (EMPTY_ICON.getIconHeight() - icon.getIconHeight())/2); } setIcon(layeredIcon); final String searchQuery = comboboxSpeedSearch.getEnteredPrefix(); if (searchQuery != null && searchQuery.trim().length() > 0 && imageAsset.getName().contains(searchQuery)) { setBackground(JBColor.YELLOW); } else { setBackground(null); } } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/images/RefactoringTask.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.images; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.util.ui.UIUtil; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import de.mprengemann.intellij.plugin.androidicons.util.ExportNameUtils; import de.mprengemann.intellij.plugin.androidicons.util.ImageUtils; import de.mprengemann.intellij.plugin.androidicons.util.RunnableUtils; import org.apache.commons.io.FileUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class RefactoringTask extends Task.Backgroundable { private static final String TAG = RefactoringTask.class.getSimpleName(); private static final Logger LOGGER = Logger.getInstance(TAG); private Project project; private List imageInformationList = new ArrayList(); private int selection; private ProgressIndicator progressIndicator; public RefactoringTask(Project project) { super(project, "Importing Images...", true); this.project = project; } private void refactor() throws IOException, ProcessCanceledException { progressIndicator.checkCanceled(); progressIndicator.setIndeterminate(false); for (int i = 0; i < imageInformationList.size(); i++) { ImageInformation information = imageInformationList.get(i); progressIndicator.setText2(information.getExportName()); progressIndicator.checkCanceled(); if (information.isVector()) { copyTempImage(information); } else { exportTempImage(information); } progressIndicator.setFraction((float) (i + 1) / (float) imageInformationList.size()); } progressIndicator.setIndeterminate(true); progressIndicator.setText2("Finishing"); UIUtil.invokeLaterIfNeeded(new DumbAwareRunnable() { public void run() { try { move(project, imageInformationList); LocalFileSystem.getInstance().refresh(true); } catch (IOException e) { LOGGER.error(e); } } }); } public void addImage(ImageInformation imageInformation) { if (imageInformation == null) { return; } imageInformationList.add(imageInformation); } protected void onPreExecute() {} @Override public void run(@NotNull final ProgressIndicator progressIndicator) { if (imageInformationList.isEmpty()) { return; } this.progressIndicator = progressIndicator; onPreExecute(); ApplicationManager.getApplication().runReadAction(new Runnable() { @Override public void run() { try { refactor(); } catch (ProcessCanceledException e) { FileUtils.deleteQuietly(ImageInformation.getTempDir()); } catch (Exception e) { LOGGER.error(e); } } }); } protected void onPostExecute() {} private boolean checkFileExist(@Nullable PsiDirectory targetDirectory, int[] choice, PsiFile file, String name, String title) { if (targetDirectory == null) { return false; } final PsiFile existing = targetDirectory.findFile(name); if (existing == null || existing.equals(file)) { return false; } int selection; if (choice == null || choice[0] == -1) { final String message = String.format("File '%s' already exists in directory '%s'", name, targetDirectory.getVirtualFile().getPath()); String[] options = choice == null ? new String[] {"Overwrite", "Skip"} : new String[] {"Overwrite", "Skip", "Overwrite for all", "Skip for all"}; selection = Messages.showDialog(message, title, options, 0, Messages.getQuestionIcon()); if (selection == 2 || selection == 3) { this.selection = selection; } } else { selection = choice[0]; } if (choice != null && selection > 1) { choice[0] = selection % 2; selection = choice[0]; } if (selection == 0 && file != existing) { existing.delete(); } else { return true; } return false; } private void copy(Project project, String description, List sources, List targets) throws IOException { final PsiManager instance = PsiManager.getInstance(project); final List files = new ArrayList(); final List dirs = new ArrayList(); final List names = new ArrayList(); for (File source : sources) { LocalFileSystem.getInstance().findFileByIoFile(source); final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(source); if (vFile != null) { PsiFile item = instance.findFile(vFile); if (item != null) { files.add(item); } } } for (File target : targets) { VirtualFile targetDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(target.getParentFile()); if (targetDir == null) { FileUtils.forceMkdir(target.getParentFile()); targetDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(target.getParentFile()); } if (targetDir != null) { final PsiDirectory dir = instance.findDirectory(targetDir); if (dir != null) { dirs.add(dir); names.add(target.getName()); } } } if (files.size() == dirs.size() && !files.isEmpty()) { selection = -1; RunnableUtils.runWriteCommand(project, new Runnable() { @Override public void run() { PsiFile file; PsiDirectory dir; String name; for (int i = 0; i < files.size(); i++) { file = files.get(i); dir = dirs.get(i); name = names.get(i); if (checkFileExist(dir, new int[] {selection}, file, name, "Copy")) { continue; } dir.copyFileFrom(name, file); } } }, description); return; } throw new FileNotFoundException(sources.toString()); } private void move(Project project, List scalingInformationList) throws IOException { List tempFiles = new ArrayList(); List targets = new ArrayList(); for (ImageInformation information : scalingInformationList) { tempFiles.add(information.getTempImage()); targets.add(information.getTargetFile()); } final String description = ExportNameUtils.getExportDescription(scalingInformationList); copy(project, description, tempFiles, targets); RunnableUtils.runWriteCommand(project, new Runnable() { @Override public void run() { FileUtils.deleteQuietly(ImageInformation.getTempDir()); onPostExecute(); } }, description); } private void exportTempImage(final ImageInformation information) { try { BufferedImage resizeImageJpg; if (information.isNinePatch()) { resizeImageJpg = ImageUtils.resizeNinePatchImage(information); } else { resizeImageJpg = ImageUtils.resizeNormalImage(information); } ImageUtils.saveImageTempFile(resizeImageJpg, information); } catch (Exception e) { LOGGER.error(e); } } private void copyTempImage(ImageInformation information) { try { File exportFile = information.getTempImage(); if (exportFile != null) { if (!exportFile.getParentFile().exists()) { FileUtils.forceMkdir(exportFile.getParentFile()); } FileUtils.copyFile(information.getImageFile(), information.getTempImage()); } else { throw new IOException("Couldn't find .idea path."); } } catch (Exception e) { LOGGER.error(e); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/images/ResizeAlgorithm.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.images; import org.imgscalr.Scalr; import java.util.Arrays; import java.util.List; public enum ResizeAlgorithm { SCALR("Scalr"), THUMBNAILATOR("Thumbnailator"); private final String name; ResizeAlgorithm(String name) { this.name = name; } public List getMethods() { List methods; switch (this) { case SCALR: methods = Arrays.asList("Automatic", "Speed", "Balanced", "Quality", "Ultra Quality"); break; case THUMBNAILATOR: methods = Arrays.asList("Default"); break; default: throw new IllegalArgumentException(); } return methods; } public Object getMethod(String method) { switch (this) { case SCALR: if ("Automatic".equals(method)) { return Scalr.Method.AUTOMATIC; } else if ("Speed".equals(method)) { return Scalr.Method.SPEED; } else if ("Balanced".equals(method)) { return Scalr.Method.BALANCED; } else if ("Quality".equals(method)) { return Scalr.Method.QUALITY; } else if ("Ultra Quality".equals(method)) { return Scalr.Method.ULTRA_QUALITY; } break; case THUMBNAILATOR: default: return null; } throw new IllegalArgumentException("Method doesn't exist: " + method); } public String getPrettyMethod(Object method) { switch (this) { case SCALR: Scalr.Method scalrMethod = (Scalr.Method) method; switch (scalrMethod) { case AUTOMATIC: return "Automatic"; case SPEED: return "Speed"; case BALANCED: return "Balanced"; case QUALITY: return "Quality"; case ULTRA_QUALITY: return "Ultra Quality"; default: return null; } case THUMBNAILATOR: default: return "Default"; } } @Override public String toString() { return name; } public static ResizeAlgorithm from(String algorithm) { if (SCALR.name.equals(algorithm)) { return SCALR; } else if (THUMBNAILATOR.name.equals(algorithm)) { return THUMBNAILATOR; } throw new IllegalArgumentException("Algorithm doesn't exist: " + algorithm); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/listeners/RadioListListener.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.listeners; public interface RadioListListener { void radioSelectionChanged(int selectedIndex); } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/listeners/SimpleKeyListener.java ================================================ package de.mprengemann.intellij.plugin.androidicons.listeners; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class SimpleKeyListener implements KeyListener { @Override public void keyTyped(KeyEvent keyEvent) { } @Override public void keyPressed(KeyEvent keyEvent) { } @Override public void keyReleased(KeyEvent keyEvent) { } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/listeners/SimpleMouseListener.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.listeners; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class SimpleMouseListener implements MouseListener { @Override public void mouseClicked(MouseEvent mouseEvent) {} @Override public void mousePressed(MouseEvent mouseEvent) {} @Override public void mouseReleased(MouseEvent mouseEvent) {} @Override public void mouseEntered(MouseEvent mouseEvent) {} @Override public void mouseExited(MouseEvent mouseEvent) {} } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/Destination.java ================================================ package de.mprengemann.intellij.plugin.androidicons.model; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; public enum Destination { DRAWABLE("drawable"), MIPMAP("mipmap"); private final String folderName; Destination(String folderName) { this.folderName = folderName; } public String getFolderName() { return folderName; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/Format.java ================================================ package de.mprengemann.intellij.plugin.androidicons.model; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; public enum Format { JPG, PNG, XML; private static final Format[] NON_VECTOR_VALUES = new Format[] { JPG, PNG }; public static Format[] nonVectorValues() { return NON_VECTOR_VALUES; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/IconPack.java ================================================ package de.mprengemann.intellij.plugin.androidicons.model; import java.util.List; public class IconPack { private final String name; private final String id; private final String url; private final String path; private final List assets; private final List categories; public IconPack(String name, String id, String url, String path, List assets, List categories) { this.name = name; this.id = id; this.url = url; this.path = path; this.assets = assets; this.categories = categories; } public String getName() { return name; } public String getId() { return id; } public String getUrl() { return url; } public String getPath() { return path; } public List getAssets() { return assets; } public List getCategories() { return categories; } @Override public String toString() { return name; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; IconPack iconPack = (IconPack) o; return id.equals(iconPack.id); } @Override public int hashCode() { return id.hashCode(); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/ImageAsset.java ================================================ package de.mprengemann.intellij.plugin.androidicons.model; import org.jetbrains.annotations.NotNull; import java.io.Serializable; import java.util.List; public class ImageAsset implements Comparable, Serializable { private final String name; private final String pack; private final String category; private final List resolutions; private final List colors; private final List sizes; public ImageAsset(String name, String pack, String category, List resolutions, List colors, List sizes) { this.name = name; this.pack = pack; this.category = category; this.resolutions = resolutions; this.colors = colors; this.sizes = sizes; } public String getName() { return name; } public String getIconPack() { return pack; } public String getCategory() { return category; } public List getResolutions() { return resolutions; } public List getColors() { return colors; } public List getSizes() { return sizes; } @Override public String toString() { return name; } @Override public int compareTo(@NotNull ImageAsset o) { return getName().compareTo(o.getName()); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/ImageInformation.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.model; import com.intellij.openapi.application.PathManager; import de.mprengemann.intellij.plugin.androidicons.controllers.defaults.DefaultsController; import de.mprengemann.intellij.plugin.androidicons.images.ResizeAlgorithm; import java.io.File; import java.util.Locale; public class ImageInformation { public static final String TARGET_FILE_PATTERN = "%s/%s-%s/%s.%s"; public static final String TMP_ROOT_DIR = "plugin-images"; private final File imageFile; private final Resolution targetResolution; private final float factor; private final String exportPath; private final Format format; private final Destination destination; private final String exportName; private final boolean ninePatch; private final boolean vector; private ResizeAlgorithm algorithm; private Object method; private ImageInformation(File imageFile, Resolution targetResolution, float factor, String exportPath, Format format, Destination destination, String exportName, boolean isNinePatch, boolean isVector, ResizeAlgorithm algorithm, Object method) { this.imageFile = imageFile; this.targetResolution = targetResolution; this.factor = factor; this.exportPath = exportPath; this.format = format; this.destination = destination; this.exportName = exportName; this.ninePatch = isNinePatch; this.vector = isVector; this.algorithm = algorithm; this.method = method; } public static Builder newBuilder() { return new Builder(); } public static Builder newBuilder(ImageInformation imageInformation) { return new Builder(imageInformation); } public static File getTempDir() { return new File(PathManager.getPluginTempPath(), TMP_ROOT_DIR); } public File getTempImage() { return new File(getTempDir(), String.format("%s/%s", targetResolution.toString().toLowerCase(Locale.ENGLISH), exportName)); } public File getImageFile() { return imageFile; } public Resolution getTargetResolution() { return targetResolution; } public float getFactor() { return factor; } public String getExportPath() { return exportPath; } public String getExportName() { return exportName; } public boolean isNinePatch() { return ninePatch; } public ResizeAlgorithm getAlgorithm() { return algorithm; } public Object getMethod() { return method; } public Format getFormat() { return format; } public Destination getDestination() { return destination; } public File getTargetFile() { return new File(String.format(TARGET_FILE_PATTERN, exportPath, destination.getFolderName(), targetResolution.toString().toLowerCase(Locale.ENGLISH), exportName, format.toString().toLowerCase())); } public boolean isVector() { return vector; } public static class Builder { private File imageFile = null; private String exportPath = null; private String exportName = null; private float factor = 1f; // Optional parameters private boolean ninePatch = false; private boolean vector = false; private Resolution targetResolution = Resolution.XHDPI; private ResizeAlgorithm algorithm = DefaultsController.DEFAULT_ALGORITHM; private Object method = DefaultsController.DEFAULT_ALGORITHM.getMethod(DefaultsController.DEFAULT_METHOD); private Format format = DefaultsController.DEFAULT_FORMAT; private Destination destination = DefaultsController.DEFAULT_DESTINATION; private Builder() { } private Builder(ImageInformation imageInformation) { this.imageFile = imageInformation.imageFile; this.targetResolution = imageInformation.targetResolution; this.factor = imageInformation.factor; this.exportPath = imageInformation.exportPath; this.exportName = imageInformation.exportName; this.ninePatch = imageInformation.ninePatch; this.vector = imageInformation.vector; this.algorithm = imageInformation.algorithm; this.method = imageInformation.method; this.format = imageInformation.format; this.destination = imageInformation.destination; } public Builder setExportName(String exportName) { this.exportName = exportName; return this; } public Builder setExportPath(String exportPath) { this.exportPath = exportPath; return this; } public Builder setTargetResolution(Resolution targetResolution) { this.targetResolution = targetResolution; return this; } public Builder setFactor(float factor) { this.factor = factor; return this; } public Builder setVector(boolean vector) { this.vector = vector; return this; } public Builder setNinePatch(boolean ninePatch) { this.ninePatch = ninePatch; return setFormat(format); } public Builder setAlgorithm(ResizeAlgorithm algorithm) { this.algorithm = algorithm; return this; } public Builder setMethod(Object method) { this.method = method; return this; } public Builder setImageFile(File imageFile) { this.imageFile = imageFile; if (exportName == null) { exportName = imageFile.getName(); } return this; } public Builder setFormat(Format format) { this.format = isNinePatch() ? Format.PNG : format; return this; } public Builder setDestination(Destination destination) { this.destination = destination; return this; } public ImageInformation build() { return new ImageInformation(this.imageFile, this.targetResolution, this.factor, this.exportPath, this.format, this.destination, this.exportName, this.ninePatch, this.vector, this.algorithm, this.method); } public File getImageFile() { return imageFile; } public String getExportPath() { return exportPath; } public String getExportName() { return exportName; } public float getFactor() { return factor; } public Resolution getTargetResolution() { return targetResolution; } public boolean isNinePatch() { return ninePatch; } public boolean isVector() { return vector; } public ResizeAlgorithm getAlgorithm() { return algorithm; } public Object getMethod() { return method; } public Format getFormat() { return format; } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/Resolution.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.model; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; import java.lang.reflect.Type; public enum Resolution { LDPI, MDPI, HDPI, XHDPI, XXHDPI, XXXHDPI, TVDPI, ANYDPI; private static final Resolution[] RESOLUTIONS_WITHOUT_SVG = new Resolution[] { LDPI, MDPI, HDPI, XHDPI, XXHDPI, XXXHDPI, TVDPI }; public static Resolution[] nonVectorValues() { return RESOLUTIONS_WITHOUT_SVG; } public static Resolution from(String value) { if (TextUtils.isEmpty(value)) { throw new IllegalArgumentException(); } if (value.equalsIgnoreCase(LDPI.toString())) { return LDPI; } else if (value.equalsIgnoreCase(MDPI.toString())) { return MDPI; } else if (value.equalsIgnoreCase(HDPI.toString())) { return HDPI; } else if (value.equalsIgnoreCase(XHDPI.toString())) { return XHDPI; } else if (value.equalsIgnoreCase(XXHDPI.toString())) { return XXHDPI; } else if (value.equalsIgnoreCase(XXXHDPI.toString())) { return XXXHDPI; } else if (value.equalsIgnoreCase(TVDPI.toString())) { return TVDPI; } else if (value.equalsIgnoreCase(ANYDPI.toString())) { return ANYDPI; } return null; } public static class Deserializer implements JsonDeserializer { @Override public Resolution deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { return Resolution.from(jsonElement.getAsString()); } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/resources/ResourceLoader.java ================================================ package de.mprengemann.intellij.plugin.androidicons.resources; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.io.FileUtilRt; import org.jetbrains.annotations.NotNull; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import static java.lang.String.format; public class ResourceLoader { private static final String TAG = ResourceLoader.class.getSimpleName(); private static final Logger LOGGER = Logger.getInstance(TAG); static ResourceLoader rl = new ResourceLoader(); /** */ public static File getExportPath() { final String exportPath = PathManager.getSystemPath(); File export = new File(exportPath, "ADI-hack-export"); if (!export.exists()) { LOGGER.info(format("Creating export folder:\n%s", export.getAbsolutePath())); FileUtilRt.createDirectory(export); } return export; } public static File getAssetResource(String file) { return new File(getExportPath(), file); } /** Discontinued: No longer handles Exclamation mark in paths like
/home/daz/.AndroidStudio3.6/config/plugins/ADI-hack/lib/ADI-hack-0.7.jar!/assets/icon_packs.zip */ public static File getBundledResource(String file) { final URL resource = rl.getClass().getResource(getAssetPath(file)); if (resource == null) { return null; } try { LOGGER.info("Matt_"+resource.getPath()); // java.lang.IllegalArgumentException: URI is not hierarchical return new File(resource.toURI()); } catch (URISyntaxException e) { LOGGER.error(e); return new File(resource.getPath()); } } /** Untested. Superceded by {@link #getFromJar(String)} */ public static File getBundledResFile(String file) { BufferedReader reader = getBundledResReader(file); if (reader==null) return null; File out = new File(getExportPath(), file); LOGGER.info("Local output file: " + out.getAbsolutePath()); out.delete(); int count=0; try { out.createNewFile(); FileWriter fileWriter = new FileWriter(out, false); String line; while ((line = reader.readLine()) != null) { fileWriter.write(line); count++; } fileWriter.close(); } catch (IOException ioe) { LOGGER.error(format("Count=%d IOE: %s", count, ioe.getMessage())); } return out; } /** Extract the named file from the plugin distribution .jar
// https://stackoverflow.com/a/44077426/2376004 @param fn File to be extracted @return File instance describing output file or null */ public static File getFromJar(String fn) { InputStream is = getBundledResourceStream(fn); if (is==null) return null; String out = new File(getExportPath(), fn).getAbsolutePath(); LOGGER.info(format("Copying -> %s \n\tto -> %s", is.toString(), out)); try { Files.copy(is, Paths.get(out), StandardCopyOption.REPLACE_EXISTING); } catch (NoSuchFileException nsf) { LOGGER.error("getZip_nsf: " + nsf.getMessage()); return null; } catch (IOException ioe) { LOGGER.error("getZip_ioe: " + ioe.getMessage()); return null; } catch (Exception e) { LOGGER.error(e); return null; } return new File(out); } public static BufferedReader getBundledResReader(String file) { InputStream in = getBundledResourceStream(file); if (in==null) return null; LOGGER.info(format("Returning BufferedReader for %s", getAssetPath(file))); return new BufferedReader(new InputStreamReader(in)); } public static InputStream getBundledResourceStream(String file) { final URL resource = rl.getClass().getResource(getAssetPath(file)); if (resource == null) { return null; } LOGGER.info(format("Returning InputStream for %s", resource.getPath())); return rl.getClass().getResourceAsStream(getAssetPath(file)); } @NotNull private static String getAssetPath(String file) { return format("/assets/%s", file); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/AndroidFacetUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; import com.intellij.facet.ProjectFacetManager; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.facet.ResourceFolderManager; import java.util.List; public class AndroidFacetUtils { private AndroidFacetUtils() { } public static AndroidFacet getCurrentFacet(Project project, Module module) { AndroidFacet currentFacet = null; if (module == null) { return null; } List applicationFacets = ProjectFacetManager.getInstance(project).getFacets(AndroidFacet.ID); for (AndroidFacet facet : applicationFacets) { if (facet.getModule().getName().equals(module.getName())) { currentFacet = facet; break; } } return currentFacet; } public static String getResourcesRoot(Project project, Module module) { final AndroidFacet currentFacet = AndroidFacetUtils.getCurrentFacet(project, module); //final List allResourceDirectories = currentFacet.getAllResourceDirectories(); final List allResourceDirectories = ResourceFolderManager.getInstance(currentFacet).getFolders(); String exportRoot = ""; if (allResourceDirectories.size() == 1) { exportRoot = allResourceDirectories.get(0).getCanonicalPath(); } return exportRoot; } public static void updateActionVisibility(AnActionEvent e) { Module module = e.getData(LangDataKeys.MODULE); AndroidFacet androidFacet = AndroidFacetUtils.getCurrentFacet(AnAction.getEventProject(e), module); e.getPresentation().setVisible(module != null && androidFacet != null); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/ExportNameUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import org.apache.commons.io.FilenameUtils; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class ExportNameUtils { private ExportNameUtils() { } public static String getExportNameFromFilename(String filename) { String exportName = FilenameUtils.removeExtension(filename); if (exportName.matches("[a-z0-9_.]*")) { return exportName; } exportName = exportName.toLowerCase(); return exportName.replaceAll("([^(a-z0-9_.)])", "_"); } public static String getExportDescription(List scalingInformationList) { Set importFileNames = new HashSet(); for (ImageInformation information : scalingInformationList) { importFileNames.add(information.getImageFile().getName()); } StringBuilder builder = new StringBuilder("Import of "); // No multi import if (importFileNames.size() == 1) { builder.append(importFileNames.iterator().next()); if (scalingInformationList.size() == 1) { builder.append(" in resolution "); } else { builder.append(" in resolutions "); } for (Iterator iterator = scalingInformationList.iterator(); iterator.hasNext(); ) { ImageInformation information = iterator.next(); builder.append(information.getTargetResolution()); if (iterator.hasNext()) { builder.append(", "); } } } else { for (Iterator iterator = importFileNames.iterator(); iterator.hasNext(); ) { String exportName = iterator.next(); builder.append(exportName); if (iterator.hasNext()) { builder.append(", "); } } builder.append(" as ") .append(scalingInformationList.get(0).getExportName()); } return builder.toString(); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/ImageUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.ui.UIUtil; import de.mprengemann.intellij.plugin.androidicons.model.Format; import de.mprengemann.intellij.plugin.androidicons.model.ImageInformation; import net.coobird.thumbnailator.Thumbnails; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.math3.analysis.interpolation.SplineInterpolator; import org.apache.commons.math3.analysis.polynomials.PolynomialSplineFunction; import org.imgscalr.Scalr; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ImageUtils { private ImageUtils() { } public static void updateImage(JLabel imageContainer, File imageFile, Format format) { if (imageFile == null || !imageFile.exists()) { return; } BufferedImage img = null; try { img = ImageIO.read(imageFile); } catch (IOException e) { e.printStackTrace(); } if (img == null) { return; } int imageWidth = img.getWidth(); int imageHeight = img.getHeight(); int imageViewWidth = (int) imageContainer.getPreferredSize().getWidth(); int imageViewHeight = (int) imageContainer.getPreferredSize().getHeight(); double factor = getScaleFactorToFit(new Dimension(imageWidth, imageHeight), new Dimension(imageViewWidth, imageViewHeight)); imageWidth = (int) (factor * imageWidth); imageHeight = (int) (factor * imageHeight); if (imageWidth <= 0 || imageHeight <= 0 || imageViewWidth <= 0 || imageViewHeight <= 0) { return; } BufferedImage tmp = UIUtil.createImage(imageViewWidth, imageViewHeight, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = tmp.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); int x = (imageViewWidth - imageWidth) / 2; int y = (imageViewHeight - imageHeight) / 2; if (format == Format.PNG || format == Format.XML) { g2.drawImage(img, x, y, imageWidth, imageHeight, null); } else { g2.drawImage(img, x, y, imageWidth, imageHeight, Color.WHITE, null); } g2.dispose(); imageContainer.setIcon(new ImageIcon(tmp)); } public static double getScaleFactor(int iMasterSize, int iTargetSize) { if (iMasterSize == 0) { return 0d; } return (double) iTargetSize / (double) iMasterSize; } public static double getScaleFactorToFit(Dimension original, Dimension toFit) { double dScale = 1d; if (original != null && toFit != null) { double dScaleWidth = getScaleFactor(original.width, toFit.width); double dScaleHeight = getScaleFactor(original.height, toFit.height); dScale = Math.min(dScaleHeight, dScaleWidth); } return Math.min(1f, dScale); } public static BufferedImage resizeNormalImage(ImageInformation information) throws IOException { BufferedImage image = ImageIO.read(information.getImageFile()); return resizeNormalImage(image, information); } private static BufferedImage resizeNormalImage(BufferedImage image, ImageInformation information) throws IOException { int newWidth = image.getWidth(); int newHeight = image.getHeight(); if (MathUtils.floatEquals(information.getFactor(), 1f)) { return image; } if (information.getFactor() >= 0) { newWidth = (int) (newWidth * information.getFactor()); newHeight = (int) (newHeight * information.getFactor()); } BufferedImage resizedImage = null; switch (information.getAlgorithm()) { case SCALR: Scalr.Method scalrMethod = (Scalr.Method) information.getMethod(); resizedImage = Scalr.resize(image, scalrMethod, newWidth, newHeight, Scalr.OP_ANTIALIAS); break; case THUMBNAILATOR: return Thumbnails.of(image) .size(newWidth, newHeight) .asBufferedImage(); } return resizedImage; } public static BufferedImage resizeNinePatchImage(ImageInformation information) throws IOException { BufferedImage image = ImageIO.read(information.getImageFile()); if (MathUtils.floatEquals(information.getFactor(), 1f)) { return image; } BufferedImage trimmedImage = trim9PBorder(image); ImageInformation trimmedImageInformation = ImageInformation.newBuilder(information) .setExportName(getExportName("trimmed", information.getExportName())) .build(); saveImageTempFile(trimmedImage, trimmedImageInformation); trimmedImage = resizeNormalImage(trimmedImage, trimmedImageInformation); saveImageTempFile(trimmedImage, ImageInformation.newBuilder(trimmedImageInformation) .setExportName(getExportName("trimmedResized", information.getExportName())) .build()); BufferedImage borderImage; int w = trimmedImage.getWidth(); int h = trimmedImage.getHeight(); try { borderImage = generateBordersImage(image, w, h); } catch (Exception e) { return null; } int[] rgbArray = new int[w * h]; trimmedImage.getRGB(0, 0, w, h, rgbArray, 0, w); borderImage.setRGB(1, 1, w, h, rgbArray, 0, w); return borderImage; } public static String getExportName(String prefix, String name) { String exportName; if (!StringUtils.isEmpty(prefix.trim())) { exportName = prefix + "_" + name; } else { exportName = name; } return exportName; } private static BufferedImage trim9PBorder(BufferedImage inputImage) { BufferedImage trimedImage = UIUtil.createImage( inputImage.getWidth() - 2, inputImage.getHeight() - 2, BufferedImage.TYPE_INT_ARGB); Graphics2D g = trimedImage.createGraphics(); g.drawImage(inputImage, 0, 0, trimedImage.getWidth(), trimedImage.getHeight(), 1, 1, inputImage.getWidth() - 1, inputImage.getHeight() - 1, null); g.dispose(); return trimedImage; } private static void enforceBorderColors(BufferedImage inputImage) { Graphics2D g = inputImage.createGraphics(); g.setBackground(new Color(0, 0, 0, 0)); g.clearRect(1, 1, inputImage.getWidth() - 2, inputImage.getHeight() - 2); g.dispose(); int w = inputImage.getWidth(); int h = inputImage.getHeight(); int[] rgb = new int[w * h]; inputImage.getRGB(0, 0, w, h, rgb, 0, w); for (int i = 0; i < rgb.length; i++) { if ((0xff000000 & rgb[i]) != 0) { rgb[i] = 0xff000000; } } inputImage.setRGB(0, 0, w, h, rgb, 0, w); } private static BufferedImage generateBordersImage(BufferedImage source, int trimmedWidth, int trimmedHeight) throws IOException { BufferedImage finalBorder = UIUtil.createImage(trimmedWidth + 2, trimmedHeight + 2, BufferedImage.TYPE_INT_ARGB); int cutW = source.getWidth() - 2; int cutH = source.getHeight() - 2; // left border BufferedImage leftBorder = UIUtil.createImage(1, cutH, BufferedImage.TYPE_INT_ARGB); leftBorder.setRGB(0, 0, 1, cutH, source.getRGB(0, 1, 1, cutH, null, 0, 1), 0, 1); verifyBorderImage(leftBorder); leftBorder = resizeBorder(leftBorder, 1, trimmedHeight); finalBorder.setRGB(0, 1, 1, trimmedHeight, leftBorder.getRGB(0, 0, 1, trimmedHeight, null, 0, 1), 0, 1); // right border BufferedImage rightBorder = UIUtil.createImage(1, cutH, BufferedImage.TYPE_INT_ARGB); rightBorder.setRGB(0, 0, 1, cutH, source.getRGB(cutW + 1, 1, 1, cutH, null, 0, 1), 0, 1); verifyBorderImage(rightBorder); rightBorder = resizeBorder(rightBorder, 1, trimmedHeight); finalBorder.setRGB(trimmedWidth + 1, 1, 1, trimmedHeight, rightBorder .getRGB(0, 0, 1, trimmedHeight, null, 0, 1), 0, 1); // top border BufferedImage topBorder = UIUtil.createImage(cutW, 1, BufferedImage.TYPE_INT_ARGB); topBorder.setRGB(0, 0, cutW, 1, source.getRGB(1, 0, cutW, 1, null, 0, cutW), 0, cutW); verifyBorderImage(topBorder); topBorder = resizeBorder(topBorder, trimmedWidth, 1); finalBorder.setRGB(1, 0, trimmedWidth, 1, topBorder.getRGB(0, 0, trimmedWidth, 1, null, 0, trimmedWidth), 0, trimmedWidth); // bottom border BufferedImage bottomBorder = UIUtil.createImage(cutW, 1, BufferedImage.TYPE_INT_ARGB); bottomBorder.setRGB(0, 0, cutW, 1, source.getRGB(1, cutH + 1, cutW, 1, null, 0, cutW), 0, cutW); verifyBorderImage(bottomBorder); bottomBorder = resizeBorder(bottomBorder, trimmedWidth, 1); finalBorder.setRGB(1, trimmedHeight + 1, trimmedWidth, 1, bottomBorder.getRGB(0, 0, trimmedWidth, 1, null, 0, trimmedWidth), 0, trimmedWidth); return finalBorder; } private static BufferedImage resizeBorder(final BufferedImage border, int targetWidth, int targetHeight) throws IOException { if (targetWidth > border.getWidth() || targetHeight > border.getHeight()) { BufferedImage endImage = rescaleBorder(border, targetWidth, targetHeight); enforceBorderColors(endImage); return endImage; } int w = border.getWidth(); int h = border.getHeight(); int[] data = border.getRGB(0, 0, w, h, null, 0, w); int[] newData = new int[targetWidth * targetHeight]; float widthRatio = (float) Math.max(targetWidth - 1, 1) / (float) Math.max(w - 1, 1); float heightRatio = (float) Math.max(targetHeight - 1, 1) / (float) Math.max(h - 1, 1); for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { if ((0xff000000 & data[y * w + x]) != 0) { int newX = Math.min(Math.round(x * widthRatio), targetWidth - 1); int newY = Math.min(Math.round(y * heightRatio), targetHeight - 1); newData[newY * targetWidth + newX] = data[y * w + x]; } } } BufferedImage img = UIUtil.createImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB); img.setRGB(0, 0, targetWidth, targetHeight, newData, 0, targetWidth); return img; } private static void verifyBorderImage(BufferedImage border) throws IOException { int[] rgb = border.getRGB(0, 0, border.getWidth(), border.getHeight(), null, 0, border.getWidth()); for (int aRgb : rgb) { if ((0xff000000 & aRgb) != 0) { if (aRgb != 0xff000000 && aRgb != 0xffff0000) { throw new IOException(); } } } } private static BufferedImage rescaleBorder(BufferedImage image, int targetWidth, int targetHeight) throws IOException { if (targetWidth == 0) { targetWidth = 1; } if (targetHeight == 0) { targetHeight = 1; } if (targetHeight > 1 && targetWidth > 1) { throw new IOException(); } int w = image.getWidth(); int h = image.getHeight(); int[] data = image.getRGB(0, 0, w, h, null, 0, w); int[] newData = new int[targetWidth * targetHeight]; for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { newData[y * targetWidth + x] = 0x00; } } List startPositions = new ArrayList(); List endPositions = new ArrayList(); boolean inBlock = false; if (targetHeight == 1) { for (int x = 0; x < w; x++) { if ((0xff000000 & data[x]) != 0) { if (!inBlock) { inBlock = true; startPositions.add(x); } } else if (inBlock) { endPositions.add(x - 1); inBlock = false; } } if (inBlock) { endPositions.add(w - 1); } } else { for (int y = 0; y < h; y++) { if ((0xff000000 & data[y]) != 0) { if (!inBlock) { inBlock = true; startPositions.add(y); } } else if (inBlock) { endPositions.add(y - 1); inBlock = false; } } if (inBlock) { endPositions.add(h - 1); } } try { SplineInterpolator interpolator = new SplineInterpolator(); PolynomialSplineFunction function = interpolator.interpolate(new double[] {0f, 1f, Math.max(w - 1, h - 1)}, new double[] {0f, 1f, Math.max(targetHeight - 1, targetWidth - 1)}); for (int i = 0; i < startPositions.size(); i++) { int start = startPositions.get(i); int end = endPositions.get(i); for (int j = (int) function.value(start); j <= (int) function.value(end); j++) { newData[j] = 0xff000000; } } BufferedImage img = UIUtil.createImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_ARGB); img.setRGB(0, 0, targetWidth, targetHeight, newData, 0, targetWidth); return img; } catch (Exception e) { Logger.getInstance(ImageUtils.class).error("resizeBorder", e); } return null; } public static File saveImageTempFile(BufferedImage resizedImage, ImageInformation imageInformation) throws IOException { File exportFile = imageInformation.getTempImage(); if (exportFile != null) { if (!exportFile.getParentFile().exists()) { FileUtils.forceMkdir(exportFile.getParentFile()); } if (imageInformation.getFormat() == Format.JPG) { resizedImage = ensureJpgCompatibility(resizedImage); } ImageIO.write(resizedImage, imageInformation.getFormat().toString(), exportFile); return exportFile; } else { throw new IOException("Couldn't find .idea path."); } } private static BufferedImage ensureJpgCompatibility(BufferedImage image) { BufferedImage imageRGB = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2 = imageRGB.createGraphics(); g2.drawImage(image, 0, 0, imageRGB.getWidth(), imageRGB.getHeight(), Color.WHITE, null); g2.dispose(); return imageRGB; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/MathUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; public class MathUtils { private MathUtils() { } public static boolean floatEquals(float a, float b) { return Float.compare(a, b) == 0; } public static int clamp(int val, int min, int max) { return Math.max(Math.min(val, max), min); } public static double clamp(double val, double min, double max) { return Math.max(Math.min(val, max), min); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/RefactorUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; public class RefactorUtils { private static final float FACTOR_LDPI = 0.75f; private static final float FACTOR_MDPI = 1f; private static final float FACTOR_HDPI = 1.5f; private static final float FACTOR_XHDPI = 2f; private static final float FACTOR_XXHDPI = 3f; private static final float FACTOR_XXXHDPI = 4f; private static final float FACTOR_TVDPI = 4f / 3f; private RefactorUtils() { } public static float getScaleFactor(Resolution target, Resolution baseLine) { switch (baseLine) { case MDPI: switch (target) { case LDPI: return 1f / FACTOR_MDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_MDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_MDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_MDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_MDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_MDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_MDPI * FACTOR_TVDPI; } break; case LDPI: switch (target) { case LDPI: return 1f / FACTOR_LDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_LDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_LDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_LDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_LDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_LDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_LDPI * FACTOR_TVDPI; } break; case HDPI: switch (target) { case LDPI: return 1f / FACTOR_HDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_HDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_HDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_HDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_HDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_HDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_HDPI * FACTOR_TVDPI; } break; case XHDPI: switch (target) { case LDPI: return 1f / FACTOR_XHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XHDPI * FACTOR_TVDPI; } break; case XXHDPI: switch (target) { case LDPI: return 1f / FACTOR_XXHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XXHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XXHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XXHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XXHDPI * FACTOR_TVDPI; } break; case XXXHDPI: switch (target) { case LDPI: return 1f / FACTOR_XXXHDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_XXXHDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_XXXHDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_XXXHDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_XXXHDPI * FACTOR_TVDPI; } break; case TVDPI: switch (target) { case LDPI: return 1f / FACTOR_TVDPI * FACTOR_LDPI; case MDPI: return 1f / FACTOR_TVDPI * FACTOR_MDPI; case HDPI: return 1f / FACTOR_TVDPI * FACTOR_HDPI; case XHDPI: return 1f / FACTOR_TVDPI * FACTOR_XHDPI; case XXHDPI: return 1f / FACTOR_TVDPI * FACTOR_XXHDPI; case XXXHDPI: return 1f / FACTOR_TVDPI * FACTOR_XXXHDPI; case TVDPI: return 1f / FACTOR_TVDPI * FACTOR_TVDPI; } } throw new IllegalArgumentException(); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/RunnableUtils.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.util; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.project.Project; public class RunnableUtils { public static void runWriteCommand(Project project, Runnable cmd, String description) { CommandProcessor.getInstance().executeCommand(project, new WriteAction(cmd), description, project.getName()); } public static class WriteAction implements Runnable { WriteAction(Runnable cmd) { this.cmd = cmd; } public void run() { ApplicationManager.getApplication().runWriteAction(cmd); } Runnable cmd; } private RunnableUtils() { } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/util/TextUtils.java ================================================ package de.mprengemann.intellij.plugin.androidicons.util; public final class TextUtils { private TextUtils() { } public static boolean isEmpty(final CharSequence s) { return s == null || s.length() == 0; } public static boolean isBlank(final CharSequence s) { if (s == null) { return true; } for (int i = 0; i < s.length(); i++) { if (Character.isWhitespace(s.charAt(i))) { continue; } return false; } return true; } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/widgets/ExportNameField.java ================================================ package de.mprengemann.intellij.plugin.androidicons.widgets; import com.intellij.openapi.ui.Messages; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; import javax.swing.*; import javax.swing.text.DefaultFormatter; import java.text.ParseException; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class ExportNameField extends JFormattedTextField { public ExportNameField() { super(new RegexFormatter("[a-z0-9_\\.]+")); setInputVerifier(new InputVerifier() { public boolean verify(JComponent input) { return true; } public boolean shouldYieldFocus(JComponent input) { if (input instanceof JFormattedTextField) { final JFormattedTextField ftf = (JFormattedTextField) input; final JFormattedTextField.AbstractFormatter formatter = ftf.getFormatter(); if (formatter != null && !TextUtils.isEmpty(ftf.getText())) { try { formatter.stringToValue(ftf.getText()); } catch (final ParseException e) { SwingUtilities.invokeLater(new Runnable() { public void run() { Messages.showErrorDialog("Please select a valid name for the drawable. Just \"[a-z0-9_.]\" is allowed.", "No Valid Name"); } }); } } } return true; } }); } private static class RegexFormatter extends DefaultFormatter { private Pattern pattern; public RegexFormatter(String pattern) throws PatternSyntaxException { super(); setPattern(Pattern.compile(pattern)); setOverwriteMode(false); setCommitsOnValidEdit(true); setAllowsInvalid(false); } public void setPattern(Pattern pattern) { this.pattern = pattern; } public Pattern getPattern() { return pattern; } public Object stringToValue(String text) throws ParseException { Pattern pattern = getPattern(); if (pattern != null && !TextUtils.isEmpty(text)) { Matcher matcher = pattern.matcher(text); if (matcher.matches()) { return super.stringToValue(text); } throw new ParseException("Pattern did not match", 0); } return text; } } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/widgets/FileBrowserField.java ================================================ package de.mprengemann.intellij.plugin.androidicons.widgets; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.fileChooser.ex.FileDrop; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextBrowseFolderListener; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Consumer; import de.mprengemann.intellij.plugin.androidicons.controllers.settings.ISettingsController; import de.mprengemann.intellij.plugin.androidicons.dialogs.ResourcesDialog; import de.mprengemann.intellij.plugin.androidicons.util.AndroidFacetUtils; import de.mprengemann.intellij.plugin.androidicons.util.TextUtils; import org.intellij.images.fileTypes.ImageFileTypeManager; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.facet.ResourceFolderManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.List; public class FileBrowserField extends TextFieldWithBrowseButton { public static final FileChooserDescriptor RESOURCE_DIR_CHOOSER = FileChooserDescriptorFactory.createSingleFolderDescriptor(); private static final FileType IMAGE_FILE_TYPE = ImageFileTypeManager.getInstance().getImageFileType(); public static final FileChooserDescriptor IMAGE_FILE_CHOOSER = new FileChooserDescriptor(true, false, false, false, false, false) { public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) { if (file.isDirectory()) { return super.isFileVisible(file, showHiddenFiles); } return file.getFileType().equals(IMAGE_FILE_TYPE); } public boolean isFileSelectable(VirtualFile file) { if (file.isDirectory()) { return super.isFileSelectable(file); } return super.isFileSelectable(file) && file.getFileType().equals(IMAGE_FILE_TYPE); } }; public static final FileChooserDescriptor IMAGE_FILES_FOLDER_CHOOSER = new FileChooserDescriptor(true, true, false, false, false, true) { public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) { if (file.isDirectory()) { return super.isFileVisible(file, showHiddenFiles); } return file.getFileType().equals(IMAGE_FILE_TYPE); } public boolean isFileSelectable(VirtualFile file) { if (file.isDirectory()) { return super.isFileSelectable(file); } return super.isFileSelectable(file) && file.getFileType().equals(IMAGE_FILE_TYPE); } }; static { RESOURCE_DIR_CHOOSER.setTitle("Select Resource Root"); IMAGE_FILE_CHOOSER.setTitle("Select Image Asset"); //noinspection DialogTitleCapitalization IMAGE_FILES_FOLDER_CHOOSER.setTitle("Select Image Asset(s)"); } private Project project; private ISettingsController settingsController = null; private Consumer listener; private FileChooserDescriptor descriptor; public FileBrowserField(FileChooserDescriptor descriptor) { super(); this.descriptor = descriptor; getTextField().setEditable(false); } public void init(Project project, ISettingsController settingsController) { this.project = project; this.settingsController = settingsController; initFileChooser(); } private void initFileChooser() { addBrowseFolderListener(new TextBrowseFolderListener(descriptor) { @Override protected void onFileChosen(@NotNull VirtualFile chosenFile) { super.onFileChosen(chosenFile); if (settingsController != null) { settingsController.saveLastImageFolder(chosenFile.getCanonicalPath()); } setText(chosenFile.getCanonicalPath()); } @Nullable @Override protected Project getProject() { return project; } @Nullable @Override protected VirtualFile getInitialFile() { VirtualFile path = super.getInitialFile(); if (path != null || settingsController == null) { return path; } String directoryName = settingsController.getLastImageFolder(); String expandPath = PathMacroManager.getInstance(project).expandPath(directoryName); if (expandPath == null) { return null; } for (path = LocalFileSystem.getInstance().findFileByPath(expandPath); path == null && directoryName.length() > 0; path = LocalFileSystem.getInstance().findFileByPath(directoryName)) { int pos = directoryName.lastIndexOf(47); if (pos <= 0) { break; } directoryName = directoryName.substring(0, pos); } return path; } }); new FileDrop(getTextField(), new FileDrop.Target() { @Override public FileChooserDescriptor getDescriptor() { return descriptor; } @Override public boolean isHiddenShown() { return false; } @Override public void dropFiles(final List virtualFiles) { if (virtualFiles == null || virtualFiles.isEmpty()) { return; } final VirtualFile file = virtualFiles.get(0); final String filePath = file.getCanonicalPath(); settingsController.saveLastImageFolder(filePath); setText(filePath); } }); } public void initWithResourceRoot(Project project, Module module, ISettingsController settings) { init(project, settings); final VirtualFile resourceDir = settingsController.getResourceRoot(); if (resourceDir == null) { final ResourcesDialog.ResourceSelectionListener listener = new ResourcesDialog.ResourceSelectionListener() { @Override public void onResourceSelected(VirtualFile resDir) { setText(resDir.getCanonicalPath()); } }; getResRootFile(this.project, module, listener); } else { setText(resourceDir.getCanonicalPath()); } } private void getResRootFile(Project project, Module module, ResourcesDialog.ResourceSelectionListener listener) { final AndroidFacet currentFacet = AndroidFacetUtils.getCurrentFacet(project, module); //final List allResourceDirectories = currentFacet.getAllResourceDirectories(); final List allResourceDirectories = ResourceFolderManager.getInstance(currentFacet).getFolders(); if (allResourceDirectories.size() == 1) { listener.onResourceSelected(allResourceDirectories.get(0)); } else if (allResourceDirectories.size() > 1) { ResourcesDialog dialog = new ResourcesDialog(project, allResourceDirectories, listener); dialog.show(); } } @Override public void setText(String text) { super.setText(text); notifyListener(text); } private void notifyListener(String filePath) { if (listener == null || TextUtils.isEmpty(filePath)) { return; } listener.consume(new File(filePath)); } public void setSelectionListener(Consumer fileConsumer) { this.listener = fileConsumer; notifyListener(getText()); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/widgets/RadioButtonList.java ================================================ /* * Copyright 2015 Marc Prengemann * * 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. */ package de.mprengemann.intellij.plugin.androidicons.widgets; import com.intellij.ui.ClickListener; import com.intellij.ui.components.JBList; import com.intellij.util.Function; import com.intellij.util.containers.BidirectionalMap; import com.intellij.util.ui.UIUtil; import de.mprengemann.intellij.plugin.androidicons.listeners.RadioListListener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.List; public class RadioButtonList extends JBList { private static final int DEFAULT_RADIO_WIDTH = 20; private RadioListListener radioListListener; private final BidirectionalMap myItemMap = new BidirectionalMap(); private final ButtonGroup buttonGroup = new ButtonGroup(); public RadioButtonList(final RadioListListener radioListListener) { this(new DefaultListModel(), radioListListener); } public RadioButtonList(final DefaultListModel dataModel, final RadioListListener radioListListener) { this(dataModel); setRadioListListener(radioListListener); } public RadioButtonList() { this(new DefaultListModel()); } public RadioButtonList(final DefaultListModel dataModel) { super(); //noinspection unchecked setModel(dataModel); setCellRenderer(new CellRenderer()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); setBorder(BorderFactory.createEtchedBorder()); addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { if (e.getKeyChar() == ' ') { for (int index : getSelectedIndices()) { if (index >= 0) { JRadioButton radioButton = (JRadioButton) getModel().getElementAt(index); setSelected(radioButton, index); } } } } }); new ClickListener() { @Override public boolean onClick(@NotNull MouseEvent e, int clickCount) { if (isEnabled()) { int index = locationToIndex(e.getPoint()); if (index != -1) { JRadioButton radioButton = (JRadioButton) getModel().getElementAt(index); setSelected(radioButton, index); return true; } } return false; } }.installOn(this); } public void setItems(final List items, @Nullable Function converter) { clear(); for (T item : items) { String text = converter != null ? converter.fun(item) : item.toString(); addItem(item, text, false); } } public void addItem(T item, String text, boolean selected) { JRadioButton checkBox = new JRadioButton(text, selected); if (myItemMap.isEmpty()) { checkBox.setSelected(true); if (radioListListener != null) { radioListListener.radioSelectionChanged(0); } } myItemMap.put(item, checkBox); buttonGroup.add(checkBox); //noinspection unchecked ((DefaultListModel) getModel()).addElement(checkBox); } public void clear() { ((DefaultListModel) getModel()).clear(); myItemMap.clear(); } private void setSelected(JRadioButton radioButton, int index) { boolean value = !radioButton.isSelected(); radioButton.setSelected(value); repaint(); // fire change notification in case if we've already initialized model final ListModel model = getModel(); if (model instanceof DefaultListModel) { //noinspection unchecked ((DefaultListModel) model).setElementAt(getModel().getElementAt(index), index); } if (radioListListener != null) { radioListListener.radioSelectionChanged(index); } } public void setRadioListListener(RadioListListener checkBoxListListener) { this.radioListListener = checkBoxListListener; } protected void adjustRendering(final JRadioButton checkBox, final boolean selected, final boolean hasFocus) { } private class CellRenderer implements ListCellRenderer { private final Border mySelectedBorder; private final Border myBorder; private CellRenderer() { mySelectedBorder = UIManager.getBorder("List.focusCellHighlightBorder"); final Insets borderInsets = mySelectedBorder.getBorderInsets(new JCheckBox()); myBorder = new EmptyBorder(borderInsets); } @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JRadioButton radioButton = (JRadioButton) value; if (!UIUtil.isUnderNimbusLookAndFeel()) { radioButton.setBackground(getBackground(isSelected, radioButton)); radioButton.setForeground(getForeground(isSelected, radioButton)); } radioButton.setEnabled(isEnabled()); radioButton.setFont(getFont(radioButton)); radioButton.setFocusPainted(false); radioButton.setBorderPainted(true); radioButton.setBorder(isSelected ? mySelectedBorder : myBorder); adjustRendering(radioButton, isSelected, cellHasFocus); return radioButton; } } protected Font getFont(final JRadioButton checkbox) { return getFont(); } protected Color getBackground(final boolean isSelected, final JRadioButton checkbox) { return isSelected ? getSelectionBackground() : getBackground(); } protected Color getForeground(final boolean isSelected, final JRadioButton checkbox) { return isSelected ? getSelectionForeground() : getForeground(); } } ================================================ FILE: src/main/java/de/mprengemann/intellij/plugin/androidicons/widgets/ResolutionButtonModel.java ================================================ package de.mprengemann.intellij.plugin.androidicons.widgets; import de.mprengemann.intellij.plugin.androidicons.model.Resolution; import javax.swing.*; public class ResolutionButtonModel extends JToggleButton.ToggleButtonModel { private Resolution resolution; public ResolutionButtonModel(Resolution resolution) { this.resolution = resolution; } public Resolution getResolution() { return resolution; } } ================================================ FILE: src/main/resources/META-INF/plugin.xml ================================================ drawable.importer.pluginId.7658.hack' Android Drawable Importer Marc Prengemann (asleep?) Hack to resurrect Marc Prengemann's magnificent plugin for AS 3.5? onwards.

This plugin consists of three main features. You can access them by a right-click anywhere, but not on a file, inside an Android module under New.

1. AndroidIcons and Material Icons Drawable Import
You are able to select the asset, specify your color, change the target resource name and select all the resolutions you want to import.
All the missing folders will be created automatically. If there are already drawables with the same name, you will be warned. You can even search for your desired asset by just start typing when the first spinner has focus.
Since Material Icons provide also Vector Drawables, those can be imported now as well!

2. Batch Drawable Import
Select assets (or a whole folder) and specify the source resolutions. You can change the source size of every image as well. Specify all resolutions, to which it should be resized to.
This works also with 9-Patch-Images. But take care: sometimes it's necessary to remove / add the one or other "pixel" in the 9-Patch-Editor. But just give it a try :)

3. Multisource-Drawable
Ever got a zip with drawables for your Android project by your designer with the following structure?

root/
./drawable_ldpi.png
./drawable_mdpi.png
./drawable_hdpi.png
./drawable_xhdpi.png

No problem! Now you can just select for every resolution a different asset, specify one name for them, and the rest is done by the plugin.
Or even easier, you can select the whole zip, and this plugin will auto extract the asset to the best matching folder.

Hint: When you select an asset, you can also just drag a file from your explorer to the text field and drop it there. ]]>
com.intellij.modules.lang com.intellij.modules.java org.jetbrains.android de.mprengemann.intellij.plugin.androidicons.IconApplication de.mprengemann.intellij.plugin.androidicons.IProjectSettingsComponent de.mprengemann.intellij.plugin.androidicons.ProjectSettingsComponent
================================================ FILE: src/main/resources/assets/content.json ================================================ [{"assets": [{"category": "all", "name": "ic_action_achievement", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_add", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_alarm", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_amazon", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_anchor", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_android", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_armchair", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_bottom", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_left", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_left_bottom", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_left_top", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_right", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_right_bottom", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_right_top", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_arrow_top", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_attachment", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_attachment_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_ball", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_balloon", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_barcode_1", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_barcode_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bargraph", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bars", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_basket", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bell", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bike", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_blob", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bluetooth", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_book", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bookmark", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_box", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_brush", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bug", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bulb", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_bus", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_business", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_calculator", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_calendar_day", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_calendar_month", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_camera", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_cancel", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_car", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_cart", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_circles", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_clock", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_cloud", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_cloudy", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_coffee", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_coffee2go", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_collapse", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_compass", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_contrast", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_copy", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_creditcard", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_crop", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_cut", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_database", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dialer", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dialog", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice1", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice3", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice4", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice5", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dice6", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_document", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dontlike", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_download", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_drag", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_drop", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_dropbox", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_edit", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_angry", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_basic", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_cool", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_cry", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_err", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_evil", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_kiss", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_laugh", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_shame", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_tongue", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_wink", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_emo_wonder", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_exit", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_expand", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_export", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_eye_closed", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_eye_open", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_facebook", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_feed", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_filter", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_flag", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_flags", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_flash", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_folder_closed", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_folder_open", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_folder_tabs", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_bigger", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_bold", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_faces", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_italic", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_smaller", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_font_underline", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_foursquare", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_gear", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_github", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_glasses", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_globe", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_gmail", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_goleft", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_google_play", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_goright", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_gplus", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_grow", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_guitar", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_halt", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_headphones", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_heart", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_help", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_home", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_html5", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_import", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_inbox", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_info", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_io", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_joypad", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_key", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_knight", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_lab", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_laptop", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_like", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_line_chart", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_link", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_linkedin", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_list", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_list_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_location", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_location_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_lock_closed", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_lock_open", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_magnet", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_mail", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_map", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_mic", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_micoff", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_minus", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_mist", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_monitor", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_monolog", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_more", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_mouse", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_movie", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_music_1", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_music_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_mustache", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_navigate", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_news", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_overflow", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_paste", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_paypal", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone_end", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone_incoming", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone_missed", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone_outgoing", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_phone_start", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_picker", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_picture", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_pie_chart", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_pill", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_pin", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_pinterest", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_plane", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_planet", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_forw", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_next", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_pause", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_play", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_prev", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_repeat", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_repeat_1", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_rew", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_schuffle", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_playback_stop", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_plug", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_plusone", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_present", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_process_end", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_process_save", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_process_start", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_puzzle", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_rain", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_record", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_redo", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_reload", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_restaurant", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_rocket", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_ruler", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_save", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_search", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_send", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_settings", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_share", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_share_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_shield", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_signal", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_sms", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_sort_1", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_sort_2", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_soundcloud", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_stamp", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_star_0", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_star_10", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_star_5", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_stumbleupon", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_sun", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tablet", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tag", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tags", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_temperature", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tick", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_ticket", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tiles_large", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tiles_small", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_train", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_trash", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tshirt", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tumblr", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_turn_left", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_turn_right", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_tv", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_twitter", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_umbrella", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_undo", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_upload", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_user", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_users", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_video", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_vimeo", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_volume", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_volume_down", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_volume_mute", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_volume_up", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_warning", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_wheel", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_wifi", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_wizard", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_yinyang", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}, {"category": "all", "name": "ic_action_youtube", "sizes": ["18dp"], "colors": ["black", "blue_dark", "blue_light", "green_dark", "green_light", "holo_dark", "holo_light", "purple_dark", "purple_light", "red_dark", "red_light", "white", "yellow_dark", "yellow_light"], "resolutions": ["hdpi", "ldpi", "mdpi", "xhdpi", "xxhdpi"], "pack": "android_icons"}], "url": "http://www.androidicons.com/", "path": "android_icons/", "id": "android_icons", "categories": ["all"], "name": "Android Icons"}, {"assets": [{"category": "action", "name": "ic_3d_rotation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_accessibility", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_accessible", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_account_balance", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_account_balance_wallet", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_account_balance", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_account_box", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_account_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_add_shopping_cart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_alarm_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_alarm", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_alarm_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_alarm_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_alarm", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_all_out", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_android", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_announcement", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_aspect_ratio", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assessment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment_ind", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment_late", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment_return", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment_returned", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment_turned_in", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_assignment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_autorenew", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_backup", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_book", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_bookmark", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_bookmark_border", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_bookmark", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_bug_report", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_build", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_cached", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_camera_enhance", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_card_giftcard", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_card_membership", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_card_travel", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_change_history", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_check_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_chrome_reader_mode", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_class", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_code", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_compare_arrows", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_copyright", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_credit_card", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_dashboard", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_date_range", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_delete", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_delete_forever", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_delete", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_description", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_dns", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_done_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_done", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_donut_large", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_donut_small", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_eject", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_euro_symbol", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_event", "sizes": ["12dp", "16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_event_seat", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_event", "sizes": ["12dp", "16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_exit_to_app", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_explore", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_extension", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_face", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_favorite", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_favorite_border", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_favorite", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_feedback", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_find_in_page", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_find_replace", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_fingerprint", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_flight_land", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_flight_takeoff", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_flip_to_back", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_flip_to_front", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_g_translate", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_gavel", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_get_app", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_gif", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_grade", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_group_work", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_help", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_help_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_help", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_highlight_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_history", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_home", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_hourglass_empty", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_hourglass_full", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_http", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_https", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_important_devices", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_info", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_info_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_info", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_input", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_invert_colors", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_label", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_label_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_label", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_language", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_launch", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_lightbulb_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_line_style", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_line_weight", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_list", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_lock", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_lock_open", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_lock_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_lock", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_loyalty", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_markunread_mailbox", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_motorcycle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_note_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_offline_pin", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_opacity", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_open_in_browser", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_open_in_new", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_open_with", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_pageview", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_pan_tool", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_payment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_camera_mic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_contact_calendar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_data_setting", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_device_information", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_identity", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_media", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_phone_msg", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_perm_scan_wifi", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_pets", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_picture_in_picture_alt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_picture_in_picture", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_play_for_work", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_polymer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_power_settings_new", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_pregnant_woman", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_print", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_query_builder", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_question_answer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_receipt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_record_voice_over", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_redeem", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_remove_shopping_cart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_reorder", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_report_problem", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_restore", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_restore_page", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_restore", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_room", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_rounded_corner", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_rowing", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_schedule", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_search", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_applications", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_backup_restore", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_bluetooth", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_brightness", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_cell", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_ethernet", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_input_antenna", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_input_component", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_input_composite", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_input_hdmi", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_input_svideo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_overscan", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_phone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_power", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_remote", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings_voice", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_settings", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_shop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_shop_two", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_shop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_shopping_basket", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_shopping_cart", "sizes": ["12dp", "18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_speaker_notes", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_speaker_notes_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_speaker_notes", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_spellcheck", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_star_rate", "sizes": ["18dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_stars", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_store", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_subject", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_supervisor_account", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_swap_horiz", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_swap_vert", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_swap_vertical_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_system_update_alt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_tab", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_tab_unselected", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_tab", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_theaters", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_thumb_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_thumb_up", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_thumbs_up_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_timeline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_toc", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_today", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_toll", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_touch_app", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_track_changes", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_translate", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_trending_down", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_trending_flat", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_trending_up", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_turned_in", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_turned_in_not", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_turned_in", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_update", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_verified_user", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_agenda", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_array", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_carousel", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_column", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_day", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_headline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_list", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_module", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_quilt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_stream", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_view_week", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_visibility", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_visibility_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_visibility", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_watch_later", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_work", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_youtube_searched_for", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "action", "name": "ic_zoom_in", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "alert", "name": "ic_add_alert", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "alert", "name": "ic_error", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "alert", "name": "ic_error_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "alert", "name": "ic_error", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_add_to_queue", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_airplay", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_album", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_art_track", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_av_timer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_branding_watermark", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_call_to_action", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_closed_caption", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_equalizer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_explicit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fast_forward", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fast_rewind", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_featured_play_list", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_featured_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fiber_dvr", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fiber_manual_record", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fiber_new", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fiber_pin", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_fiber_smart_record", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_forward_10", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_forward_30", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_forward_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_games", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_hd", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_hearing", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_high_quality", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_library_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_library_books", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_library_music", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_loop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_mic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_mic_none", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_mic_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_mic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_movie", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_music_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_new_releases", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_not_interested", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_note", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_pause", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_pause_circle_filled", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_pause_circle_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_pause", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_play_arrow", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_play_circle_filled", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_play_circle_filled_white", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_play_circle_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_playlist_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_playlist_add_check", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_playlist_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_playlist_play", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_queue", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_queue_music", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_queue_play_next", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_queue", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_radio", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_recent_actors", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_remove_from_queue", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_repeat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_repeat_one", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_repeat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_replay_10", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_replay_30", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_replay_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_replay", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_shuffle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_skip_next", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_skip_previous", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_slow_motion_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_snooze", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_sort_by_alpha", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_stop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_subscriptions", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_subtitles", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_surround_sound", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_video_call", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_video_label", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_video_library", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_videocam", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_videocam_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_videocam", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_volume_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_volume_mute", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_volume_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_volume_up", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "av", "name": "ic_web_asset", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_business", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_end", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_made", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_merge", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_missed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_missed_outgoing", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_missed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_received", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call_split", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_call", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_chat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_chat_bubble", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_chat_bubble_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_chat_bubble", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_chat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_clear_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_comment", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_contact_mail", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_contact_phone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_contacts", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_dialer_sip", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_dialpad", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_email", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_forum", "sizes": ["18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_import_contacts", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_import_export", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_invert_colors_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_live_help", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_location_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_location_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_mail_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_message", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_no_sim", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_phone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_phonelink_erase", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_phonelink_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_phonelink_ring", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_phonelink_setup", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_portable_wifi_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_present_to_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_ring_volume", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_rss_feed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_screen_share", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_speaker_phone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_stay_current_landscape", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_stay_current_portrait", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_stay_primary_landscape", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_stay_primary_portrait", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_stop_screen_share", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_swap_calls", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_textsms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "communication", "name": "ic_voicemail", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add_box", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add_circle_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_archive", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_backspace", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_block", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_clear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_content_copy", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_content_cut", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_content_paste", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_create", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_delete_sweep", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_drafts", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_filter_list", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_flag", "sizes": ["18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_font_download", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_forward", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_gesture", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_inbox", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_link", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_low_priority", "sizes": ["18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_mail", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_markunread", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_move_to_inbox", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_next_week", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_redo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_remove", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_remove_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_remove_circle_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_remove_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_remove", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_reply_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_reply", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_report", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_save", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_select_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_send", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_sort", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_text_format", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_unarchive", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "content", "name": "ic_undo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_access_alarm", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_access_alarms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_access_time", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_add_alarm", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_airplanemode_active", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_airplanemode_inactive", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_20", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_30", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_50", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_60", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_80", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_90", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_alert", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_20", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_30", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_50", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_60", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_80", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_90", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_charging_full", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_full", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_std", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_battery_unknown", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_bluetooth", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_bluetooth_connected", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_bluetooth_disabled", "sizes": ["176dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_bluetooth_searching", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_bluetooth", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_brightness_auto", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_brightness_high", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_brightness_low", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_brightness_medium", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_data_usage", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_developer_mode", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_devices", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_dvr", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_gps_fixed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_gps_not_fixed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_gps_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_graphic_eq", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_location_disabled", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_location_searching", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_network_cell", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_network_wifi", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_nfc", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_screen_lock_landscape", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_screen_lock_portrait", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_screen_lock_rotation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_screen_rotation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_sd_storage", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_settings_system_daydream", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_0_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_1_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_2_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_3_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_4_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_connected_no_internet_0_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_connected_no_internet_1_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_connected_no_internet_2_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_connected_no_internet_3_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_connected_no_internet_4_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_no_sim", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_null", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_cellular_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_0_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_1_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_1_bar_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_1_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_2_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_2_bar_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_2_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_3_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_3_bar_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_3_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_4_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_4_bar_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_4_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_off", "sizes": ["176dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_1_bar", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_2_bar", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_3_bar", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_4_bar", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_connected_no_internet_1", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_connected_no_internet_2", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_connected_no_internet_3", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_connected_no_internet_4", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_connected_no_internet", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_not_connected", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_signal_wifi_statusbar_null", "sizes": ["26x24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_storage", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_usb", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_wallpaper", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_widgets", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "device", "name": "ic_wifi_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_attach_file", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_attach_money", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_all", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_bottom", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_clear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_color", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_horizontal", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_inner", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_outer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_style", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_top", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_border_vertical", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_bubble_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_drag_handle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_align_center", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_align_justify", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_align_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_align_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_bold", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_clear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_color_fill", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_color_reset", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_color_text", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_indent_decrease", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_indent_increase", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_italic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_line_spacing", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_list_bulleted", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_list_numbered", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_paint", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_quote", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_shapes", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_size", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_strikethrough", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_textdirection_l_to_r", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_textdirection_r_to_l", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_format_underlined", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_functions", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_highlight", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_comment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_drive_file", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_emoticon", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_invitation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_link", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_insert_photo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_linear_scale", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_merge_type", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_mode_comment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_mode_edit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_monetization_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_money_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_multiline_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_pie_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_pie_chart_outlined", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_pie_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_publish", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_short_text", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_show_chart", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_space_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_strikethrough_s", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_text_fields", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_title", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_vertical_align_bottom", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_vertical_align_center", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "editor", "name": "ic_vertical_align_top", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_attachment", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_done", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_download", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_queue", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud_upload", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_cloud", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_create_new_folder", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_file_download", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_file_upload", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_folder", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_folder_open", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "file", "name": "ic_folder_shared", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_cast", "sizes": ["144dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_cast_connected", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_cast", "sizes": ["144dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_computer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_desktop_mac", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_desktop_windows", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_developer_board", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_device_hub", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_devices_other", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_dock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_gamepad", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_headset", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_headset_mic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_headset", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_arrow_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_arrow_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_arrow_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_arrow_up", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_backspace", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_capslock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_hide", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_return", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_tab", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard_voice", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_keyboard", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_laptop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_laptop_chromebook", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_laptop_mac", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_laptop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_laptop_windows", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_memory", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_mouse", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_phone_android", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_phone_iphone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_phonelink", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_phonelink_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_phonelink", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_power_input", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_router", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_scanner", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_security", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_sim_card", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_smartphone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_speaker", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_speaker_group", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_speaker", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_tablet_android", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_tablet", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_tablet_mac", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_tablet", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_toys", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_tv", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "hardware", "name": "ic_videogame_asset", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_add_a_photo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_add_to_photos", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_adjust", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_assistant", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_assistant_photo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_assistant", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_audiotrack", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_blur_circular", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_blur_linear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_blur_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_blur_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_1", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_2", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_3", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_4", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_6", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brightness_7", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_broken_image", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_brush", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_burst_mode", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera_alt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera_front", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera_rear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera_roll", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_camera", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_center_focus_strong", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_center_focus_weak", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_collections", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_collections_bookmark", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_collections", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_color_lens", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_colorize", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_compare", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_control_point", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_control_point_duplicate", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_control_point", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_16_9", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_3_2", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_5_4", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_7_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_din", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_free", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_landscape", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_original", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_portrait", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_rotate", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop_square", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_crop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_dehaze", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_details", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_edit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure_neg_1", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure_neg_2", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure_plus_1", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure_plus_2", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_exposure_zero", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_1", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_2", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_3", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_4", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_6", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_7", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_8", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_9", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_9_plus", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_9", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_b_and_w", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_center_focus", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_drama", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_frames", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_hdr", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_none", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_tilt_shift", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter_vintage", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_filter", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_flare", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_flash_auto", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_flash_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_flash_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_flip", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_gradient", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_grain", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_grid_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_grid_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_hdr_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_hdr_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_hdr_strong", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_hdr_weak", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_healing", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_image_aspect_ratio", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_image", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_iso", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_landscape", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_leak_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_leak_remove", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_lens", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_linked_camera", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_3", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_4", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_5", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_6", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_one", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks_two", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_looks", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_loupe", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_monochrome_photos", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_movie_creation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_movie_filter", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_music_note", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_nature", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_nature_people", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_nature", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_navigate_before", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_navigate_next", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_palette", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama_fish_eye", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama_horizontal", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama_vertical", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_panorama_wide_angle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_album", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_camera", "sizes": ["18dp", "24dp", "36dp", "48dp", "72dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_filter", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_library", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_size_select_actual", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_size_select_large", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo_size_select_small", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_photo", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_picture_as_pdf", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_portrait", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_remove_red_eye", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_rotate_90_degrees_ccw", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_rotate_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_rotate_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_slideshow", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_straighten", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_style", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_switch_camera", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_switch_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_tag_faces", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_texture", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timelapse", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timer_10", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timer_3", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timer_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_timer", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_tonality", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_transform", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_tune", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_view_comfy", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_view_compact", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_vignette", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_wb_auto", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_wb_cloudy", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_wb_incandescent", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "image", "name": "ic_wb_iridescent", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_add_location", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_beenhere", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_bike", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_boat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_bus", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_car", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_railway", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_run", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_subway", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_transit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions_walk", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_directions", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_edit_location", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_ev_station", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_flight", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_hotel", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_layers", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_layers_clear", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_layers", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_activity", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_airport", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_atm", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_bar", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_cafe", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_car_wash", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_convenience_store", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_dining", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_drink", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_florist", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_gas_station", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_grocery_store", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_hospital", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_hotel", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_laundry_service", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_library", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_mall", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_movies", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_offer", "sizes": ["18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_parking", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_pharmacy", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_phone", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_pizza", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_play", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_post_office", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_printshop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_see", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_shipping", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_local_taxi", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_map", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_my_location", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_navigation", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_near_me", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_person_pin", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_person_pin_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_person_pin", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_pin_drop", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_place", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_rate_review", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_restaurant", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_restaurant_menu", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_restaurant", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_satellite", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_store_mall_directory", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_streetview", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_subway", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_terrain", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_traffic", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_train", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_tram", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "maps", "name": "ic_transfer_within_a_station", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_apps", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_back", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_downward", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_drop_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_drop_down_circle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_drop_down", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_drop_up", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_forward", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_arrow_upward", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_cancel", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_check", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_chevron_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_chevron_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_close", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_expand_less", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_expand_more", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_first_page", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_fullscreen", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_fullscreen_exit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_fullscreen", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_last_page", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_menu", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_more_horiz", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_more_vert", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_refresh", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_subdirectory_arrow_left", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_subdirectory_arrow_right", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "navigation", "name": "ic_unfold_less", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_adb", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_flat_angled", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_flat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_individual_suite", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_legroom_extra", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_legroom_normal", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_legroom_reduced", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_recline_extra", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_airline_seat_recline_normal", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_bluetooth_audio", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_confirmation_number", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_disc_full", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_do_not_disturb_alt", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_do_not_disturb", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_do_not_disturb_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_do_not_disturb_on", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_do_not_disturb", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_drive_eta", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_enhanced_encryption", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_event_available", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_event_busy", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_event_note", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_folder_special", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_live_tv", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_mms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_more", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_network_check", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_network_locked", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_no_encryption", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_ondemand_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_personal_video", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_bluetooth_speaker", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_forwarded", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_in_talk", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_locked", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_missed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_phone_paused", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_power", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_priority_high", "sizes": ["12dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_rv_hookup", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sd_card", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sim_card_alert", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sms_failed", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sync", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sync_disabled", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sync_problem", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_sync", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_system_update", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_tap_and_play", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_time_to_leave", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_vibration", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_voice_chat", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_vpn_lock", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "notification", "name": "ic_wc", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_ac_unit", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_airport_shuttle", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_all_inclusive", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_beach_access", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_business_center", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_casino", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_child_care", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_child_friendly", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_fitness_center", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_free_breakfast", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_golf_course", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_hot_tub", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_kitchen", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_pool", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_room_service", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_rv_hookup", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_smoke_free", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "places", "name": "ic_smoking_rooms", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_cake", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_domain", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_group_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_group", "sizes": ["18dp", "24dp", "32dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_location_city", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_mood_bad", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_mood", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications_active", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications_none", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications_off", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications_paused", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_notifications", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_pages", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_party_mode", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_people", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_people_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_people", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_person_add", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_person", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_person_outline", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_person", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_plus_one", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_poll", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_public", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_school", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_sentiment_dissatisfied", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_sentiment_neutral", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_sentiment_satisfied", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_sentiment_very_dissatisfied", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_sentiment_very_satisfied", "sizes": ["18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "social", "name": "ic_share", "sizes": ["16dp", "18dp", "24dp", "36dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_check_box", "sizes": ["24dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_check_box_outline_blank", "sizes": ["24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_check_box", "sizes": ["24dp"], "colors": ["white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_indeterminate_check_box", "sizes": ["24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_radio_button_checked", "sizes": ["24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_radio_button_unchecked", "sizes": ["24dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_star", "sizes": ["16dp", "18dp", "24dp", "36dp", "38dp", "48dp"], "colors": ["black"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_star_border", "sizes": ["16dp", "18dp", "24dp", "36dp", "38dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}, {"category": "toggle", "name": "ic_star_half", "sizes": ["16dp", "18dp", "24dp", "36dp", "38dp", "48dp"], "colors": ["black", "white"], "resolutions": ["anydpi", "hdpi", "mdpi", "xhdpi", "xxhdpi", "xxxhdpi"], "pack": "material_icons"}], "url": "https://www.google.com/design/icons/", "path": "material_icons/", "id": "material_icons", "categories": ["action", "alert", "av", "communication", "content", "device", "editor", "file", "hardware", "image", "maps", "navigation", "notification", "places", "social", "toggle"], "name": "Material Icons"}] ================================================ FILE: src/main/resources/assets/icon_packs.properties ================================================ version=2 ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_3d_rotation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_accessibility_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_accessible_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_account_balance_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_account_balance_wallet_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_account_box_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_account_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_add_shopping_cart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_alarm_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_alarm_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_alarm_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_alarm_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_all_out_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_android_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_announcement_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_aspect_ratio_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assessment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_ind_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_late_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_return_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_returned_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_assignment_turned_in_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_autorenew_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_backup_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_book_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_bookmark_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_bookmark_border_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_bug_report_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_build_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_cached_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_camera_enhance_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_card_giftcard_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_card_membership_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_card_travel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_change_history_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_check_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_chrome_reader_mode_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_class_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_code_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_compare_arrows_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_copyright_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_credit_card_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_dashboard_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_date_range_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_delete_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_delete_forever_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_description_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_dns_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_done_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_done_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_donut_large_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_donut_small_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_eject_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_euro_symbol_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_event_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_event_seat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_exit_to_app_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_explore_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_extension_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_face_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_favorite_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_favorite_border_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_feedback_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_find_in_page_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_find_replace_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_fingerprint_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_flight_land_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_flight_takeoff_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_flip_to_back_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_flip_to_front_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_g_translate_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_gavel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_get_app_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_gif_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_grade_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_group_work_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_help_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_help_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_highlight_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_history_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_home_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_hourglass_empty_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_hourglass_full_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_http_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_https_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_important_devices_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_info_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_info_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_input_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_invert_colors_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_label_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_label_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_language_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_launch_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_lightbulb_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_line_style_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_line_weight_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_list_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_lock_open_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_lock_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_loyalty_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_markunread_mailbox_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_motorcycle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_note_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_offline_pin_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_opacity_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_open_in_browser_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_open_in_new_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_open_with_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_pageview_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_pan_tool_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_payment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_camera_mic_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_contact_calendar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_data_setting_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_device_information_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_identity_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_media_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_phone_msg_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_perm_scan_wifi_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_pets_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_picture_in_picture_alt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_picture_in_picture_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_play_for_work_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_polymer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_power_settings_new_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_pregnant_woman_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_print_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_query_builder_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_question_answer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_receipt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_record_voice_over_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_redeem_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_remove_shopping_cart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_reorder_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_report_problem_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_restore_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_restore_page_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_room_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_rounded_corner_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_rowing_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_schedule_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_search_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_applications_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_backup_restore_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_bluetooth_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_brightness_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_cell_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_ethernet_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_input_antenna_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_input_component_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_input_composite_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_input_hdmi_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_input_svideo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_overscan_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_phone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_power_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_remote_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_settings_voice_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_shop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_shop_two_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_shopping_basket_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_shopping_cart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_speaker_notes_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_speaker_notes_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_spellcheck_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_stars_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_store_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_subject_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_supervisor_account_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_swap_horiz_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_swap_vert_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_swap_vertical_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_system_update_alt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_tab_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_tab_unselected_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_theaters_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_thumb_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_thumb_up_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_thumbs_up_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_timeline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_toc_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_today_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_toll_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_touch_app_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_track_changes_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_translate_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_trending_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_trending_flat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_trending_up_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_turned_in_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_turned_in_not_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_update_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_verified_user_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_agenda_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_array_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_carousel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_column_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_day_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_headline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_list_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_module_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_quilt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_stream_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_view_week_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_visibility_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_visibility_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_watch_later_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_work_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_youtube_searched_for_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_zoom_in_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/action/drawable-anydpi-v21/ic_zoom_out_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/alert/drawable-anydpi-v21/ic_add_alert_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/alert/drawable-anydpi-v21/ic_error_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/alert/drawable-anydpi-v21/ic_error_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/alert/drawable-anydpi-v21/ic_warning_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_add_to_queue_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_airplay_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_album_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_art_track_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_av_timer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_branding_watermark_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_call_to_action_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_closed_caption_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_equalizer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_explicit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fast_forward_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fast_rewind_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_featured_play_list_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_featured_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fiber_dvr_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fiber_manual_record_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fiber_new_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fiber_pin_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_fiber_smart_record_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_forward_10_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_forward_30_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_forward_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_games_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_hd_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_hearing_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_high_quality_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_library_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_library_books_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_library_music_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_loop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_mic_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_mic_none_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_mic_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_movie_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_music_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_new_releases_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_not_interested_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_note_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_pause_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_pause_circle_filled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_pause_circle_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_play_arrow_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_play_circle_filled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_play_circle_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_playlist_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_playlist_add_check_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_playlist_play_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_queue_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_queue_music_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_queue_play_next_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_radio_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_recent_actors_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_remove_from_queue_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_repeat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_repeat_one_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_replay_10_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_replay_30_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_replay_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_replay_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_shuffle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_skip_next_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_skip_previous_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_slow_motion_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_snooze_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_sort_by_alpha_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_stop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_subscriptions_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_subtitles_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_surround_sound_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_video_call_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_video_label_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_video_library_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_videocam_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_videocam_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_volume_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_volume_mute_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_volume_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_volume_up_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_web_asset_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/av/drawable-anydpi-v21/ic_web_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_business_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_end_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_made_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_merge_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_missed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_missed_outgoing_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_received_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_call_split_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_chat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_chat_bubble_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_chat_bubble_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_clear_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_comment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_contact_mail_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_contact_phone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_contacts_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_dialer_sip_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_dialpad_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_email_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_forum_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_import_contacts_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_import_export_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_invert_colors_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_live_help_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_location_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_location_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_mail_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_message_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_no_sim_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_phone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_phonelink_erase_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_phonelink_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_phonelink_ring_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_phonelink_setup_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_portable_wifi_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_present_to_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_ring_volume_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_rss_feed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_screen_share_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_speaker_phone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_stay_current_landscape_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_stay_current_portrait_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_stay_primary_landscape_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_stay_primary_portrait_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_stop_screen_share_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_swap_calls_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_textsms_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_voicemail_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/communication/drawable-anydpi-v21/ic_vpn_key_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_add_box_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_add_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_add_circle_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_archive_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_backspace_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_block_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_clear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_content_copy_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_content_cut_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_content_paste_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_create_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_delete_sweep_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_drafts_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_filter_list_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_flag_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_font_download_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_forward_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_gesture_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_inbox_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_link_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_low_priority_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_mail_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_markunread_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_move_to_inbox_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_next_week_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_redo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_remove_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_remove_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_remove_circle_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_reply_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_reply_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_report_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_save_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_select_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_send_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_sort_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_text_format_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_unarchive_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_undo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/content/drawable-anydpi-v21/ic_weekend_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_access_alarm_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_access_alarms_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_access_time_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_add_alarm_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_airplanemode_active_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_airplanemode_inactive_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_20_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_30_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_50_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_60_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_80_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_90_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_alert_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_20_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_30_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_50_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_60_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_80_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_90_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_charging_full_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_full_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_std_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_battery_unknown_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_bluetooth_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_bluetooth_connected_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_bluetooth_disabled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_bluetooth_searching_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_brightness_auto_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_brightness_high_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_brightness_low_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_brightness_medium_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_data_usage_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_developer_mode_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_devices_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_dvr_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_gps_fixed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_gps_not_fixed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_gps_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_graphic_eq_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_location_disabled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_location_searching_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_network_cell_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_network_wifi_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_nfc_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_screen_lock_landscape_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_screen_lock_portrait_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_screen_lock_rotation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_screen_rotation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_sd_storage_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_settings_system_daydream_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_0_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_1_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_2_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_3_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_4_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_connected_no_internet_0_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_connected_no_internet_1_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_connected_no_internet_2_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_connected_no_internet_3_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_connected_no_internet_4_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_no_sim_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_null_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_cellular_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_0_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_1_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_1_bar_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_2_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_2_bar_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_3_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_3_bar_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_4_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_4_bar_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_signal_wifi_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_storage_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_usb_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_wallpaper_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_widgets_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_wifi_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/device/drawable-anydpi-v21/ic_wifi_tethering_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_attach_file_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_attach_money_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_all_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_bottom_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_clear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_color_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_horizontal_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_inner_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_outer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_style_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_top_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_border_vertical_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_bubble_chart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_drag_handle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_align_center_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_align_justify_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_align_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_align_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_bold_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_clear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_color_fill_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_color_reset_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_color_text_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_indent_decrease_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_indent_increase_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_italic_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_line_spacing_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_list_bulleted_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_list_numbered_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_paint_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_quote_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_shapes_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_size_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_strikethrough_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_textdirection_l_to_r_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_textdirection_r_to_l_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_format_underlined_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_functions_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_highlight_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_chart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_comment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_drive_file_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_emoticon_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_invitation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_link_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_insert_photo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_linear_scale_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_merge_type_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_mode_comment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_mode_edit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_monetization_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_money_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_multiline_chart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_pie_chart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_pie_chart_outlined_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_publish_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_short_text_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_show_chart_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_space_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_strikethrough_s_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_text_fields_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_title_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_vertical_align_bottom_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_vertical_align_center_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_vertical_align_top_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/editor/drawable-anydpi-v21/ic_wrap_text_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_attachment_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_done_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_download_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_queue_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_cloud_upload_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_create_new_folder_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_file_download_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_file_upload_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_folder_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_folder_open_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/file/drawable-anydpi-v21/ic_folder_shared_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_cast_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_cast_connected_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_computer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_desktop_mac_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_desktop_windows_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_developer_board_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_device_hub_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_devices_other_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_dock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_gamepad_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_headset_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_headset_mic_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_arrow_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_arrow_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_arrow_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_arrow_up_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_backspace_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_capslock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_hide_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_return_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_tab_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_keyboard_voice_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_laptop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_laptop_chromebook_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_laptop_mac_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_laptop_windows_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_memory_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_mouse_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_phone_android_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_phone_iphone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_phonelink_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_phonelink_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_power_input_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_router_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_scanner_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_security_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_sim_card_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_smartphone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_speaker_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_speaker_group_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_tablet_android_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_tablet_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_tablet_mac_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_toys_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_tv_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_videogame_asset_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/hardware/drawable-anydpi-v21/ic_watch_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_add_a_photo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_add_to_photos_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_adjust_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_assistant_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_assistant_photo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_audiotrack_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_blur_circular_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_blur_linear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_blur_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_blur_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_1_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_2_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_3_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_4_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_6_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brightness_7_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_broken_image_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_brush_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_burst_mode_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_camera_alt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_camera_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_camera_front_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_camera_rear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_camera_roll_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_center_focus_strong_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_center_focus_weak_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_collections_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_collections_bookmark_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_color_lens_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_colorize_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_compare_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_control_point_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_control_point_duplicate_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_16_9_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_3_2_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_5_4_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_7_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_din_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_free_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_landscape_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_original_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_portrait_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_rotate_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_crop_square_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_dehaze_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_details_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_edit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_neg_1_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_neg_2_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_plus_1_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_plus_2_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_exposure_zero_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_1_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_2_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_3_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_4_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_6_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_7_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_8_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_9_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_9_plus_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_b_and_w_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_center_focus_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_drama_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_frames_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_hdr_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_none_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_tilt_shift_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_filter_vintage_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_flare_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_flash_auto_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_flash_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_flash_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_flip_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_gradient_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_grain_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_grid_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_grid_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_hdr_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_hdr_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_hdr_strong_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_hdr_weak_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_healing_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_image_aspect_ratio_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_image_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_iso_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_landscape_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_leak_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_leak_remove_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_lens_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_linked_camera_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_3_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_4_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_5_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_6_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_one_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_looks_two_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_loupe_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_monochrome_photos_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_movie_creation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_movie_filter_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_music_note_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_nature_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_nature_people_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_navigate_before_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_navigate_next_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_palette_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_panorama_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_panorama_fish_eye_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_panorama_horizontal_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_panorama_vertical_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_panorama_wide_angle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_album_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_camera_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_filter_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_library_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_size_select_actual_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_size_select_large_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_photo_size_select_small_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_picture_as_pdf_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_portrait_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_remove_red_eye_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_rotate_90_degrees_ccw_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_rotate_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_rotate_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_slideshow_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_straighten_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_style_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_switch_camera_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_switch_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_tag_faces_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_texture_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_timelapse_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_timer_10_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_timer_3_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_timer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_timer_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_tonality_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_transform_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_tune_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_view_comfy_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_view_compact_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_vignette_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_wb_auto_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_wb_cloudy_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_wb_incandescent_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_wb_iridescent_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/image/drawable-anydpi-v21/ic_wb_sunny_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_add_location_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_beenhere_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_bike_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_boat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_bus_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_car_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_railway_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_run_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_subway_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_transit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_directions_walk_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_edit_location_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_ev_station_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_flight_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_hotel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_layers_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_layers_clear_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_activity_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_airport_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_atm_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_bar_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_cafe_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_car_wash_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_convenience_store_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_dining_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_drink_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_florist_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_gas_station_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_grocery_store_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_hospital_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_hotel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_laundry_service_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_library_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_mall_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_movies_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_offer_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_parking_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_pharmacy_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_phone_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_pizza_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_play_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_post_office_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_printshop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_see_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_shipping_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_local_taxi_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_map_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_my_location_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_navigation_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_near_me_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_person_pin_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_person_pin_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_pin_drop_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_place_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_rate_review_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_restaurant_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_restaurant_menu_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_satellite_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_store_mall_directory_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_streetview_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_subway_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_terrain_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_traffic_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_train_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_tram_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_transfer_within_a_station_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/maps/drawable-anydpi-v21/ic_zoom_out_map_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_apps_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_back_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_downward_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_drop_down_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_drop_down_circle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_drop_up_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_forward_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_arrow_upward_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_cancel_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_check_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_chevron_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_chevron_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_close_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_expand_less_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_expand_more_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_first_page_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_fullscreen_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_fullscreen_exit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_last_page_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_menu_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_more_horiz_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_more_vert_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_refresh_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_subdirectory_arrow_left_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_subdirectory_arrow_right_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_unfold_less_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/navigation/drawable-anydpi-v21/ic_unfold_more_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_adb_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_flat_angled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_flat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_individual_suite_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_legroom_extra_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_legroom_normal_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_legroom_reduced_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_recline_extra_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_airline_seat_recline_normal_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_bluetooth_audio_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_confirmation_number_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_disc_full_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_do_not_disturb_alt_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_do_not_disturb_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_do_not_disturb_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_do_not_disturb_on_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_drive_eta_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_enhanced_encryption_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_event_available_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_event_busy_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_event_note_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_folder_special_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_live_tv_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_mms_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_more_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_network_check_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_network_locked_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_no_encryption_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_ondemand_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_personal_video_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_bluetooth_speaker_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_forwarded_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_in_talk_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_locked_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_missed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_phone_paused_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_power_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_priority_high_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_rv_hookup_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sd_card_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sim_card_alert_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sms_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sms_failed_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sync_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sync_disabled_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_sync_problem_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_system_update_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_tap_and_play_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_time_to_leave_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_vibration_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_voice_chat_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_vpn_lock_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_wc_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/notification/drawable-anydpi-v21/ic_wifi_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_ac_unit_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_airport_shuttle_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_all_inclusive_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_beach_access_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_business_center_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_casino_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_child_care_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_child_friendly_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_fitness_center_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_free_breakfast_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_golf_course_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_hot_tub_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_kitchen_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_pool_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_room_service_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_rv_hookup_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_smoke_free_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_smoking_rooms_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/places/drawable-anydpi-v21/ic_spa_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_cake_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_domain_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_group_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_group_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_location_city_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_mood_bad_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_mood_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_notifications_active_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_notifications_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_notifications_none_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_notifications_off_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_notifications_paused_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_pages_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_party_mode_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_people_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_people_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_person_add_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_person_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_person_outline_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_plus_one_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_poll_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_public_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_school_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_sentiment_dissatisfied_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_sentiment_neutral_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_sentiment_satisfied_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_sentiment_very_dissatisfied_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_sentiment_very_satisfied_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_share_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/social/drawable-anydpi-v21/ic_whatshot_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_check_box_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_check_box_outline_blank_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_indeterminate_check_box_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_radio_button_checked_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_radio_button_unchecked_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_star_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_star_border_black_24dp.xml ================================================ ================================================ FILE: src/main/resources/assets/material_icons/toggle/drawable-anydpi-v21/ic_star_half_black_24dp.xml ================================================