2016年4月14日木曜日

[Xamarin]バージョン2.0.06482、2.1.0.6529はスキップして2.2系列が出るのを待った方がよい理由

バージョン2.0.06482、2.1.0.6529はスキップした方がよい理由


これら2つのバージョンは、2016年3月31日(本土時間)、マイクロソフトがXamarinをオープンソース化を発表した時点のXamarinバージョンになります。


それまでは製品版として販売していたのだからすぐ使えるくらいの品質かというとそうでもありませんでした。
(きっとVisual Studio環境下のXamarinはまだアルファ版レベルなのだろう。。。)

特に2.1.0.6529は古いバージョンに依存していて、まともに使えたものではない、そんな状況になっています。

まとめると、
 2.0はかなり古いけど使える。
 2.1はメジャーバージョンだけど、依存ライブラリのバージョンを下げないと使えない。
 2.2はオープンソース化になって初めてのメジャーバージョンになる(現在Pre版)

ということで、まともになるのはそれ以降の2.2系列、
頻繁にXamarin.Formsプレビュー版2.2.*系列が更新されているので、それが正式版になるまで待った方が無難です。


バージョン2.2が出るまでに環境構築を覚えておきたい!って思った方用に情報をまとめておきました。

下記TIPSはどのバージョンでも共通した内容なので覚えておいて損はありません。



~準備編~

・Xamarinのバージョンをベータ版を使用する
 ツール -> オプション -> Xamarin -> Other -> Beta版を選択
 https://developer.xamarin.com/recipes/cross-platform/ide/change_updates_channel/



~プロジェクト作成~

・新規プロジェクト作成
 Cross-Platform -> Blank App(Xamarin.Forms Potable)を選択


・ビルド構成を設定する
 ソリューションエクスプローラーにあるソリューションを右クリックを押してビルド構成を選択


・ソリューション全体のXamarinパッケージをアップデートする
 ツール -> Nuget -> ソリューションのNugetを管理する -> 更新プログラムからパッケージを更新。
 ※表題どおりバージョンが2.1.0.6529はアップデートするとエラーばかり出て使えないので注意。


~番外編~

・SQLite-netを使う
 http://javatechig.com/xamarin/using-sqlite-net-orm-in-xamarin-application



2016年4月4日月曜日

[Xamarin]VSユーザーからみたXamarin入門(2)


今回は広告Admobを表示してみる編です。

※現時点2016.04.04 Businessプラン以上のライセンスでないと使えないようになっています。

まず何をするかというと、Google Play Serviceをインストールすることから始まる。

どうやっていれるんだって思っていたら、

Componentsを右クリックする

ソリューションエクスプローラ内にコンポーネント追加する項目がありました。

Nugetみたいに入れられる機能がある事に感動。

さっそく 検索欄にAdmobといれてインストール。

そしてドキュメントを開いてみると、設定手順が丁寧に書かれている。

(パーミションとか自動でチェック入れろよとか、思ってはいけません)


設定手順通りに、
PropertiesのAssemblyInfo.csにパーミション追加
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]

AndroidManifest.xmlにAdmobを追加




この辺りはAndroidStudioと同じ方法。

あとはUIに広告を追加すれば完成。

UIのファイルはResource¥Layoutフォルダ内のMain.axmlファイルになります。
ダブルクリックで開くと馴染み深いGUIデザイナー画面になります。

さっそくツールボックスの中からAdmobを探してみると、、入ってません。

Getting Startにも書かれていないけど、Google公式にあるAdmob導入するHowToにはやり方が載っているので、そこからXMLタグを抜粋して張り付ける。

XAMLのSourceタブを選択して自前でタグと属性を挿入する。

-------
Layoutの属性に追加
xmlns:ads="http://schemas.android.com/apk/res-auto"

このタグを好きな位置に配置
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
   

-------

ここまで設定してふと気づく。
Getting Startだけだと設定が足りてないので、
最初から以下のサイトを見ながら設定した方が早いです。

https://developers.google.com/admob/android/quick-start#give_your_app_an_ad_unit_id


一通り済んだから、ビルド実行。

。。。。。


あれ?

