読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

目次

Xamarin

はじめに

Xamarin (ザマリンと読みます) とは、Gnome, Mono の開発者である Migel de Icaza (ミゲル・デ・イカザ) 氏が立ち上げた企業名であり、C#Android, iOS, Mac のネイティブアプリを作成できる開発ツール郡 (Xamarin.Android*1、Xamarin.iOS*2、Xamarin.Mac*3、Xamarin Studio*4 など) のブランド名です。

2016/4/1 をもって、Visual Studio に付いてくるようになりました。

本ブログは、エクセルソフトの田淵義人が Xamarin に関する様々な情報を記載しています。Xamarin って何だろ?という方、Xamarin についてもっと知りたい。というような開発者の皆様の手助けになれば幸いです。

まだ Xamarin に関する日本語の情報は少ないのが現状ですので、まず手始めにどのような情報を追えばよいのかを纏めておきます。

 

Xamarin とは?

紹介スライドなどをご覧ください。

 

書籍

 

コミュニティ

公式コミュニティサイト Japan Xamarin User Group (JXUG) 

facebook User Group

 

各種情報へのリンク

本ブログの主なエントリー

全般
Xamarin.Forms
Xamarin.Forms TIPS/逆引き
Xamarin Test Cloud
BAD KNOW HOW

全記事一覧 - Xamarin 日本語情報

Xamarin.Forms エントリー纏め

 

事例

事例

 

エクセルソフト Xamarin ページ

Qiita

ブログ、連載記事など

 

Xamarin 本家の開発者向けの情報(英語)

Xamarin 学習用リソースまとめ でも公式情報を纏めていますので、ご参照ください。

 

Xamarin 気になった方は

是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。
学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。

以上です。

*1:旧 MonoDroid, Mono for Android

*2:旧 MonoTouch

*3:OSS版はMonoMac

*4:OSS 版は MonoDevelop

【お知らせ】Xamarin Dev Days - Tokyo 開催します

Xamarin お知らせ

こんにちは。エクセルソフトの田淵です。

ti.to

発表されましたね!

f:id:ytabuchi:20160827135327j:plain:w450

2016/11/12(土) 9時(早い…)から 16時まで(時間を後ろにずらして良いか確認したいですね)で、Xamarin の本格的なハンズオンを開催します!

(上記ページでは、住所が変な感じになっていますが、Microsoft 品川オフィス C+D ルームを抑えてあります。)

なお、日程的に私はハードスケジュールになってしまいました笑

コースの資料やサンプルプログラムソースコードは Xamarin エバンジェリストの James Montemagno さんによるものです。

しっかり触ってみたいなという方は是非、上記ページで登録を!定員は100名までです。

スポンサー募集中

Dev Days では昼食が出ます。その昼食スポンサーをもう一社募集します。

ノベルティ出しますよって企業も大歓迎です。Xamarin のサイトに御社のロゴを載せませんか?

出すよーって方は田淵までお声がけください。

スタッフ募集中

後半はハンズオンです。Mvvm である程度しっかり作るやつなので、スタッフ必須。10名ほど募集します。

以下のサポートスタッフ用イベントページにて登録をお願いいたします。

jxug.connpass.com

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。

【メモ】Xamarin.Android でネットワークの状態を取得するには

Xamarin Android

こんにちは。エクセルソフトの田淵です。

Xamarin.Android でネットワークの状態を調べる方法をメモ書きです。

developer.xamarin.com

基本は上記にあるのですが、サンプルコードの Android.Net.ConnectivityManager.GetNetworkInfo(enum ConnectivityType) が Depracated です。(4.4 まで?)

enum を引数にできないだけで GetNetworkInfo(Network network) は使えるみたい。

5.0 以上の場合は Network[] allNetworks = connectivityManager.GetAllNetworks() で配列を取得すると良いみたいです。

こんな感じでしょうか。有識者の方はどのようにされているか教えてほしいです。

GetNetworkInfo

参考ページ:

stackoverflow.com

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。

【宣伝】 テスト自動化ツールのセミナー

こんにちは。エクセルソフトの田淵です。

すみません。宣伝です。

www.xlsoft.com

弊社でテスト自動化ツールを扱っているのですが、その紹介セミナーを開催いたします。

テスト対象はデスクトップ(WPF、WinForm)、Web(ブラウザを動かしてテストする感じ)、モバイル(iOS/Android ネイティブ)の受け入れテストを自動化するツールについてざっと全体を俯瞰するようご紹介をしていきます。

テストに興味のある方はぜひご参加ください(^^)

残念ながら Xamarin.Forms は未対応です

以上

Xamarin.Android の ListView で Item を追加、削除したい(CustomAdapter)

Xamarin Android

こんにちは。エクセルソフトの田淵です。

先日はまずは一番シンプルな単一行の SimpleListItem1 をセルにした ListView にデータを追加したり削除したりしました。

ytabuchi.hatenablog.com

今回は独自のセルを用意してデータ追加、削除を行ってみます。こんな感じです。

f:id:ytabuchi:20160819130200g:plain:w300

サンプルは以下に置いておきました。

github.com

セルの CustomView を作成

Android の ListView には Adapter とセルの View が必要です。公式ページ の Sample Code「CustomRowView」をベースにしています。

最初に View を用意します。

View は普通に Layout axml です。新規にレイアウトを作成し、任意のレイアウトを組んでください。今回は左に ImageView、右に縦に TextView を2つ並べ、一番右側に iOS っぽい矢印を入れてます。

