LoginSignup
1
2

More than 5 years have passed since last update.

オーバレイ+フレームレスなEvercatビューワ

Posted at

ソースは下の方に.
こちらの記事の書き増しになります.

背景

無限に猫動画を流し続けるWebサイトEvercatが話題になりました.先日スマホ対応等の為一時的に閉鎖.
2017年6月4日にEvercat様が帰って来られたので制作しました.

目的

① 猫動画を垂れ流せる.
② フレームレスな感じにして作業スペースをより広く取れるようにする.
③ せっかくなのでオーバレイ表示にしてアクティブウィンドウを切り替える手間を無くす.
以上の要件を満たす物を作ります.

動作デモ

NyansomEvercat_demo.gif

動作確認環境

・Windows8.1,Windows10
・JDK1.8.0_121
・JRE1.8.0_121

ソース

NyansomEvercat.java
/*
    Version     : v0.1.0
    Nyansomware : javafxを用いたオーバレイ+フレームレス型のEvercatビューワです
    Author      : chatagiriii @chatagiriii
    LastUpdate  : 2017/06/05
 */

import java.util.ArrayList;
import java.util.Collections;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.web.WebView;
import javafx.event.EventHandler;
import javafx.application.Application;
import javafx.scene.input.MouseEvent;

public class NyansomEvercat extends Application {
    private double xOffset = 0;
    private double yOffset = 0;
    private double xSize = 0;
    private double ySize = 0;
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        WebView webView = new WebView();
        Scene scene = new Scene(webView,320,240);
        webView.setScaleY(1.2);
        webView.setScaleY(1.2);

        //ウィンドウ内マウス降下時の処理
        webView.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                // マウス降下時のx,y座標を取得
                xOffset = e.getSceneX();
                yOffset = e.getSceneY();
                // Sceneのx,y座標を取得する
                xSize = webView.getWidth();
                ySize = webView.getHeight();
            }
        });

        //ウィンドウ内マウスドラッグ時の処理
        webView.setOnMouseDragged(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {

                // マウス降下座標がウィンドウ右下ならリサイズ
                if (xOffset > xSize * 0.9 && yOffset > ySize * 0.9) {
                    stage.setWidth(event.getX());
                    stage.setHeight(event.getY());
                    webView.setPrefHeight(event.getScreenX() - xOffset);
                    webView.setPrefWidth(event.getScreenY() - yOffset);

                } else if (xOffset < xSize * 0.1 && yOffset < ySize * 0.1) {
                    // マウス降下座標が左上ならウィンドウを移動

                    stage.setX(event.getScreenX() - xOffset);
                    stage.setY(event.getScreenY() - yOffset);
                }
            }
        });

        // 初期ページのURLを指定
        webView.getEngine().load(initUrl());
        // 常に前面に表示と表示処理
        stage.initStyle(StageStyle.UNDECORATED);
        stage.setAlwaysOnTop(true);
        stage.setScene(scene);
        stage.show();
    }

    // URL周りの設定
    private String initUrl(){
        ArrayList<String> urlList = new ArrayList<String>();
        urlList.add("http://evercat.tv/");
        Collections.shuffle(urlList);
        String url = urlList.get(0);
        return url;
    }
}

配布

githubに上げておきました.
cloneしてコマンドラインから実行するかartifactsに入ってるNyansomEvercat.jarを起動する形でお願いします.

参考文献

Evercat | 面白法人カヤックのつくってみたラボ 様
http://create.kayac.com/web/evercat/

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2