User code size, 2702336 bytes, is larger than 131072 and requires aツBusinessツ(or higher) License. android1
Using type `Android.Runtime.JNIEnv` requiresツBusinessツ(or higher) License. android1


なにこれ!Visual Studio Update1だから?

ライセンス開放してくださいよー(切実)

Update2にアップデートすれば可能なんだろうけど、今家の回線が0SIMで繋いでるのでアップデートできません。。

ってことで、いつかのアップデートで対処されるんだろうけど今回はこんな切ない終わり方で終了します。

後日、家の固定回線が使えるようになったときにでもUpdate2にしたときどうなったかを追記します。


次回へ続く。

[Xamarin]VSユーザーからみたXamarin入門(1)

今回は触りだけ。
新規プロジェクトで出来たプロジェクトをビルドしてAndroidスマホでデバッグするまでをやってみたいと思います。


Step1.新規プロジェクトからAndroid→Blank App を選択していつものようにプロジェクトを立ち上げる。


Step2.ソリューションエクスプローラから作ったプロジェクトのプロパティを開いて、新しい項目に着目する。


コンパイラのバージョン設定とかターゲットのAPIバージョンの設定




パッケージ名とパーミションの設定



アンドロイドの固有設定(1)




アンドロイドの固有設定(2)

アンドロイドの固有設定(3)


所感、アイコンの設定やマニフェストの設定、ビルドに関する設定があるようだ。
細かい設定は分からなくてもそのままビルドすれば実機で動くので、ひとまず必要になった時に調整していくことにする。


Step3.実機をUSB接続した状態であとはF5ボタンを押すとデバッグが開始させる。

 Hello worldは以上!



コード書かずに実機でHello worldまで進める事が出来ました。



ついでにソリューションエクスプローラの中をみていくと

フォルダ構成はAndroid Studioとかなり似た構成になっているようです。

ざっくり説明すると

Assetsはメディアファイル関係

Resource内
 Drawableに画像関係
 Layoutに画面レイアウト
 Valuesに文字列などの情報

1つ気になったのは、異なるアイコンサイズ事にアイコンを作らなくていいの?っていう点。
まあ、設定項目がないんだから今のところ開発環境がうまいことやってくれるんだろうって思ってる。(希望)



まとめ
・ほぼ今までと同じ操作でXamarinが使える事。

・GUI周り、フォルダ構成、プロジェクト構成、この部分はAndroid依存要素があるので新たに覚える必要がある。


2016年3月9日水曜日

[RaspberryPi]日本語が文字化けした時の対処方法+Chromiumのインストール


1.Raspi-configの設定
 「Innternnatiolisation Options」
   ↓
 Change Locale
   ↓
 ja_JP.UTF-8をチェックしてデフォルト言語に選択


2.日本語化アプリのインストール
$ sudo apt-get install -y ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname uim uim-anthy jfbterm


3.Chromiumをインストール
$ wget http://launchpadlibrarian.net/199573270/chromium-browser_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb
$ wget http://launchpadlibrarian.net/199573282/chromium-codecs-ffmpeg-extra_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb
$ wget http://launchpadlibrarian.net/199573279/chromium-codecs-ffmpeg_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb
$ wget http://launchpadlibrarian.net/199549151/chromium-browser-l10n_41.0.2272.76-0ubuntu0.14.04.1.1076_all.deb

$ sudo dpkg -i chromium-browser_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb chromium-codecs-ffmpeg_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb chromium-codecs-ffmpeg-extra_41.0.2272.76-0ubuntu0.14.04.1.1076_armhf.deb chromium-browser-l10n_41.0.2272.76-0ubuntu0.14.04.1.1076_all.deb




参照URL
http://start-now.link/100/archives/1930

2016年3月8日火曜日

[RaspberryPi]VPNServerを立てる

VPNサーバーとは
 外部から安全に特定のネットワークへアクセスするサービスを提供するサーバーの事です。

どういう時に導入するの?
 外から自宅のネットワークにアクセスしたい時などは直接複数のポートを開けば良いのだが
セキュリティーホールは開いたポート先のサービス毎に存在することになるので管理が大変だが
VPNサーバーを立てると、外から見えるのはVPNサーバーのポート1つだけになるので
セキュリティーホールはVPNサーバー1つだけとなり、管理がしやすく安全になります。


