fkm 〜 Super Software Entertainerへの道 〜 このページをアンテナに追加 RSSフィード

 

2012-02-18 OnJavaScript 2.0

[][][]OnJavaScript 2.0 OnJavaScript 2.0を含むブックマーク

2.0になりました.

Androidアプリのように振る舞うモードを追加してます.

https://market.android.com/details?id=jp.fkmsoft.program.onjavascript

widgetオブジェクトメソッドでButtonとかLinearLayoutとかを作って, fwindowオブジェクトのaddView(view)メソッドで画面に追加. OnClickイベントのみですがイベントハンドラも登録できたりします。

こんな感じ

function c(i) {
  alert('clicked');
}
var button = widget.createButton(1, 'Click');
widget.setOnClick(button, 'c');
fwindow.addView(button);

Android端末上で, アプリ, 書いてみませんか?

トラックバック - http://d.hatena.ne.jp/fkm/20120218

2012-02-15 JavaScript on Android

[][][]Android専用JavaScript Android専用JavaScriptを含むブックマーク

AndroidのWebViewは, 面白いやつです.

JavaScriptを有効にしてあげると, ちゃんと動きます.

WebView web = new WebView(this);
web.setWebChromeClient(new WebChromeClient());
web.getSettings().setJavaScriptEnabled(true);
web.setVisibility(View.GONE);
layout.addView(web);

String html = "<html><head><script type='text/javascript'>" +
        "window.alert('moke');" +
        "</script></head><body></body></html>";
web.loadData(html, "text/html", "utf-8");

見えてなくても, 動きます.

f:id:fkm:20120216010513p:image

Java世界にいるオブジェクトを, JavaScript世界に出張させることもできます.

たとえば, こんなクラスを定義してみる.

private static class JavaObj {
    public String call() {
        return "Moke on Java";
    }
}

このクラスインスタンスJavaScript世界に派遣させたい場合は, このメソッドを呼びましょう.

web.addJavascriptInterface(new JavaObj(), "moke");

第2引数JavaScript世界でのお名前. さっそくJavaScript世界で仕事してもらいましょう.

WebView web = new WebView(this);
web.setWebChromeClient(new WebChromeClient());
web.getSettings().setJavaScriptEnabled(true);
web.setVisibility(View.GONE);
layout.addView(web);

web.addJavascriptInterface(new JavaObj(), "moke");

String html = "<html><head><script type='text/javascript'>" +
        "window.alert(moke.call());" +
        "</script></head><body></body></html>";
web.loadData(html, "text/html", "utf-8");

実行すると, こんな感じ. JavaScript世界に行ってしまっても, Java世界で定義されたpublicメソッド呼べます.

f:id:fkm:20120216011159p:image

トラックバック - http://d.hatena.ne.jp/fkm/20120215

2012-02-10 ラベル付きSeekBar

[][]ラベル付きSeekBar ラベル付きSeekBarを含むブックマーク

自前で簡単な設定画面を作りたいとき, SeekBarはそのままだとちょっと面倒.

なので, こんなクラスを作ってみた.

import java.lang.ref.WeakReference;

import android.content.Context;
import android.widget.SeekBar;
import android.widget.TextView;

public class LabelSeekBar extends SeekBar {

    private WeakReference<TextView> label;
    private String prefix;
    
    public LabelSeekBar(Context context, TextView label, String prefix) {
        super(context);
        
        this.label = new WeakReference<TextView>(label);
        this.prefix = prefix;
        
        setOnSeekBarChangeListener(new BarChangeListener(label, prefix));
    }
    
    
    @Override
    public synchronized void setProgress(int progress) {
        super.setProgress(progress);
        if (label != null) {
            TextView text = label.get();
            text.setText(prefix + progress);
        }
    }



	private static class BarChangeListener implements SeekBar.OnSeekBarChangeListener {

        private WeakReference<TextView> label;
        private String prefix;
        
        public BarChangeListener(TextView label, String prefix) {
            this.label = new WeakReference<TextView>(label);
            this.prefix = prefix;
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            label.get().setText(prefix + progress);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            /* nop*/
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            /* nop*/
        }
    
    }
	
}

prefixには"X="のような文字列を渡して使う感じ.

トラックバック - http://d.hatena.ne.jp/fkm/20120210

2012-01-28 懺悔

[]懺悔 懺悔を含むブックマーク

よくわからない新年会の幹事をやったのですが, 最後の最後で大ボケPOSTをしてしまい皆様にご迷惑をおかけしましたm(_ _)m

  • Facebook イベントページでPM7-10時に設定
  • お店の予約は19時から
  • なので6時45分頃集合でお願いすれば大丈夫(`・ω・´)
  • ここでいつもの習慣で24時表記が頭に浮かぶ.
  • Facebook Messageで参加者に16時45分でと送信
  • 当日の16時に気づく

時間を伝えるときは, AM/PMをつけて伝えたほうが問題起きないですね。。。

トラックバック - http://d.hatena.ne.jp/fkm/20120128

2012-01-24 読んだ本

[]読んだ本 読んだ本を含むブックマーク

文庫は気楽に読めていいよね

5回に1回ぐらい、ごほうび抜きというのが印象的

トラックバック - http://d.hatena.ne.jp/fkm/20120124
 
掲示板