VSXamarin Android入门二

VSXamarin Android入门二,第1张

概述一、VisualStudio工具箱布局1、OtherWidgets这里就一个Switch,其实也就是一个开关布局2、Images&Media这里面的有ImageButton、ImageView、MediaController、VideoView等等。这里的这些就是引用的一些基本的播放器,可以直接从字面意思领略。3、Layouts布局我

一、Visual Studio 工具箱布局

  1、Other Widgets 这里就一个Switch,其实也就是一个开关布局

  2、Images & Media 这里面的有Imagebutton、ImageVIEw、MediaController、VIDeoVIEw等等。这里的这些就是引用的一些基本的播放器,可以直接从字面意思领略。

  3、Layouts 布局我就不说了

  4、Composite 通俗的说,这里面的基本上都是类似列表的的那种控件,比如,ExpandableListVIEw可以做一个手风琴那样的样式(http://blog.csdn.net/gyflyx/article/details/6461242)再如ListVIEw,也就是一个简单的风格(http://www.cnblogs.com/allin/archive/2010/05/11/1732200.HTML)GrIDVIEw(http://www.cnblogs.com/tinyPHP/p/3855224.HTML)。。等等。

  5、Advanced 里面的这些我还没有看,不过感觉还是和布局有关的。

  6、Form Widgets 这里面就是一些常用的,比如button、text、checkBox等等。

  7、Text FIElds 如E-mail(http://www.2cto.com/kf/201209/153859.HTML),Password这类的,怎么说,感觉这个就属于和系统交互数据的那部分组件。

  8、Time & Date 这里的包含了日期控件和时间控件等等。

  9、Other Layouts 从字面意思就能理解这是其他的布局了

    相关控件说明: 百度网盘链接: https://pan.baIDu.com/s/10qzw8R8fptNmlcrYDNHY_Q  提取码: x39q

  比如,我要查询前面说到的Imagebutton

  我们可以直接通过API来查询,来找一些属性,写代码应该都是这个道理了,写的多了,理解了,也就记住了。

 

二、控件

  一、ImageVIEw

<ImageVIEw      androID:layout_wIDth="match_parent"      androID:layout_height="wrap_content"      androID:ID="@+ID/imageVIEw1" />

  这里这么写的目的是为了介绍几个方法:

    ①、SetimageDrawable

  private voID Set_iv_url()        {            ImageVIEw iv1 = FindVIEwByID<ImageVIEw>(Resource.ID.imageVIEw1);            iv1.SetimageDrawable(Resources.GetDrawable(Resource.Drawable.myapk));        }

    这里的SetimageDrawable这里访问的Resorce,也就是说访问的是

    

    如图,也就是说我这里的写法是直接通过在Resources的文件夹下面的drawable来访问的,因为只要是资源文件,都有一个ID,也就是这里的resID,但是肯定会发现上面还有一个level.

    ②、SetimageLevel

    道理也是一样,但是这里传递的就是

iv1.SetimageLevel(AndroID.Resource.Drawable.AlertDarkFrame);

     也就是说这里的这个引用的是系统的资源,而不是上面的那个我们拷贝进去的资源,当然,还有一些,比如SetimageBitmap,直接按照正常的写法写就可以了。

  二、CheckBox

<CheckBox    androID:text="是否显示"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:checked="true"    androID:ID="@+ID/cb_test" />

     这个我们就看一下CheckBox选中就可以,但是怎么在界面上得到这个值呢。

CheckBox cb = FindVIEwByID<CheckBox>(Resource.ID.cb_test);      cb.CheckedChange += Cb_CheckedChange;

     因为在AndroID所有的界面元素都要去寻找,所以强转是每一步必须要写的。

/// <summary>  /// 是否选择,选择提示框  /// </summary>  /// <param name="sender"></param>  /// <param name="e"></param>  private voID Cb_CheckedChange(object sender, Compoundbutton.CheckedChangeEventArgs e)  {      //e.CheckedID      //是否选中      Toast.MakeText(this, e.IsChecked.ToString(), ToastLength.Long).Show();  }

     这里可以看到Toast.MakeText这个方法,是需要添加命名空间 AndroID.Widget 的,当然引用都一样,直接 using就可以了,至于里面的ToastLength是一个内置的枚举值,后面的Show()方法,才是重点,就是这个,才能打印到界面上,可以尝试一下。

  三、RadioGroup

  关于这个控件,大家应该能猜测是什么了,直接拖到界面上,你就晓得了,然后把里面的Radiobutton的值变一变什么的,你懂的

private voID Rb_ratingbarChange(object sender, ratingbar.ratingbarChangeEventArgs e){    Toast.MakeText(this, e.CheckedID.ToString(), ToastLength.Long).Show();}

   当然了,这个组件也是CheckedChange这个方法,直接调用这个方法,然后写一个方法,委托给它就好。其中,因为这个是一组Radiobutton,我们通过现在的CheckedID可以获取到的就是如下这个ID,有了这个ID,我们又可以做很多事情了,啦啦啦。

  四、日期和时间控件

  为什么要直接这么说呢,大家直接在工具栏就可以看到 Time & Date,就在那里面你一个个的去脱,就知道了。

    1、AnalogClock 就是一个石英表的表盘,直接拖过来就能看到效果的。

    2、DigitalClock 这个呢,是一个数字时钟,可以调解为24小时制的,也可以是上午下午的那种。

    3、TimePicker 这就是一个时间控件。作为时间控件,那么我们首先肯定要获取到值。

TimePicker tp = FindVIEwByID<TimePicker>(Resource.ID.timePicker1);tp.SetIs24HourVIEw(java.lang.Boolean.True);tp.TimeChanged += Tp_TimeChanged;

     在这里,一定要注意SetIs24HourVIEw()这个方法,尼玛,各种坑爹,也就是说这个方法本来的值其实也就是true或者false,但是在这里传递的时候,必须是java.lang.Boolean.True,Ok,说到这里,请大家一定要注意,这就是个坑,

    在Vs2015里面,只要是加了Java,好么,你就照着写就行,别想那么多,虽然我们都明白Boolean和Bool一个德行,但是呢,你懂的。

private voID Tp_TimeChanged(object sender, TimePicker.TimeChangedEventArgs e)      {          int hour = e.HourOfDay;          int min = e.Minute;          Toast.MakeText(this, hour.ToString() + ":" + min.ToString(), ToastLength.Short).Show();      }

     如上,直接通过代码获取值就可以了。不过可能因为虚拟机的关系,我的反应还是相当慢的,但是放到实体机器上面,效率还是不错的。

    如图,在红色框里面的信息就是我们的Toast.MakeText方法,Show()之后得到的效果,还是不错的么,哈哈。

  五、ratingbar

  相信我,当我把这个控件拖到页面上的时候,我瞬间惊呆了,尼玛,这不就是订餐软件的打分、诸如天猫、京东此类的打分么,我的个神呀。

  OK,我们说说,怎么获取吧,看代码

ratingbar rb = FindVIEwByID<ratingbar>(Resource.ID.ratingbar1);rb.rating = 13f;//分数rb.ratingbarChange += Rb_ratingbarChange;private voID Rb_ratingbarChange(object sender, ratingbar.ratingbarChangeEventArgs e){    if (e.FromUser)    {        Toast.MakeText(this, e.FromUser + "--" + e.rating, ToastLength.Short).Show();    }}

FormUser的意思就是是否人为改变,意思就是到底是不是有效 *** 作了,rating,注释也加了,分数,相信自己运行一下,你们有没有感觉其实我们也是很叼的样子。

  六、开关

  Togglebutton和Switch都有点开关的样子,我也没有具体看,直接就跳过了,看下效果图。

  

 

三、发短信和打电话

  1、发短信 

  直接来界面代码

  

?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:orIEntation="vertical"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <EditText        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:ID="@+ID/et_sms_per"        androID:inputType="phone"        androID:textSize="48px"        androID:hint="联系人" />    <EditText        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:ID="@+ID/et_sms_content"        androID:inputType="phone"        androID:textSize="48px"        androID:hint="请输入内容" /><!--wrap_content:包裹内容-->    <Imagebutton        androID:src="@drawable/resizeAPI"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:ID="@+ID/img_btn_sms" /></linearLayout>

 

   顺便说下这里面可以的 xmlns:androID="http://schemas.androID.com/apk/res/androID" 这一段申明绝对不能漏掉,看效果图。

  顺便说下,这个按钮图片是网上找的,随便找了一个,可能相当难看,不要问我为什么,额,就这样。

  后台代码:

protected overrIDe voID OnCreate(Bundle savedInstanceState)   {       base.OnCreate(savedInstanceState);       //获取button       Imagebutton img_btn_sms = FindVIEwByID<Imagebutton>(Resource.ID.img_btn_sms);       img_btn_sms.Click += delegate { btn_Send(); };   }    private voID btn_Send()   {       //要发送的对象       EditText et_per = FindVIEwByID<EditText>(Resource.ID.et_sms_per);       //要发送的内容       EditText et_content = FindVIEwByID<EditText>(Resource.ID.et_sms_content);       //执行发送       //获得默认的消息管理器       SmsManager smsManager = SmsManager.Default;       if (!string.IsNullOrEmpty(et_per.Text))       {           if (!string.IsNullOrEmpty(et_content.Text))           {               //拆分信息               IList<string> List = smsManager.divIDeMessage(et_content.Text);               //循环发送               foreach (string str in List)               {                   //发送短信                   smsManager.SendTextMessage(et_per.Text, null, str, nullnull);                   //显示发送成功                   Toast.MakeText(this"发送成功!!", ToastLength.Long).Show();               }           }           else           {               //没有短信内容               Toast.MakeText(this"没有短信内容!", ToastLength.Long).Show();           }       }       else       {           //显示发送成功           Toast.MakeText(this"没有填写联系人!", ToastLength.Long).Show();       }   }

   简单的解释一下,首先,我们要用到AndroID.Telephony,这个就是发短信的管理器,必须要用到这个系统运用。也就是SmsManager。

  短信有一个弊端,也就是说不能大于70字,理论值是这样,那么我们在这里采用divIDeMessage() 这个就是用来拆分消息,拆分成多条,但是,问题就来了,用户接受到的肯定是多条短信,于是呢,就有了 sendMultipartTextMessage() 这个方法,这个的目的就是说短信发送的时候其实还是70个字这样的截取的,收费还是这么收费的,但是,在接收的时候,我们看到的是一条短信,至于到底为什么这样,额,这个问题,对于我来说,有点高深,我也是百度的。。虽然我已经亲自测试这个方法可用。

  接下来就说说我发短信遇到的问题吧,刚有代码是不够的,首先,因为我本地下载的是 API23 和API 15,大爷的,每次默认的都是建立的API23的程序,但是我只有一个API15的虚拟机,所以说,第一次启动都失败了。

  

  打开AVD Manage可以看到我们现在建立的虚拟机到底是那个版本,然后程序→右键→属性

  

  先看下是不是匹配,然后再继续,问题又来了,就像我们 *** 作AndroID手机一样,不是有一个root么,也就是说要有权限,坑爹呀,同样,右键属性

  

  对,就是这里,权限勾选上,OK,终于成了。

  二、打电话

  打电话相对而言就简单了。同样的,写一个EditText,获取要拨打的电话号码,然后写一个button就可以

  后台代码

button button = FindVIEwByID<button>(Resource.ID.Mybutton);button.Click += delegate { btn_Call(); };

 

private voID btn_Call(){    /*    报错:权限问题    既CALL_PHONE的权限(右键→属性→AndroID Mainifest)    */     EditText et_num = FindVIEwByID<EditText>(Resource.ID.tel_num);    //调用系统的拨打号码界面    //必须是 tel 开头的    Intent intent = new Intent(Intent.ActionCall, AndroID.Net.Uri.Parse("tel:" + et_num.Text));    //启动拨打界面    StartActivity(intent);}

   必须要注意的就是,在这里的AndroID.Net.Uri.Parse 在这里直接传值是不可以的,必须要有一个tel的识别符号,然后我也试着把冒号删除掉,也不行。我也是百度的,

今天就到这里……

总结

以上是内存溢出为你收集整理的VS/Xamarin Android入门二全部内容,希望文章能够帮你解决VS/Xamarin Android入门二所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存