導入手順
 1.SoftEtherをダウンロードする。


 にアクセスして、

  SoftEhter VPN(Freeware)
   ↓
  SoftEhter VPN Server
   ↓
  Linux
   ↓
  ARM EABI(32bit)

  を選び、最新イメージのダウンロードURLをコピーする。

  $ wget http://jp.softether-download.com/files/softether/v4.19-9605-beta-2016.03.06-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.19-9605-beta-2016.03.06-linux-arm_eabi-32bit.tar.gz
    $ tar zxf softether-vpnserver-v4.19-9605-beta-2016.03.06-linux-arm_eabi-32bit.tar.gz
    $ cd vpnserver


 2.コンパイルする。
    $ sudo make

    ~ライセンスについて聞かれるので承諾する。~


 2.起動時に実行するように設定する。
  まずはvpnserverをシステム側に移動させる
    $ cd ..
    $ sudo mv vpnserver /usr/local/
    $ cd /usr/local/vpnserver
    $ sudo chmod 600 *
    $ sudo chmod 700 vpncmd
    $ sudo chmod 700 vpmserver

  次に起動に必要なファイルを作成
    $ sudo vim /etc/init.d/vpnserver
#!/bin/sh
### BEGIN INIT INFO
# Provides:                     vpnserver
# Required-Start:               $local_fs $network
# Required-Stop:                $local_fs $network
# Default-Start:                2 3 4 5
# Default-Stop:                 0 1 6
# Short-Description:            SoftEther VPN 1.0 RC2
# Description:                  Start vpnserver daemon SoftEther VPN 1.0 Server
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

. /lib/lsb/init-functions

test -x $DAEMON || exit 0

case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3

;;

stop)
log_daemon_msg "Stopping SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2

;;

restart)
$DAEMON stop
sleep 2

$DAEMON start
sleep 5

;;

status)
    if [ -e $LOCK ]
    then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)

echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0


    $ sudo vim /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

    $ sudo chmod +x /etc/init.d/vpnserver
  $ sudo systemctl start vpnserver
  $ sudo systemctl enable vpnserver


 3.ブリッジする
  $ sudo apt-get install bridge-utils
    $ sudo vim /etc/network/interfaces
# loopback
auto lo
iface lo inet loopback

# Ethernet port
auto eth0
iface eth0 inet manual

# Bridge interface
auto br0
iface br0 inet dhcp
bridge_ports eth0

#その他
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


 4.再起動して自動起動しているか確認する。
    $ sudo reboot
    $ sudo service vpnserver status


 5.外からアクセスできるようルータ側の設定を行う
   SoftEhterは
          TCPの449と2222
          UDPの500と4500
   を使うのでポートを開けておく。


参考URL


2016年3月4日金曜日

[RaspberryPi]Asteriskを使う(3)Systemdで起動設定編

Jessieだとinitではなくsystemdになっていてインストール時にサービス登録されているのかな?って調べてみると登録されていなかった。。

ということで起動時にasteriskが立ち上がるように設定する事にした。


参考にしたサイトはここ。

http://www.voip-info.jp/index.php/BeagleBone_Black_Asterisk


$ cd /etc/systemd/system
$ sudo vim asterisk.service
---
[Unit]
Description=Asterisk Open Source PBX
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/asterisk -U asterisk -G asterisk

[Install]
WantedBy=multi-user.target
---


$ sudo ln -s /usr/lib/systemd/
$ sudo ln -s /usr/lib/systemd/
$ sudo ln -s /lib/systemd/system/asterisk.service /etc/systemd/system/multi-user.target.wants/asterisk.service
$ sudo systemctl enable asterisk
$ sudo systemctl start asterisk


再起動して以下のコマンドで動作しているか確認。
ps -ef|grep asterisk
systemctl|grep asterisk

[RaspberryPi]Asteriskを使う(2)G729インストール編


音声コーデックG729をインストールする。


