【Android】7.8 MyDemos项目的结构和主界面相关代码
分类:C#、Android、VS2015;
创建日期:2016-02-17
一、简介
上一讲已经说过,系统升级为Win10后,重新创建了一个新的项目:MyDemos,并把前7章合并到了这个项目中,这次简单介绍一下合并后的项目结构以及主界面相关的代码。
二、项目结构
创建的MyDemos项目结构截图如下:
这些资源文件和活动文件的创建办法见前面章节的介绍,此处不再重复。
三、主界面相关的代码
1、修改Main.axml文件
将该文件改为下面的内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/heading1"
android:text="用C#和VS2015编写Android手机App"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:textSize="16dp"
android:textColor="#FFFF0000"
android:textStyle="bold"
android:padding="5dp"
android:gravity="center_horizontal" />
<TextView
android:id="@+id/heading2"
android:text="www.cnblogs.com/rainmj/"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:textSize="14dp"
android:textColor="#FF267F00"
android:textStyle="bold"
android:gravity="center_horizontal"
android:paddingBottom="5dp" />
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="#FF909090"
android:layout_marginBottom="5dp" />
<ExpandableListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/expandableListView1" />
</LinearLayout>
2、添加MyApplication.cs文件
在项目的根目录下添加该文件,然后将该文件改为下面的内容:
using System;
using Android.App;
using Android.Runtime;
using Com.Baidu.Mapapi;
namespace MyDemos
{
[Application]
public class MyApplication : Application
{
//必须提供此构造函数
public MyApplication(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
} public override void OnCreate()
{
base.OnCreate();
SDKInitializer.Initialize(ApplicationContext);
}
}
}
3、添加MyBroadcastReceiver.cs文件
在项目的根目录下添加该文件,然后将该文件改为下面的内容:
using Android.Content;
using Android.Widget;
using Com.Baidu.Mapapi;
using Android.Util; namespace MyDemos
{
[BroadcastReceiver]
public class MyBroadcastReceiver : BroadcastReceiver
{
private MainActivity mainActivity; //必须提供无参数的构造函数
public MyBroadcastReceiver() { } public MyBroadcastReceiver(MainActivity bdMapMain)
{
mainActivity = bdMapMain;
} public override void OnReceive(Context context, Intent intent)
{
string s = intent.Action;
TextView text = mainActivity.FindViewById<TextView>(Resource.Id.heading2);
switch (s)
{
case SDKInitializer.SdkBroadtcastActionStringPermissionCheckError:
text.Text= "Andoid SDK(v3.7.1)key 验证出错!";
break;
case SDKInitializer.SdkBroadtcastActionStringPermissionCheckOk:
Log.Debug("MainActivity", "百度Andoid SDK(v3.7.1)key 验证成功!");
break;
case SDKInitializer.SdkBroadcastActionStringNetworkError:
text.Text = "Andoid SDK(v3.7.1)key 验证失败:网络出错!";
break;
}
}
}
}
4、添加MyExpandableListAdapter.cs文件
在项目的根目录下添加该文件,然后将该文件改为下面的内容:
using System;
using System.Collections.Generic;
using Android.Content;
using Android.Views;
using Android.Widget;
using Android.Graphics; namespace MyDemos
{
public class Chapter
{
public string ChapterName { get; set; }
public ChItem[] ChapterItems { get; set; }
} public class ChItem
{
public Type type { get; set; }
public string Title { get; set; }
public string Desc { get; set; }
} public class MyExpandableListAdapter : BaseExpandableListAdapter
{
private readonly Context context;
private readonly IList<Chapter> chapter;
public MyExpandableListAdapter(Context context, IList<Chapter> chapter)
{
this.context = context;
this.chapter = chapter;
} public override int GroupCount
{
get { return chapter.Count; }
} public override bool HasStableIds
{
get{ return true; }
} public override Java.Lang.Object GetChild(int groupPosition, int childPosition)
{
return null;
} public override long GetChildId(int groupPosition, int childPosition)
{
return childPosition;
} public override int GetChildrenCount(int groupPosition)
{
var ch = chapter[groupPosition];
return ch.ChapterItems.Length;
} public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
var view = convertView;
if (view == null)
{
var inflater = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;
view = inflater.Inflate(Android.Resource.Layout.SimpleExpandableListItem2, null);
}
var ch = chapter[groupPosition];
var chItem = ch.ChapterItems[childPosition];
TextView textView = view.FindViewById<TextView>(Android.Resource.Id.Text1);
textView.Text = chItem.Title;
textView.SetTextColor(Color.Blue);
textView.TextSize = ;
textView = view.FindViewById<TextView>(Android.Resource.Id.Text2);
textView.Text = chItem.Desc;
textView.TextSize = ;
return view;
} public override Java.Lang.Object GetGroup(int groupPosition)
{
return null;
} public override long GetGroupId(int groupPosition)
{
return groupPosition;
} public override View GetGroupView(int groupPosition, bool isExpanded, View convertView, ViewGroup parent)
{
var view = convertView;
if (view == null)
{
var inflater = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;
view = inflater.Inflate(Android.Resource.Layout.SimpleExpandableListItem1, null);
}
var ch = chapter[groupPosition];
TextView textView = view.FindViewById<TextView>(Android.Resource.Id.Text1);
textView.Text = ch.ChapterName;
textView.TextSize = ;
return view;
} public override bool IsChildSelectable(int groupPosition, int childPosition)
{
return true;
}
}
}
5、修改MainActivity.cs文件
将该文件改为下面的内容:
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
using Com.Baidu.Mapapi.Model;
using Com.Baidu.Mapapi;
using MyDemos.SrcDemos; namespace MyDemos
{
[Activity(Label = "MyDemos--毛毛雨的博客乐园",
MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
private IList<Chapter> chItems;
private MyBroadcastReceiver myReceiver; //自定义的中心点位置经纬度,可以根据需要改为你自己感兴趣的任意经纬度
public static readonly LatLng MyLatLng = new LatLng(34.824635, 114.315745); protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); // 注册广播监听
IntentFilter intentFilter = new IntentFilter();
intentFilter.AddAction(SDKInitializer.SdkBroadtcastActionStringPermissionCheckOk);
intentFilter.AddAction(SDKInitializer.SdkBroadtcastActionStringPermissionCheckError);
intentFilter.AddAction(SDKInitializer.SdkBroadcastActionStringNetworkError);
myReceiver = new MyBroadcastReceiver(this);
RegisterReceiver(myReceiver, intentFilter); CreateChItems();
var adapter = new MyExpandableListAdapter(this, chItems);
var expandableListView1 = FindViewById<ExpandableListView>(Resource.Id.expandableListView1);
expandableListView1.SetAdapter(adapter);
expandableListView1.ChildClick += (sender, args) =>
{
var type = chItems[args.GroupPosition].ChapterItems[args.ChildPosition].type;
if (type != null)
{
StartActivity(new Intent(this, type));
}
};
} protected override void OnResume()
{
base.OnResume();
} protected override void OnDestroy()
{
base.OnDestroy();
// 取消广播监听
UnregisterReceiver(myReceiver);
} private void CreateChItems()
{
chItems = new List<Chapter>();
chItems.Add(new Chapter()
{
ChapterName = "第1章 开发环境安装和配置",
ChapterItems = new ChItem[]
{
new ChItem {type=null, Title="本章无示例", Desc = "" },
}
});
chItems.Add(new Chapter()
{
ChapterName = "第2章 Android应用程序的调试和部署",
ChapterItems = new ChItem[]
{
new ChItem { type=typeof(ch0201Main), Title="例2-1 Phoneword", Desc = "演示如何导航到另一个界面以及如何拨号" },
}
});
//后面章节的内容与前面类似,就不再全部列出了
……
}
}
}
OK,以后再添加后续章节的示例时,只需要在CreateChItems()方法中添加对应的代码即可,而其他内容则不需要做任何改变:
chItems.Add(new Chapter()
{
ChapterName = "……",
ChapterItems = new ChItem[]
{
……
};
});
下一讲接着介绍第8章的内容。
【Android】7.8 MyDemos项目的结构和主界面相关代码的更多相关文章
- Android ActionBar应用实战,高仿微信主界面的设计
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...
- Android study first ----------安卓项目目录结构及adb指令
#Android项目的目录结构 * Activity:应用被打开时显示的界面 * src:项目代码 * R.java:项目中所有资源文件的资源id * Android.jar:Android的jar包 ...
- Android Studio导入Eclipse项目和一些常见的问题
Android Studio版本 Eclipse项目工程:一个主工程,一个Emojicon依赖库. 有两种方式导入Eclipse工程: 1.兼容Eclipse 2.全新的Android Gradle ...
- Android studio导入eclipse项目且不改变目录结构
Android studio的安装与配置论坛当中已经有很多在此就不在细说了,现在开始说下如何在Android studio当中导入eclipse的项目且不改变其目录结构和配置,让使用eclipse的同 ...
- Android开发学习之路--Android Studio项目目录结构简介
既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图: 1.Android工程 manifests ...
- 【Android Studio安装部署系列】三、Android Studio项目目录结构
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下Android studio新建项目的目录结构. 常用项目结构类型 在Android Studio中,提供了以下几种项目结 ...
- (1)-Android学习笔记之:初识Android系统架构和项目结构
Android系统架构 Android程序结构 创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下 .gradle和.idea:这两个目录下放的都是And ...
- android第二天(项目的组成结构)
1:src文件夹分析: helloWorld----src(源码文件夹) MainActivity:主界面类----gen(自动生成的源码文件夹) R.java:对应res文件夹 下面又包含三个内部类 ...
- Android项目目录结构
JDK JDK是java语言的软件开发工具包,它包含了java的运行环境,工具集合,基础类库等内容 Android SDK 是谷歌提供的 Android 开发包,在开发Android 项目的时候 ...
随机推荐
- php之快速入门学习-17(PHP 命名空间)
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- angular中如何监控dom渲染完毕
刚刚看到群上一个人说,他们公司凡是用angular和jquery插件一起用的人,都被解雇了,没看到这句话之前我很惭愧的说我有这样用过,其实angular的生态系统那么完善,完全可以不用去操作任何的do ...
- 算法笔记_168:历届试题 矩阵翻硬币(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义: ...
- Fiddler 扩展编程——oSession相关方法
// 修改session中的显示样式 oSession["ui-color"] = "orange"; // 移除http头部中的MQB-X5-Refer ...
- mysqladmin: connect to server at 'localhost' failed
1:mysqladmin: connect to server at 'localhost' failed 2: 3: 4:
- atitit.提升开发效率---MDA 软件开发方式的革命(3)----自己主动化建表
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自己主动化建表 1. 建模在后自己主动建表 1 1. 传统上,须要首先建表,在业务编码.. 1 2. 模型驱动建表---很多其它 ...
- 【Oracle】性能优化
优化原则 1.在select语句中避免使用* 2.使用Truncate清空表 2.1语法 Truncate [table|cluster] shema.[table_name][cluster_nam ...
- 【Oracle】(savepoint)保存点的使用
作用 保存点可以回退到事务的一部分,我们在操作数据库的过程中可以对事务分隔为几个部分,在操作失误的时候就可以回滚到某个点即可. 实现步骤 我们现在新建一张表TMP003 )); 第一步:插入第一条记录 ...
- linux 系统文件的特殊权限
文件权限与归属 Linux系统中的一切都是文件,但每个文件的类型不尽相同,并且Linux系统会用不同的符号来加以区分,常见的包括有 -:普通文件,d:目录文件,l:链接文件,b:块设备文件,c:字符设 ...
- 面试题 Comparable、Comparator 比较
Comparable 用作默认的比较方式 Comparator 用作自定义的比较方式,当默认的比较方式不适用时或者没有提供默认的比较方式,使用Comparator就非常有用. 像Arrays和Coll ...