diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2018-03-05 23:17:51 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2018-03-05 23:17:51 +0000 |
| commit | 3ed5e71da71e50849eb9e2c3244e843bc5e38a05 (patch) | |
| tree | 245443359440a9b9927660e5a48b388bce0ce820 /ide/AndroidStudio3/app | |
| parent | b47db80af359e5ab3b2188573cbf42ee439a2be7 (diff) | |
Android: moved to IDE directory.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12711 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'ide/AndroidStudio3/app')
| -rw-r--r-- | ide/AndroidStudio3/app/app.iml | 141 | ||||
| -rw-r--r-- | ide/AndroidStudio3/app/build.gradle | 23 | ||||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/AndroidManifest.xml | 22 | ||||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/cpp/CMakeLists.txt | 45 | ||||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx | 182 | ||||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/res/mipmap-hdpi/ic_launcher.png | bin | 0 -> 3418 bytes | |||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/res/mipmap-mdpi/ic_launcher.png | bin | 0 -> 2206 bytes | |||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/res/mipmap-xhdpi/ic_launcher.png | bin | 0 -> 4842 bytes | |||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png | bin | 0 -> 7718 bytes | |||
| -rw-r--r-- | ide/AndroidStudio3/app/src/main/res/values/strings.xml | 4 |
10 files changed, 417 insertions, 0 deletions
diff --git a/ide/AndroidStudio3/app/app.iml b/ide/AndroidStudio3/app/app.iml new file mode 100644 index 000000000..ffb02d88c --- /dev/null +++ b/ide/AndroidStudio3/app/app.iml @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":app" /> + </configuration> + </facet> + <facet type="native-android-gradle" name="Native-Android-Gradle"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <afterSyncTasks> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> + <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/cpp" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/cmake" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <content url="file://$MODULE_DIR$/../../../jpeg"> + <sourceFolder url="file://$MODULE_DIR$/../../../jpeg" isTestSource="false" /> + </content> + <content url="file://$MODULE_DIR$/../../../png"> + <sourceFolder url="file://$MODULE_DIR$/../../../png" isTestSource="false" /> + </content> + <content url="file://$MODULE_DIR$/../../../src"> + <sourceFolder url="file://$MODULE_DIR$/../../../src" isTestSource="false" /> + </content> + <content url="file://$MODULE_DIR$/../../../src/drivers/Android"> + <sourceFolder url="file://$MODULE_DIR$/../../../src/drivers/Android" isTestSource="false" /> + </content> + <content url="file://$MODULE_DIR$/../../../src/drivers/PostScript"> + <sourceFolder url="file://$MODULE_DIR$/../../../src/drivers/PostScript" isTestSource="false" /> + </content> + <content url="file://$MODULE_DIR$/../../../src/xutf8"> + <sourceFolder url="file://$MODULE_DIR$/../../../src/xutf8" isTestSource="false" /> + </content> + <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module>
\ No newline at end of file diff --git a/ide/AndroidStudio3/app/build.gradle b/ide/AndroidStudio3/app/build.gradle new file mode 100644 index 000000000..dbe9d3dc9 --- /dev/null +++ b/ide/AndroidStudio3/app/build.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.android.application' + + android { + compileSdkVersion 25 + + defaultConfig { + applicationId 'org.fltk.android_hello' + minSdkVersion 14 + targetSdkVersion 25 + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), + 'proguard-rules.pro' + } + } + externalNativeBuild { + cmake { + path 'src/main/cpp/CMakeLists.txt' + } + } + } diff --git a/ide/AndroidStudio3/app/src/main/AndroidManifest.xml b/ide/AndroidStudio3/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..e0131f422 --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.fltk.android_hello" + android:versionCode="1" + android:versionName="1.0"> + <application + android:allowBackup="false" + android:fullBackupContent="false" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:hasCode="false"> + <activity android:name="android.app.NativeActivity" + android:label="@string/app_name"> + <meta-data android:name="android.app.lib_name" + android:value="android-hello" /> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/ide/AndroidStudio3/app/src/main/cpp/CMakeLists.txt b/ide/AndroidStudio3/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 000000000..408052168 --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,45 @@ +# +# Copyright (C) The Android Open Source Project +# +# 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. +# + +cmake_minimum_required(VERSION 3.4.1) + +set(FLTK_DIR ../../../../../..) + +# FIXME: add as a second argument the binary build dir +# so that the first argument can link directly to FLTK +# instead of the fltk symlink, which is bad for SVN +add_subdirectory(${FLTK_DIR}/ "${CMAKE_CURRENT_BINARY_DIR}/fltk" EXCLUDE_FROM_ALL) + +# now build app's shared lib +add_library(android-hello SHARED + HelloAndroid.cxx) + +target_include_directories(android-hello PRIVATE + ${FLTK_DIR}/ + ${FLTK_DIR}/Android/) + +# Export ANativeActivity_onCreate(),
+# Refer to: https://github.com/android-ndk/ndk/issues/381. +set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") + +# add lib dependencies +target_link_libraries(android-hello + fltk + android + log + m) + diff --git a/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx b/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx new file mode 100644 index 000000000..bba38a5b7 --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/cpp/HelloAndroid.cxx @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * 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. + * + */ + +//#include <android_native_app_glue.h> +#include <src/drivers/Android/Fl_Android_Application.H> +#include <src/drivers/Android/Fl_Android_Screen_Driver.H> + +#include <FL/Fl_Window.H> +#include <FL/Fl_Button.H> +#include <FL/Enumerations.H> +Fl_Window *win; +Fl_Button *btn; + +#include <errno.h> +#include <jni.h> +#include <sys/time.h> +#include <time.h> +#include <android/log.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#define LOG_TAG "HelloFLTK" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) +#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) + +/* Set to 1 to enable debug log traces. */ +#define DEBUG 0 + +// ---------------------------------------------------------------------- + +struct engine { + int animating; +}; + +struct engine engine = { 0 }; + +static void engine_draw_frame() +{ + //if (Fl_Android_Application::lock_screen()) { + Fl::damage(FL_DAMAGE_ALL); + win->redraw(); + Fl::flush(); + // Fl_Android_Application::unlock_and_post_screen(); + //} +} + +static void engine_term_display() { + engine.animating = 0; +} + +static int32_t engine_handle_input(AInputEvent* event) { + if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) { + engine.animating = 1; + Fl::e_x = Fl::e_x_root = AMotionEvent_getX(event, 0) * 600 / ANativeWindow_getWidth(Fl_Android_Application::native_window()); + Fl::e_y = Fl::e_y_root = AMotionEvent_getY(event, 0) * 800 / ANativeWindow_getHeight(Fl_Android_Application::native_window()); + Fl::e_state = FL_BUTTON1; + Fl::e_keysym = FL_Button+1; + if (AMotionEvent_getAction(event)==AMOTION_EVENT_ACTION_DOWN) { + Fl::e_is_click = 1; + Fl::handle(FL_PUSH, Fl::first_window()); + LOGE("Mouse push %d at %d, %d", Fl::event_button(), Fl::event_x(), Fl::event_y()); + } else if (AMotionEvent_getAction(event)==AMOTION_EVENT_ACTION_MOVE) { + Fl::handle(FL_DRAG, Fl::first_window()); + } else if (AMotionEvent_getAction(event)==AMOTION_EVENT_ACTION_UP) { + Fl::e_state = 0; + Fl::handle(FL_RELEASE, Fl::first_window()); + } + return 1; + } else if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) { + LOGI("Key event: action=%d keyCode=%d metaState=0x%x", + AKeyEvent_getAction(event), + AKeyEvent_getKeyCode(event), + AKeyEvent_getMetaState(event)); + } + + return 0; +} + +static void engine_handle_cmd(int32_t cmd) { + static int32_t format = WINDOW_FORMAT_RGB_565; + switch (cmd) { + case APP_CMD_INIT_WINDOW: + if (Fl_Android_Application::native_window() != NULL) { + // fill_plasma() assumes 565 format, get it here + format = ANativeWindow_getFormat(Fl_Android_Application::native_window()); + ANativeWindow_setBuffersGeometry(Fl_Android_Application::native_window(), +#if 1 + 600, //ANativeWindow_getWidth(app->window), + 800, //ANativeWindow_getHeight(app->window), +#else + ANativeWindow_getWidth(app->window), + ANativeWindow_getHeight(app->window), +#endif + WINDOW_FORMAT_RGB_565); + engine_draw_frame(); + } + break; + case APP_CMD_TERM_WINDOW: + engine_term_display(); + ANativeWindow_setBuffersGeometry(Fl_Android_Application::native_window(), +#if 1 + 600, //ANativeWindow_getWidth(app->window), + 800, //ANativeWindow_getHeight(app->window), +#else + ANativeWindow_getWidth(app->window), + ANativeWindow_getHeight(app->window), +#endif + format); + break; + case APP_CMD_LOST_FOCUS: + engine.animating = 0; + engine_draw_frame(); + break; + default: break; + } +} + + +int main(int argc, char **argv) +{ + Fl_Android_Application::log_e("App path is %s", argv[0]); + + memset(&engine, 0, sizeof(engine)); + Fl_Android_Application::set_on_app_cmd(engine_handle_cmd); + Fl_Android_Application::set_on_input_event(engine_handle_input); + + win = new Fl_Window(10, 10, 600, 400, "Hallo"); + btn = new Fl_Button(190, 200, 280, 35, "Hello, Android!"); + btn->color(FL_LIGHT2); + win->show(); + Fl::damage(FL_DAMAGE_ALL); + win->redraw(); + + + // loop waiting for stuff to do. + + while (1) { + // Read all pending events. + int ident; + int events; + struct android_poll_source* source; + + // If not animating, we will block forever waiting for events. + // If animating, we loop until all events are read, then continue + // to draw the next frame of animation. + while ((ident=ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events, + (void**)&source)) >= 0) { + + // Process this event. + if (source != NULL) { + source->process(source); + } + + // Check if we are exiting. + if (Fl_Android_Application::destroy_requested() != 0) { + LOGI("Engine thread destroy requested!"); + engine_term_display(); + return 0; + } + } + Fl::flush(); + } + return 0; +} diff --git a/ide/AndroidStudio3/app/src/main/res/mipmap-hdpi/ic_launcher.png b/ide/AndroidStudio3/app/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..cde69bccc --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/ide/AndroidStudio3/app/src/main/res/mipmap-mdpi/ic_launcher.png b/ide/AndroidStudio3/app/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..c133a0cbd --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/ide/AndroidStudio3/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/ide/AndroidStudio3/app/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..bfa42f0e7 --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/ide/AndroidStudio3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/ide/AndroidStudio3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 000000000..324e72cdd --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/ide/AndroidStudio3/app/src/main/res/values/strings.xml b/ide/AndroidStudio3/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..e2f60e96f --- /dev/null +++ b/ide/AndroidStudio3/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Hello Android</string> +</resources> |