参考にしたサイトは以下のところです。
https://smallhacks.wordpress.com/2014/01/13/using-asterisk-g-729-with-asterisk-on-raspberry-pi-or-other-arm-device/
http://www.adeleda.com/compiling-g729-codecs-for-arm-on-raspberry-pi-b-with-bcg729-en.html
https://disqus.com/home/discussion/adeleda/compiling_g729_codecs_for_arm_on_raspberry_pi_b_with_bcg729/


それらをまとめて一発でインストールできるようにした手順は以下の通り。


sudo wget http://download-mirror.savannah.gnu.org/releases/linphone/plugins/sources/bcg729-1.0.1.tar.gz
sudo ./configure --libdir=/lib
sudo make
sudo make install

sudo wget http://asterisk.hosting.lv/src/asterisk-g72x-1.3.tar.bz2
sudo bzip2 -dc asterisk-g72x-1.3.tar.bz2 | sudo tar xvf -
sudo apt-get install autoconf automake libtool autoconf-doc libtool-doc
cd asterisk-g72x-1.3
sudo ./autogen.sh
sudo ./configure --with-bcg729 --with-asterisk-includes=/usr/include --with-asterisk130
sudo make
sudo make install




最後は動作確認
asterisk -vvvvr
# core restart gracefully

これでG729の項目が表示されていればOK。

[Raspberrypi]Asteriskを使う(1)インストール編

asteriskを使う

簡単にインストールする場合は

 apt-get install asterisk -y


でインストールできるんだけど光電話パッチを入れたりしたかったので
2016.03.03時点の最新ソースからビルドを行ってみた。

http://www.voip-info.jp/index.php/Asterisk_13

上記リンクを参考に進めようと思うが、
記事の内容はredhat向けに書かれているで、本記事でdebian向けに書きなおした
インストール手順を書いていく。

(光電話パッチは2014年時点のものでも問題なくパッチ当てができました)


sudo apt-get install -y subversion libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite3-dev libbluetooth-dev
sudo apt-get install -y libsqlite3-dev libncurses5-dev bison libssl-dev libnewt-dev zlib1g-dev procps gcc make binutils doxygen g++ libxml2-dev

sudo groupadd -g 5060 asterisk
sudo useradd -g 5060 -u 5060 -d /var/lib/asterisk -s /sbin/nologin asterisk
cd /usr/local/src/
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
sudo tar zxf asterisk-13.7.2.tar.gz
cd asterisk-13.7.2/
sudo wget http://ftp.voip-info.jp/asterisk/patch/local/13/chan_sip_hikarihgw.141202-01.patch
sudo patch -p0 < chan_sip_hikarihgw.141202-01.patch
sudo ./contrib/scripts/get_mp3_source.sh
sudo ./contrib/scripts/get_swagger_ui.sh
sudo ./configure

日本語音声ファイルをインストールする
sudo make menuselect


sudo make
sudo make install
sudo make sample
sudo make config


自動起動になっているか確認
sudo chkconfig asterisk --list


この後はG.729コーデックのインストールとか初期設定編へと続く。


2016年3月2日水曜日

[RaspberryPi]有機液晶OLED SSD1331を使ってみる



RaspberryPiで何かいい液晶がないか探してみたら
SPI通信で表示できる有機液晶SSD1331というものを見つけた。
値段は送料込みで11$くらいなので1300円くらい。



製品仕様
サイズ:0.96インチ
解像度:96*64
発色:65k
ドライバIC:ssd1331

ピン配置GND: Power ground
VCC:2.8-5.5V power supply
D0: CLK clock
D1: MOSI data
RST: Reset
DC: data / command
CS: chip-select signal


誰かサンプルプログラムを書いていないか検索してみたら、やはりいました。
https://www.raspberrypi.org/forums/viewtopic.php?t=126811&p=871760

ここから行き着いた先はGithub



【配線図】

RaspberryPiのピンの始まりを間違えないように確認して、



液晶とこんな感じに接続する。
完全なSPI通信出ない気がするけど、今回は動作確認なので同じ配線にする。


GithubにあるPythonのソースコードをダウンロードして

$ python clock.py

実行してみると、、、




動いたー!





初期不良じゃなくてよかった。
しかも結構明るくて良い。
あとなぜか電源ラインVCCを外してもそれなりに画面写ってました(笑)

