Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

Slickの導入

  1. サイトからDL slick - the last carousel you'll ever need

  2. htmlから読み込む

<script type="text/javascript" src="/js/slick/slick/slick.min.js"></script>
<link rel="stylesheet" type="text/css" href="/js/slick/slick/slick.css" media="screen" />
<link rel="stylesheet" type="text/css" href="/js/slick/slick/slick-theme.css" media="screen" />
  1. 表示用のボタンを貼り付ける
  <ul class="slick-box">
        <li class="slick-item">
            <button data-id="menu1">
                <img src="./resource/1.png" width="250px" height="250px" alt=""/>
                <p>1</p>
            </button>
        </li>
        <li class="slick-item">
            <button data-id="menu2">
                <img src="./resource/2.png" width="250px" height="250px" alt=""/>
                <p>2</p>
            </button>
        </li>
        <li class="slick-item">
            <button data-id="menu3">
                <img src="./resource/3.png" width="250px" height="250px" alt=""/>
                <p>3</p>
            </button>
        </li>
        <li class="slick-item">
            <button data-id="menu4">
                <img src="./resource/04.png" width="250px" height="250px" alt=""/>
                <p>4</p>
            </button>
        </li>
    </ul>
  1. 表示用する
<script type="text/javascript">
    /// スライダー表示
    $(function() {
       $('.slick-box').slick({
            accessibility: true,
            adaptiveHeight: true,
            autoplay: false,            
            dots: true,
            arrows: true,
            speed: 300,
            fade: false,
            infinite: true,
           slidesToShow: 1,
            slidesToScroll: 1,
            centerMode: true,
            centerPadding: "60px",
            mobileFirst: true,
            focusOnSelect:false,
            focusOnChange:false,
            draggable: true,
            touchMove: true,
            swipe: true,
            swipeToSlide: true,
            verticalSwiping: false,
            vertical: false
        }); 
    });
</script>

iframeとタイマー

タイマーでiframeを切り替えてみた。

function getID(identifier:string):string {
    return '[data-id="' + identifier +'"]'
}

const x:JQuery<HTMLIFrameElement> = $(getID("child")) as JQuery<HTMLIFrameElement>

const y = x.get(0);

setTimeout(function(){
    y.src ="./hoge.html";
},2000)

y.src = "./hogehoge.html";

文字列受け渡し

class Hello {
    companion object {
        init {
            System.loadLibrary("Hello")
        }
    }

    external fun printHello()
    external fun printNative(str:String, len:Int);
}

fun main(args: Array<String>) {
    Hello().printHello()
    val str = "hello form kotoln"
    Hello().printNative(str, str.length)
}

でcpp側は

#include "Hello.h"
#include <iostream>
#include <string>
extern "C" {
    JNIEXPORT void JNICALL Java_Hello_printHello
    (JNIEnv *env, jclass obj) {
        std::cout << "hello cpp" << std::endl;
    }
    
    JNIEXPORT void JNICALL Java_Hello_printNative
    (JNIEnv *env, jclass obj, jstring str, jint len) {
        /// charに変換
        jboolean iscopy;
        const char* msgStr = env->GetStringUTFChars(str, &iscopy);
        char* copiedChars = strdup(msgStr);
        env->ReleaseStringUTFChars(str, msgStr);
        env->DeleteLocalRef(str);

        printf("%s\n", copiedChars);
    }
}

でいけた。 が、おそらくこの辺の文字コードの話がいるはず…。

Java とか Android (DEX) の MUTF-8 (Modified UTF-8) って何者よ?っていう話 - bearmini's blog

とか

  java, a unicode char will be encoded with 4 bytes (utf16).
  jstring will container characters  utf16
  std::string in c++ is essentially a string of bytes, not characters,not characters
 we have convert utf16 to bytes.

とか

  • 返却値
class Hello {
    companion object {
        init {
            System.loadLibrary("Hello")
        }
    }

    external fun printHello()
    external fun printNative(str:String, len:Int): Boolean;
}

fun main(args: Array<String>) {
    Hello().printHello()
    val str = "hello form kotoln"
    val ret = Hello().printNative(str, str.length)
    println("ret = " + ret)
}
#include "Hello.h"
#include <iostream>
#include <string>
extern "C" {
    JNIEXPORT void JNICALL Java_Hello_printHello
    (JNIEnv *env, jclass obj) {
        std::cout << "hello cpp" << std::endl;
    }
    
    JNIEXPORT jboolean JNICALL Java_Hello_printNative
    (JNIEnv *env, jclass obj, jstring str, jint len) {
        /// charに変換
        jboolean iscopy;
        const char* msgStr = env->GetStringUTFChars(str, &iscopy);
        char* copiedChars = strdup(msgStr);
        env->ReleaseStringUTFChars(str, msgStr);
        env->DeleteLocalRef(str);

        printf("%s\n", copiedChars);
        
        return true;
    }
}