精华内容
下载资源
问答
  • xamarin开发listview的翻页,项目可以直接使用,数据源可替换成sql数据库
  • 针对Xamarin异常退出的一种原因 经验一般,遇到一些低级错误,但有些坑就在那里,发现,分享,共勉: App异常退出,抛出的调试信息如下: Thread finished: #21 线程 0x15 已退出,返回值为 0 (0x0)。 06-14...

    针对Xamarin开发安卓异常退出的一种原因

    经验一般,遇到一些低级错误,但有些坑就在那里,发现,分享,共勉:

    App异常退出,抛出的调试信息如下:

    Thread finished: #21
    线程 0x15 已退出,返回值为 0 (0x0)。
    06-14 19:04:02.645 D/Mono ( 8831): GC_BRIDGE waiting for bridge processing to finish
    06-14 19:04:02.705 D/dalvikvm( 8831): GC_EXPLICIT freed 31433K, 89% free 4387K/36868K, paused 3ms+5ms, total 40ms
    06-14 19:04:02.745 D/Mono ( 8831): GC_TAR_BRIDGE bridges 6014 objects 6015 opaque 0 colors 6014 colors-bridged 6014 colors-visible 6014 xref 0 cache-hit 0 cache-semihit 0 cache-miss 0 setup 1.36ms tarjan 6.81ms scc-setup 2.99ms gather-xref 0.34ms xref-setup 0.07ms cleanup 2.39ms
    06-14 19:04:02.745 D/Mono ( 8831): GC_BRIDGE: Complete, was running for 97.91ms
    06-14 19:04:02.745 D/Mono ( 8831): GC_MINOR: (Nursery full) time 71.56ms, stw 73.31ms promoted 808K major size: 1616K in use: 902K los size: 1024K in use: 351K
    In mgmain JNI_OnLoad
    06-14 19:04:02.825 E/mono-rt ( 8831): [ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: Handle is not initialized.
    06-14 19:04:02.825 E/mono-rt ( 8831): at System.Runtime.InteropServices.GCHandle.Free () [0x00021] in <657aa8fea4454dc898a9e5f379c58734>:0
    06-14 19:04:02.825 E/mono-rt ( 8831): at R91Range.RangeKernel.RcmProtocal.Finalize () [0x0001b] in E:\LCY\Temp\NJAWS\R91Range\RangeKernel\RcmProtocal\RcmProtocal.cs:16

    通过分析,不难发现,是最后一句有异常,顺藤摸瓜
    最终锁定为RcmProtocal.cs的16行为“HandleGC.Free();”

    源代码如下:

        public class RcmProtocal
        {
    
            ~RcmProtocal()
            {
                if (_ReciveCacellation != null)
                    _ReciveCacellation.Cancel();
                HandleGC.Free();
                BoardHandleGC.Free();
            }
    ………………
    }

    将其修改后

    
            ~RcmProtocal()
            {
                if (_ReciveCacellation != null)
                    _ReciveCacellation.Cancel();
                try
                {
                HandleGC.Free();
                BoardHandleGC.Free();
    
                }
                catch(Exception e)
                {
                    Console.WriteLine("捕获到长期致命异常:"+e.Message);
                }
            }

    通过异常捕获机制终于发现
    捕获到长期致命异常:Handle is not initialized.
    06-14 19:26:08.065 I/mono-stdout(26806): 捕获到长期致命异常:Handle is not initialized.

    显然这就是释放资源抛出的异常,一切正常了。


    2018年6月9日23:12:31
    Dawn

    展开全文
  • Visual Studio 2012+Xamarin开发安卓应用

    千次阅读 2014-05-17 10:29:51
    作为一个跨平台开发框架,Xamarin.Mobile有很多优点。在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续在Visual Studio之中使用 C# 与 .NET Framework 进行。  ...

    作为一个跨平台开发框架,Xamarin.Mobile有很多优点。在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续在Visual Studio之中使用 C# 与 .NET Framework 进行。 

    1.下载Xamarin

    2.安装Xamarin

    下载后运行EXE文件,之后经过一些必要的下一步,想要开发Android,Android肯定是要勾选了,IOS看心情

    自己添加Android SDK路径

    注意关闭已经打开的Visual Studio实例

    之后就开始了各种安装和下载

    10分钟过去。。。安装完成

    3.配置Android SDK环境变量

    注意这里的操作,找到自己的Android-SDK的安装目录,添加一个环境变量

    ANDROID_SDK_HOME=D:\Program Files (x86)\adt-bundle-windows-x86_64-20130219\sdk

    另外,还需要在Path中添加

    %ANDROID_SDK_HOME%/tools;%ANDROID_SDK_HOME%/platform-tools;注意,是2条(如果已经打开了Visual Studio那需要重起Visual Studio才能生效)

    4.新建Android项目

    打开Visual Studio,我们就能看到这些Android项目了,来,新建一个

    新建的时候会跳出授权信息

    如果想试用请点试用,或者输入一个License或使用Xamarin账号都可以,如果使用Xamarin账号会直接跳转到Xamarin做授权。

    授权后不要关闭页面要多等一会,然后VS会做提示,之后重启VS,授权成功,项目列表自然显示

    点击Debug,出现选择模拟器界面,这里选择Start emulator image

    之后创建一个新的emulator image

    之后建立一个模拟器;或者注意到Device Definitions 标签下去用模板建立一个也OK;新建后点击Start

    模拟器就运行起来就算是大功告成。

    这时在选择设备中就可以选择相应设备

    再经过一段时间的等待程序就已经可以运行了,我也也可以去测试默认的模板建立的点击的程序

    本文使用的环境是Windows 8 Visual Studio 2012.2

    展开全文
  • 我想写安卓APP,想问下目前的开发环境,XAMARION这个如何????????我下载了一个,怎么也安装不好。。。。VS2015根本不会出现,XAMARION STUDIO,下载安装后,新建工程不能出现NEXT按钮。
  • 试了好多 ,,statckexchang.redis ,用不了,在windwos下正常,但是一到手机里就连不上,大神门指点一下
  • 如题,手机中可能有1-2张SIM卡,如何获取,网上好多JAVA的,有没有愿意帮看一下如何用 xamrin 实现?
  • xamarin开发了一个安卓App,找不到支持的广告平台。求助各位大侠!
  • Xamarin安卓开发:动画Interpolator

    千次阅读 2014-10-21 00:13:43
    xamarin安卓开发中添加动画有好几种,这里归纳一下其中一种 interpolator,能够实现一些简单的平移、缩放、旋转、透明度变化等动画,基本够用了,做页面跳转可以用。 1,interpolator的分类 android:interpolator...

    xamarin安卓开发中添加动画有好几种,这里归纳一下其中一种 interpolator,能够实现一些简单的平移、缩放、旋转、透明度变化等动画,基本够用了,做页面跳转可以用。


    1interpolator的分类

    android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:

    • @android:anim/accelerate_interpolator 越来越快
    • @android:anim/decelerate_interpolator:越来越慢
    • @android:anim/accelerate_decelerate_interpolator:先快后慢
    • @android:anim/anticipate_interpolator: 先后退一小步然后向前加速
    • @android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点
    • @android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点
    • @android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点
    • @android:anim/linear_interpolator:均匀速度。


    2几种动画

    alpha动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/accelerate_interpolator">  
        <alpha  
            android:fromAlpha="1.0"  
            android:toAlpha="0.0"  
            android:startOffset="500"  
            android:duration="2000"  
         />  
      
    </set>
    scale动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/accelerate_interpolator">  
        <scale  
            android:fromXScale="1.0"  
            android:toXScale="0.0"  
            android:fromYScale="1.0"  
            android:toYScale="0.0"  
            android:pivotX="50%"  
            android:pivotY="50%"  
            android:duration="2000"  
        />  
      
    </set>
    rotate动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/accelerate_interpolator">  
        <translate  
            android:fromXDelta="50%"  
            android:toXDelta="100%"  
            android:fromYDelta="50%"  
            android:toYDelta="100%"  
            android:duration="3000"  
        />  
      
    </set>
    translate动画:
    <set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/accelerate_interpolator">  
        <translate  
            android:fromXDelta="50%"  
            android:toXDelta="100%"  
            android:fromYDelta="50%"  
            android:toYDelta="100%"  
            android:duration="3000"  
        />  
      
    </set>
    属性解释:

    duration: 动画运行时间,定义在多次时间(ms)内完成动画

    startOffset: 延迟一定时间后运行动画

    fromXDelta: X轴方向开始位置,可以是%,也可以是具体的像素 具体见图

    toXDelta:   X轴方向结束位置,可以是%,也可以是具体的像素

    fromYDelta: Y轴方向开始位置,可以是%,也可以是具体的像素

    toYDelta:    Y轴方向结束位置,可以是%,也可以是具体的像素

    fromAlpha: 开始透明度

    toAlpha: 结束透明度

    pivotX: 锚点x坐标

    pivotY: 锚点y坐标


    3translate动画实例

    示意图:





    定义一个向上退出的动画(从位置移动位置3)和从下面进入(从位置1移动位置2)的动画定义文件如下:

    注意xml写法跟上面不一样,单独的translate标签,没有套在set里

    out_to_up.xml (从屏幕上面退出)

    <?xml version="1.0" encoding="utf-8"?>
    
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
    
        android:interpolator="@android:anim/accelerate_interpolator"
    
        android:fromYDelta="0%p"
    
        android:toYDelta="-100%p"
    
        android:duration="1000">
    
    </translate>
    in_from_down.xml (从屏幕下面进入)
    <?xml version="1.0" encoding="utf-8"?>
    
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
    
        android:interpolator="@android:anim/accelerate_interpolator"
    
        android:fromYDelta="100%p"
    
        android:toYDelta="0%p"
    
        android:duration="1000">
    
    </translate>
    上面动画可以用在activity切换上。


    4复合动画

    可以再xml文件中定义多个Animation,这样多个Animation可以一起运行,例如:

    <?xml version="1.0" encoding="utf-8"?>  
    <set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/accelerate_interpolator"  
        android:shareInterpolator="true"  
        >  
        <alpha  
            android:fromAlpha="1.0"  
            android:toAlpha="0.0"  
            android:startOffset="500"  
            android:duration="3000"  
                />  
        <rotate  
            android:fromDegrees="0"  
            android:toDegrees="400"  
            android:pivotX="50%"  
            android:pivotY="50%"  
            android:duration="3000"  
        />  
      
    </set> 
    各个动画效果可以用一个set标签叠加起来,达到更好的效果。


    5使用动画

    定义一个动画,关联一个xml文件,然后调用某界面元素的StartAnimation函数

    var in_animation = AnimationUtils.LoadAnimation(this, Resource.Animation.zoom_in);
    object.StartAnimation(in_animation);

    展开全文
  • xamarin 安卓开发通用Adapter

    千次阅读 2015-04-18 11:36:21
    我们在安卓开发过程中,ListView进行数据绑定要通过Adapter,一般的做法是我们要新建一个ListViewActivity,再对应新建一个Adabper继承自BaseAdapter,并实现其中的一些方法,在GetView方法中查找控件并绑定数据。...


           我们在安卓开发过程中,ListView进行数据绑定要通过Adapter,一般的做法是我们要新建一个ListViewActivity,再对应新建一个Adabper继承自BaseAdapter,并实现其中的一些方法,在GetView方法中查找控件并绑定数据。ListView在安卓开发中非常常见,如果一个app有20个ListView,那么就需要20个Adapter。这样产生大量重复繁重的工作。因此产生了做一个通用Adapter的想法,避免创建多个Adapter文件,编写重复代码。


         今早看到慕课网有一篇视频 安卓打造万能适配器 介绍了java方式实现方法。因此我参照java的方式实现了使用xamarin C#打造的万能适配器。主要利用了C#的事件机制和泛型特性。代码如下:


      /// <summary>
        /// 通用适配器
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class CommonAdapter<T> : BaseAdapter<T>
        {
            //要绑定的数据
            List<T> items;
            //页面上下文
            Activity context;
            //ListViewItem的布局id
            int layoutId;
    
            public delegate View GetViewEvent(int position, View convertView, ViewGroup parent, T item, ViewHolder viewHolder);
            /// <summary>
            /// 加载item的View事件
            /// </summary>
            public event GetViewEvent OnGetView;
    
            public CommonAdapter(Activity context, int layoutId, List<T> items)
                : base()
            {
                this.context = context;
                this.layoutId = layoutId;
                this.items = items;
            }
    
            public override T this[int position]
            {
                get { return items[position]; }
    
            }
    
            public override int Count
            {
                get { return items.Count; }
            }
    
            public override long GetItemId(int position)
            {
                return position;
            }
    
            public override View GetView(int position, View convertView, ViewGroup parent)
            {
                var item = items[position];
                View view = convertView;
                ViewHolder viewHolder = ViewHolder.Get(context, convertView, parent, this.layoutId, position);
    
                if (this.OnGetView != null)
                    return this.OnGetView(position, convertView, parent, item, viewHolder);
                return view;
            }
    
    
        }
        /// <summary>
        /// 通用ViewHolder
        /// </summary>
        public class ViewHolder : Java.Lang.Object
        {
            private SparseArray<View> views;
            int position;
            View ConvertView;
    
            public ViewHolder(Activity context, ViewGroup parent, int layoutID, int position)
            {
                this.position = position;
                this.views = new SparseArray<View>();
                ConvertView = context.LayoutInflater.Inflate(layoutID, null);
                ConvertView.Tag = this;
                //comConvertView.SetTag(
            }
    
            //单例模式获取对象实例
            public static ViewHolder Get(Activity context, View convertView, ViewGroup parent, int layoutID, int position)
            {
                if (convertView == null)
                    return new ViewHolder(context, parent, layoutID, position);
                else
                {
                    ViewHolder holder = (ViewHolder)convertView.Tag;
                    holder.position = position;
                    return holder;
                }
    
            }
    
            public View GetConvertView()
            {
                return ConvertView;
            }
            /// <summary>
            /// 通过ViewID获取控件
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="viewId"></param>
            /// <returns></returns>
            public T GetView<T>(int viewId) where T : View
            {
                View view = views.Get(viewId);
                if (view == null)
                {
                    view = ConvertView.FindViewById<T>(viewId);
                    views.Put(viewId, view);
                }
    
                return (T)view;
            }
    
    
        }


    如何使用呢?首先创建通用Adapter的对象,传入必要参数。


                Vito.PhoneControl.Adapter.CommonAdapter<Models.MainButton> comAdapter =
                    new PhoneControl.Adapter.CommonAdapter<Models.MainButton>(this, Resource.Layout.MainBlandGridItem, items);


    实现通用Adapter里面注册的事件:


    comAdapter.OnGetView += comAdapter_OnGetView;


    //事件方法实现:

        View comAdapter_OnGetView(int position, View convertView, ViewGroup parent, Models.MainButton item, PhoneControl.Adapter.ViewHolder viewHolder)
            {

                //通过ViewHolder获取对象并赋值
                viewHolder.GetView<TextView>(Resource.Id.textViewModeName).Text = item.Text;
                var imageView = viewHolder.GetView<SquareImageView>(Resource.Id.SquareImageModelICOPath);
                imageView.SetImageResource(item.ImageID);
                return viewHolder.GetConvertView();
            }


    最后将通用Adapter对象赋值给ListView的Adapter属性:


      Listview.Adapter = comAdapter;


    这样我们不需要新建Adapter类就实现了对ListView的数据绑定,精简了大量代码。






     

    
    展开全文
  • 第一次接触Xamarin.Android开发起因截图代码 起因 前段时间母上大人经常在微信和QQ之间互相发送文件,大部分都只能从WPS或者OFFICE中转,十分麻烦。 截图 通过软件中“其他应用打开”或者“第三发应用打开” 接下来...
  • 有关WebApp的开发,大多数人都用了第三方框架,如Cordova等。我这里没有用到这类框架,而是新建了一个WebView嵌入Assets(本地资源)来完成这个App,由于第一个练习App希望对初学者有所帮助。 这是一个快递快速查询的...
  • amarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序,不须个别使用各平台的开发工具与程序语言,不只...
  • VS 2012 Xamarin 安卓 ios C#开发

    千次阅读 2016-02-26 18:26:24
     看到这句话,你就知道Xamarin是什么了,对于C#开发者,这样的标语还是会让你激动一下下的。  可能很多人知道Mono,类似于.net framework ,但是跨平台:Linux, Unix, OS x等等都支持,意味着可以在这些平台运行C#...
  • xamarin 安卓项目报错Invalid value ...公司居然通xamarin开发安卓应用简直是醉了,项目一直运行不起来报错“Invalid value ‘armeabi’ in $(AndroidSupportedAbis). This ABI is no longer supported. Please...
  • 在VS 2017中使用Xamarin开发Android程序时,出现程序在模拟器/真机上均出现的闪退现象,模拟器提示 [] has stopped. 可能的解决方法: 在 “项目属性 - Android选项” 中,取消勾选 “打包属...
  • xamarin开发安卓应用,c#写的客户端,php写的服务端,用get的方法传值json数据
  • http://blog.csdn.net/u012234115/article/details/35814209 以下是用修改布局文件的方法,其实还有用C#代码的方法。 打开AndroidManifest.xml文件,找到application节点 ...app...
  • 运用跨平台框架Xamarin, 基于VS2017进行的移动app开发,实现 蓝牙扫描、配对、连接,通信开发
  • C#-Xamarin的Android项目开发(一)——创建项目 原文:C#-Xamarin的Android项目开发(一)——创建项目创建项目 使用Xamarin开发安卓项目...另外用Xamarin开发安卓项目,还需要使用Intel的CPU,并且得是...
  • C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码 原文:C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码前言 系列目录 C#使用Xamarin开发...
  • 前言系列目录C#使用Xamarin开发可移植移动应用目录源码地址:https://github.com/l2999019/DemoApp可以Star一下,随意 - -说点什么..嗯,前面讲了那么多,是时候生成一个APK在真机上玩玩了.今天的学习内容?也只讲一个,...
  • listview的翻页用到了几个知识点,1数据的填充,2翻页图片的加载,3页码的计算,实际效果如下图:axml文件有两个,一个是主界面Main.axml,另一个是显示“加载中。。。。”这个layout1.axmlMain.axml代码如下:&...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 196
精华内容 78
关键字:

xamarin开发安卓