2016年2月29日月曜日

ラズベリーパイ4周年記念にRaspberry Pi3 Model B debut!

ラズベリーパイが4周年記念ということでRaspberryZero出て半年も立たずに次も出るのRaspberryPi3が出てきた。
今回の目玉は、、、

・Wifi 2.4GHz搭載
 →今まで占有してたUSBポートが1つ空きます。

・Bluetooth4.1搭載
 →Bluetooth対応キーボードやマウスがそのまま流用できそう

・CPUがCortex-A7からCortex-A53へアップグレード
 単純に言えば64Bit対応になった事が一番大きい。
 どの程度の性能かというと初期のAtomより少し高く肩を並べるくらい。

 変化点を見ていくと、、、
 →Cortex-A53とは、2012年にbig.LITTLEコアで省エネと高パフォーマンスを両立しようと
   打ち出された省エネ側のCPUコアである。
 →SIMD命令のNEONに対応などがされている。
 →64Bit命令セットを対応することで、64Bitバイナリを実行するときは、
  32Bit命令セットの負債を捨ててよりシンプルな構成になるので若干の速度アップがあるかも。
 →アーキテクチャ側の変更でインオーダー処理している部分が今までは同時2発行が
   限定的だったが、限定的でなくなるので処理性能がアップする。(若干)

・消費電力がアップ
 →推奨が5V2.5Aなので、タブレット以上の電源が必要になりそう。


性能も上がって無線機能も標準搭載して値段は据え置き。
また5000円代で買えるのが嬉しい。

販売はRSコンポーネントかPimoroniで行うのでZEROが入手出来ないけど
手元にあるRPiのバージョンアップという名目で1つどうでしょうか。


個人的には
RaspberryPi3 もしくは
RaspberryPi Zero + ESP6288(Wifi+GPIO) or ESP32(Wifi+BTLE) という
メインCPUにRPI 、UI側を担当 
サブCPUにESP5288で通信処理もお任せするような構成もいいかなと思う。

2016年2月26日金曜日

[Windows10]VAIO内臓のBluetoothが使えない

・BluetoothドライバがWindows10に対応していない。
 VAIOで使われているBluetoothのICは「qualcomm atheros AR3012」というもので
調べてみるとWindows8.1までしか対応していないようです。


・対応していなくても使いたい。
 ネットで調べてみると、BluetoothアダプタとBluetooth Suiteという2種類のものがあるようです。

最悪Bluetoothアダプタの方を対応しておけば最低限のBluetoothプロトコルは使えるようになります。
A2DPなどのプロトコルに対応するにはBluetooth Suiteが対応していなければならないようです。

調べてみると、ここで非公式で配布しているようです。

 http://alldrivers.ucoz.net/news/qualcomm_atheros_ar301x_ar9462_qca9565_bluetooth_suite_version_10_0_1_4/2015-11-01-786

※非対応のドライバを使うので十分確認してから、自己責任でお願いします。


まずは、「プログラムのアンインストールまたは変更」で既にインストール済みのQualComm Atheros Bluetooth Suiteを削除します。

次にダウンロードしてきたSuiteをインストールします。

これでおしまい。


これで一応ですが、使えるようになりました。


2016年2月15日月曜日

ロボットアームのXYZ座標の計算式


去年からやっているロボットアームの位置制御でX,Y,Z座標からモーターの角度を計算する式で一番シンプルなものができたのでメモ。



条件:水平方向に動くモータが1つ、垂直方向に動くモーターが2個あるロボットアームのとき

それぞれの部位の名称を

 ・付け根を肩(垂直軸Base、水平軸Shoulder)、
 ・中間を肘(Elbow)、
 ・先端を手首(Wrist)

かつ腕の長さが等分であると定義する。


上記条件において、手首WristのX、Y、Z座標を与えた時それぞれの角度を求める式。(決定版)

///
/// ShoulderとElbowの長さが一緒なら二等辺三角形で計算式を解く
///
///
///
///
public void Calc(double x, double y, double z)
{
var h = Math.Sqrt(x * x + y * y);
var k = Math.Sqrt(h * h + z * z);
var pa = Math.Atan(z / h);
var pb = Math.Acos(k / 2.0);

X = x;
Y = y;
Z = z;
ThetaBase = Math.Atan(y / x);
ThetaShoulder = pa + pb;
ThetaElbow = -2.0 * pb;
}

