AndroidでFrameLayoutの上にボタンを重ねるとボタンが半透明になってしまう件

結論

【解決したい課題】AndroidでFrameLayoutの上にボタンを重ねると、ボタンが半透明になってしまい超見難いのをどうにかしたい。
【解決方法】アプリのスタイルを見直せばよい。


詳細

FrameLayoutにSurfaceViewを作ってそこに画像を描くアプリを作っていた。
操作用のボタンを設置しようとして、ググったところFrameLayoutを使って重ね合わせるのが定石だということでやってみた。
わかりやすくするため、肝の部分だけソースコードを書くとこんな感じ。

activity_main.xml その1:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ff000000" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center" >
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ボタンですよ" />
        </LinearLayout>
    </FrameLayout>
</RelativeLayout>

MainActivity.java その1:

package com.example.test1;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}

このアプリの画面は次の通り。ボタンが半透明になっていることがわかるだろうか。

その1

続きを読む

JpGraphのLinePlotでSetColor()しても色が変わらない

JpGraph(Ver.4.2.0)を使ってPHPでグラフを描いていてはまった。
SetColor()を使って色を指定してもなぜか色が変わらないというトラブル。

ソースコードその1:

<?php
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

$ydata = array(1,2,1,3,1,4);

$graph = new Graph(400,300);
$graph->SetScale("textlin");

$lineplot=new LinePlot($ydata);

$lineplot->SetColor("orange");

$graph->Add($lineplot);

$graph->Stroke();
?>

ソースコードその2:

<?php
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

$ydata = array(1,2,1,3,1,4);

$graph = new Graph(400,300);
$graph->SetScale("textlin");

$lineplot=new LinePlot($ydata);

$graph->Add($lineplot);

$lineplot->SetColor("orange");

$graph->Stroke();
?>

どちらもオレンジ("orage")を指定しているはずが、その1はなぜか青で、その2だと期待通りのオレンジ。

何が違うのかと言うと、その1はSetColor()してからAdd()。一方のその2はAdd()してからSetColor()。

なぜか後者(その2)の順番でないと期待通りに色が変わらない。

ぐぐって探してみたんだが、このことに触れているサイトは見つけられなかった。
Ver.4.2.0の不具合なのかもしれないねえ。
それともPHPのバージョンのせい? PHPはVer.5.3.3。

久しぶりにAndroidアプリ開発

ずいぶんご無沙汰していたのだが、久しぶりにAndroidアプリ開発をほそぼそと再開していた。
以前はLinux(32ビット)上で開発していたのだが、Android Studioをはじめいろんなツールが64ビットのLinuxでないと動かないので、ツール導入時点で立ち止まっていた。
今使っている64ビットのWindows 10であれば問題はないのだが、JAVA (JDK) を入れたり、いろんなツールを入れたりというのはなんかやだなあとか、VMwareを使って仮想環境から立ち上げるのも面倒だなあとか、いろいろ理由をつけて逃げ回っていた。
続きを読む

Windows 10の勝手に夏時間?

今朝、PCの時刻がホントの時刻より1時間進んでいた。
自動で夏時間にされた?
Twitterで検索するとちらほらそういう報告が。

昔書いた方法で手動でNICTの時刻サーバーと同期させることで解決した。
マイクロソフトのサーバーと同期させてみたけど、それでも大丈夫だった。
サーバーのせいではなくて、Windows自体に1時間ずらす機能が入っている?
不思議だねえ。
偉い人がそのうち解説してくれるかも?

@PAGESがいつの間にかサービス終了していた件

@PAGESがいつの間にかサービス終了していた。
先月(2月)の末で終わっていたようだ。
WordPressを使い始めた頃のサーバーの一つがたしか@PAGES。
最近はずっと放置だったが、一応アカウントは持っていた。
サービスを終了するよというメール連絡には気づかなかったのだが、ぐぐってみると事前のメール告知はあったらしいので、おそらく迷惑メールに紛れて見落としたのであろう。

@PAGES、サービス終了

3次のスプライン関数

なにを今さら? なんだが、ちょっと「あれ?」だったことがあったので、覚書ってことで。

1~NまでのN個の点があるとする。
この時、区間の数は N-1 個。
3次関数の係数は4個なので、求めたい係数の個数は 4*(N-1) = 4N-4 個。

制約条件は以下の通り。

  1. 各区間の始点 xi での値は元の点の yi と等しい。
    fi(xi) = yi (iは1~N-1)
    これが N-1 個の制約条件。
  2. 各区間の終点 xi+1 での値は元の点の yi+1 と等しい。
    fi(xi+1) = yi+1 (iは1~N-1)
    これが N-1 個の制約条件。
  3. 両端を除く各点で1階微分が等しい。
    f'i(xi+1) = f'i+1(xi+1) (iは1~N-2)
    これが N-2 個の制約条件。
  4. 両端を除く各点で2階微分が等しい。
    f''i(xi+1) = f''i+1(xi+1) (iは1~N-2)
    これが N-2 個の制約条件。
  5. 両端の区間の端っこでは2階微分がゼロ。
    f''1(x1) = 0
    f''N-1(xN) = 0
    これが2個の制約条件。

1~5までの制約条件の数を足すと 4N-4 個。
つまり未知数の数と等しく、一意に決まる。

めでたし、めでたし。どんとはれ。