こんな感じ。RelativeLayout で最初に ImageView を配置。2つの TextViewlayout_toRightOf="@+id/Image"layout_below="@id/NameText" を使って並べていきます。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:p1="http://schemas.android.com/apk/res/android"
    p1:layout_width="match_parent"
    p1:layout_height="match_parent"
    p1:id="@+id/relativeLayout1">
    <ImageView
        p1:src="@drawable/Icon"
        p1:layout_width="64dp"
        p1:layout_height="64dp"
        p1:paddingRight="8dp"
      
  p1:paddingLeft="8dp"
        p1:id="@+id/Image" />
    <TextView
        p1:text="Name"
        p1:textAppearance="?android:attr/textAppearanceLarge"
        p1:layout_width="match_parent"
        p1:layout_height="wrap_content"
        p1:id="@+id/NameText"
        p1:layout_toRightOf="@+id/Image"
        p1:paddingTop="8dp"
        p1:paddingRight="32dp" />
    <TextView
        p1:text="Age"
        p1:textAppearance="?android:attr/textAppearanceMedium"
        p1:layout_width="match_parent"
        p1:layout_height="wrap_content"
        p1:layout_toRightOf="@+id/Image"
        p1:layout_below="@id/NameText"
        p1:id="@+id/AgeText"
        p1:paddingRight="32dp" />
    <TextView
        p1:text="&gt;"
        p1:textAppearance="?android:attr/textAppearanceMedium"
        p1:layout_width="wrap_content"
        p1:layout_height="wrap_content"
        p1:id="@+id/RightArrow"
        p1:layout_alignParentRight="true"
        p1:layout_centerVertical="true"
        p1:padding="16dp" />
</RelativeLayout>

RelativeLayout については こちらの記事 が詳しいです。

BaseAdapter のクラスを作成

CustomAdapter は BaseAdapter<T> を継承して作成しますので、先ほど作成した CustomView の各項目に割り当てる型を用意します。今回は Image 1、string *2 なので次の TableItem.cs を用意しました。

public class TableItem
{
    public string Name { get; set; }
    public string Description { get; set; }
    public int ImageResourceId { get; set; }
}

Image は今回 Xamarin のサンプルに習い .SetImageResource(int resId) を使用したので int で用意しましたが、.SetImageBitmap(Android.Graphic.Bitmap bm).SetImageURI(Android.Net.Uri uri) を使用する場合は適切な型を指定します(すみません。Android.Net.Uri はまだ使い方が良く分かってなく…)。

CustomAdapter を作成

クラスを作成し、BaseAdapter<TableItem> を継承します。

f:id:ytabuchi:20160819133229p:plain:w450

Visual Studio であれば、必要なメソッドを用意してくれますので、それぞれに実装します。Xamarin のサンプルに習い次のように実装しました。

public class CustomListAdapter : BaseAdapter<TableItem>
{
    List<TableItem> items;
    Activity context;
        
    public CustomListAdapter(Activity context, List<TableItem> items)
    {
        this.context = context;
        this.items = items;
    }        

    public override long GetItemId(int position)
    {
        return position;
    }
    public override TableItem this[int position]
    {
        get { return items[position]; }
    }
    public override int Count
    {
        get { return items.Count; }
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var item = items[position];

        View view = convertView;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null);

        // BaseAdapter<T>の対応するプロパティを割り当て
        view.FindViewById<TextView>(Resource.Id.NameText).Text = item.Name;
        view.FindViewById<TextView>(Resource.Id.AgeText).Text = item.Description.ToString();
        view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);

        return view;
    }
}

GetView メソッド内で、TableItem のプロパティをそれぞれ割り当てます。

Activity で CustomAdapter を使う

ソースの List を用意して先ほど作った CustomListAdapter(Activity context, List<TableItem> items)インスタンス化して ListView の Adapter に指定します。

// ソースのListにアイテムを追加
tableItem.Insert(0, new TableItem()
{
    Name = "item_1",
    Description = "Description_1",
    ImageResourceId = images[4]
});

// CustomAdapterを作成して適用
var customAdapter = new CustomListAdapter(this, tableItem);
listView.Adapter = customAdapter;

データの追加、削除は、ソースの List に対して行い、Adapter に変更を通知してあげると良いそうです。(@Santea3173 さん、ありがとう!!)

ボタンをタップするとデータを追加したり削除したりする部分はこんな感じです。

var addButton = FindViewById<Button>(Resource.Id.customListViewAddButton);
addButton.Click += (sender, e) =>
{
    var rdm = new Random();
    // ソースのListにアイテムを追加し、Adapterに変更を通知して画面を更新させる
    tableItem.Insert(0, new TableItem() 
    {
        Name = "item_" + rdm.Next(), 
        Description = "Description_" + rdm.Next(), 
        ImageResourceId = images[rdm.Next(0, 8)]  // *1
    });
    customAdapter.NotifyDataSetChanged();

};

var deleteButton = FindViewById<Button>(Resource.Id.customListViewDeleteButton);
deleteButton.Click += (sender, e) =>
{
    if (tableItem.Count > 0)
    {
        // ソースのListからアイテムを削除し、Adapterに変更を通知して画面を更新させる
        tableItem.Remove(tableItem[tableItem.Count - 1]);
        customAdapter.NotifyDataSetChanged();
    }
};

*1 ですが、Randomで参照するので作成した画像データを元に int[] に Resource.Drawable.ramen1 などを入れておいてます。

ListView もそんなに怖くないですね。

ちょっとビビっていましたが、Android の ListView は大丈夫そうです。次は CardView か RecyclerView とかにチャレンジしたいですね。

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。