腕の関節の長さが一緒なら二等辺三角形になる。
そうすることで何が嬉しいかというと、2等辺三角形の公式が使えるので
辺の長さを無視する事が出来る。
つまり、XYZ座標から斜辺kを求めれば全ての角度が計算できる事を意味している。


ロボットをこれからやろうと思った人はぜひ、参考にしてください。

2016年2月11日木曜日

Android Stdioでアプリ開発(1)

AndroidStudioで本格的にアプリを作ろうと思い、
備忘録としてメモを残しておく。

今回、第1回は開発環境の使い方から画面の作り方までをまとめておく。


【ダウンロード&インストール】
 ここではダウンロードURLだけ紹介。

 ・AndroidStdio本体のダウンロードURL
  http://developer.android.com/intl/ja/sdk/index.html

 
 インストールして新規プロジェクトを作ったらまずやることは、
 左メニューにあるソリューションのコンボックスを「Project Files」にする。



【覚えておくべきフォルダー構成】

app
 java
  com.example.name.myapplication
    ココにソースファイル
  res
    drawable
      画像ファイルを置く
    layout
      画面レイアウトファイル


この3か所。
・ソースファイルと画面レイアウトは別フォルダになっている。
・画像データはdrawableフォルダに格納する。

この2点を覚えておく。


【覚えておくと楽なショートカット】
・CTRL+F9 ・・・ビルド
・SHIFT+F10 ・・・実行
・ALT+ENTER ・・・足りないimportやコンストラクタ処理を作成
・CTRL+O ・・・Overloadメソッドを作成

これだけ覚えておけばある程度エディタを使いこなせると思う。



【画面の作り方】
 スマホアプリは画面が小さいこともあってデスクトップアプリのように自由なレイアウトを行う事ができない。
 ページごとにテーマを決めて、画面遷移を作って、
 画面だけのモックアップアプリを作ることがスマホアプリの開発の流れになる。
 これが世間でいうUI/UXといわれる部分である。
 良いアプリでも似たアプリが沢山あるから、
 使いにくいアプリはユーザーに捨てられるという事なんでしょうね。

レイアウトにある要素は以下の7つ。
・Layouts
・Widgets
・Text Fields
・Containers
・Date&Time
・Expert
・Custom

レイアウトは、横一列、縦一列を広く設置するのに使う。
また、レイアウトの中に部品を設置できたり、
Viewクラス経由でオリジナルの画面を作ったりすることができる。
なのでレイアウトはとても重要なので覚えておくべき。


ざっくりとした画面の作り方。
1.レイアウトを設置する。
  プロパティ画面で使う項目は、
   layout:width
   layout:height
   gravity
   id

2.画面割りが決まったら「id」を付けていく。
  idを付けないとプログラムから操作できない。


【Viewクラスの作り方】
1.ソースコードを新規作成したら、

 import android.view.View;

を追加する。

2.クラスにViewを継承すること。

 public class exampleView extends View {
     ...
 }

3.コンストラクタはクラス名にカーソルを置いて、ALT+Kボタンを押すとコンストラクタを自動生成できる。


4.OnDrawなどを作りたいときはCTRL+Oボタンを押す。


【レイアウトに反映する方法】
 MainActivityクラスを開いて、コンストラクタ内にコードを書く。
手順は、作ったViewクラスを生成したらレイアウトに登録する。

 exampleView view = exampleView(this);
  LinearLayout layout = (LinearLayout)findViewById(R.id.exampleLayout);
  layout.addView(view);


コードはこんな感じ。
Viewを生成して張り付けるレイアウトを取ってきて、ビューを登録する。
やりたい事3つで3行。
これはおまじないみたいに覚えておこう。


余談。
「R」←これはリソースのRと思ってOK。
画面レイアウトのIDや画像ファイルなどを参照する場合に使うので
リソース使いたいなあーって思ったら「R」


第2回へ続く。

Androider