SpringMVC的URL请求到Action的映射规则

  categories:java资料  author:

1.URL路径映射

1.1.对一个action配置多个URL映射:

我们把上一篇中的HelloWorldController的index() action方法的@RequestMapping更改为@RequestMapping(value={“/index”, “/hello”}, method = {RequestMethod.GET}),这表示对该action配置了/index和/hello两个映射。运行测试,如下:

1

可以看到/helloworld/hello请求也成功匹配。

1.2.URL请求参数映射:

这在查询的时候经常用到,比如我们根据id或编号来获取某一条记录。

在HelloWorldController添加一个getDetail的action,代码如下:

@RequestMapping(value="/detail/{id}", method = {RequestMethod.GET})
public ModelAndView getDetail(@PathVariable(value="id") Integer id){
    
    ModelAndView modelAndView = new ModelAndView();  
    modelAndView.addObject("id", id);  
    modelAndView.setViewName("detail");  
    return modelAndView;
}

其中value=”/detail/{id}”,中的{id}为占位符表示可以映射请求为/detail/xxxx 的URL如:/detail/123等。

方法的参数@PathVariable(value=”id”) Integer id 用于将URL中占位符所对应变量映射到参数id上,@PathVariable(value=”id”) 中value的值要和占位符/{id}大括号中的值一致。

在views中添加detail.jsp视图,用于将获取到的id值展示出来。视图内容如下:… 阅读全文

Android Studio快捷健无效和如何设置代码自动提示

  categories:android资料  author:

参考:http://blog.csdn.net/hyr83960944/article/details/39961737

android studio 快捷健设置,原文:http://blog.csdn.net/hyr83960944/article/details/39961737

在使用android studio开发中, 不小心进行了下面的设置, 导致快捷键不好用了,

曾经考虑重新安装 android studio来解决, 国内android 工具下载地址如下:

http://tools.android-studio.org/

http://pan.baidu.com/share/home?uk=67915989&view=share#category/type=0

上面两个地址都是比较全面的, 并且在国内比较全面(两个地址应该是同一套)

后来, 经过查找, as快捷键设置,以及相关文章后, 解决了这个问题,不用重新安装。

在android studio中选择文件菜单后, 选择

(省电模式)

选择图中模式后, 很多快捷键不好用

在用Eclipse时候,你可以进行设置,设置成不管你输入任何字母,都能进行代码的提示,在Android Studio中也可以

设置,而且比Eclipse设置来的简单。当然如果你觉得代码自动提示会降低你的代码水平,你也可以不设置,在写代码

过程中,如果一时忘记了,你就可以用代码提示的快捷键。android studio代码提示的快捷键是什么呢?看这篇文章:

接下来说如何设置代码自动提示,如图:

图上内容比较多,我直接按区域划分成6块区域来说吧:

区域1:这个选项是关于提示的时候如何进行匹配,即按照什么条件来进行提示内容的搜索。

All:选择这个的话,意思就是要和你输入的字符进行全匹配,能全匹配起来的字符才会显示在提示列表中,如下图,其实就相当于精确搜索:

None:选择这项的话,意思是进行模糊匹配,我直接上图吧,大家看图就明白了:

First Letter:即是根据首字母进行匹配,不过这里面感觉还是有bug,选择First Letter时,匹配的结果和all类似,又比all少。这块个人感觉是Android

阅读全文

Android为按钮添加事件的三种方法

  categories:android资料  author:
来源:http://blog.csdn.net/xn4545945/article/details/7761008
  1. Android中为按钮添加事件一般有三种方法,这里总结一下,当然其实这完全是java基础内容。

页面布局文件如下:

<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
android:paddingBottom=”@dimen/activity_vertical_margin”
tools:context=”.MainActivity”>

<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/hello_world” android:id=”@+id/textView”/>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”测试http connection”
android:id=”@+id/bt_http_test_connection” android:layout_below=”@+id/textView” android:layout_alignParentLeft=”true”
android:layout_marginTop=”16dp”/>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”测试httpclient”
android:id=”@+id/button” android:layout_below=”@+id/bt_http_test_connection”
android:layout_alignLeft=”@+id/bt_http_test_connection” android:layout_marginTop=”19dp”/>

</RelativeLayout>

1、内部类:

  1. btn.setOnClickListener(new OnClickListener()
阅读全文

Android通知栏Notification全面学习

  categories:android资料  author:

来源:http://blog.csdn.net/vipzjyno1/article/details/25248021

在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。

下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知。它是位于顶层可以展开的通知列表。它会时不时的提醒你什么软件该更新了,什么人发你微信消息了等。

(网上看了下,全面介绍的文章不多,所以就萌生了写这篇的念头,随便当作回顾笔记。下面我就通过官方文档、源代码、书上的一些资料汇总下这一块的知识,并通过一个通知栏的汇总DEMO让大家更好的了解这个类的使用,内容有点多,可以根据需求看目录学习)。

Notificaiton状态通知栏:

功能作用

1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)
2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等)
3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)

思维导图结构

思维导图的大体结构(按照各个节点延伸拓展学习)

Notificaiton — service   — BroadcastReceiver  — Intent(flag、Action等属性应用) —  PendingIntent

感慨:

一个Notificaiton通知的拓展使用就要涉及与4大组建的配合,所以学好整体的知识体系。

联系:

1.由于service 是在后台运行,所以它意图做什么我们看不到,可以通过Notificaiton 来显示提醒(如音乐的后台播放)。

2.service服务和BroadcastReceiver广播相结合,在加上Notificaiton 显示(如程序的后台更新)。

3.Intent作为意图处理,和Notificaiton的点击时间紧密结合在了一起,并且与BroadcastReceiver和service的联系也紧密不可以分割。

(service 在后台之后通过BroadcastReceiver来通知Notificaiton 显示相关东西,在通过Intent完成用户的意图操作)

相关文档:Activity启动模式 及 Intent Flags 与 栈

阅读全文

深入理解Android中pendingIntent

  categories:资料  author:
来源:http://blog.csdn.net/yuzhiboyi/article/details/8484771
pendingIntent字面意义:等待的,未决定的Intent。
要得到一个pendingIntent对象,使用方法类的静态方法
getActivity(Context, int, Intent, int),
getBroadcast(Context, int, Intent, int),
getService(Context, int, Intent, int) 
分别对应着Intent的3个行为,跳转到一个activity组件、打开一个广播组件和打开一个服务组件。
参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。
pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。
Android的状态栏通知(Notification)

如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。

步骤:

1获取通知管理器NotificationManager,它也是一个系统服务

2建立通知Notification notification

阅读全文

Android开发优化-布局优化

  categories:android资料  author:
来源:http://www.cnblogs.com/purediy/p/3232996.html

优化布局层次结构

一个普遍的误解就是,使用基本的布局结构会产生高效的布局性能。然而每一个添加 到应用的控件和布局,都需要初始化,布局位置和绘制。比如,使用一个嵌套的LinearLayout会导致过深的布局层次结构。此外,嵌套多个使用 layout_weight属性的LinearLayout实例会花费更大的代价,因为每一个子布局都要测量两次。当某个布局被频繁渲染时,比如它在 ListView或GridView中使用,就显得尤为重要。

在这节课中,将学会使用Hierachy Viewer和Layoutopt工具对布局结构进行检测和优化。

检测你的布局

在Android SDK tools中包含一个叫做HierchyViewer工具,它可以在你运行应用时候帮助你分析你的布局性能。通过它你可以发现你的布局中性能比较差的那些地方。

HierchyViewer需要你选择一个已链接的设备或者模拟器中的一个运行的线程,显示出布局的树结构。每个块上的红绿灯代表它的测量,布局,以及绘图性能,帮助你找出潜在的问题。

比如,图1显示了一个用于ListView中的Item的布局。这个布局的左边显示了一幅图片,两个叠在一起的文字item放在右边。那些被重复加载的布局在优化时候显得有为重要。

图1. 一个ListView内item的概念设计

hierchyviewer 工具可以在<sdk>/tools/中找到。当打开给工具后,就会显示可用的设备列表一个这些设备中运行的部分。点击“Load View Hierchy”选项查看被选中部分的布局层次图。比如,图2显示了图1中布局结构图。

图2. 图1的布局层次结构图,使用内嵌的LinearLayout实例布局。

图3. 点击层次图中一个节点,显示它的运行时间

图2中,你可以看到一个3层的布局结构图,并且在布局text的items里面有一些问题。点击这些items显示进程中每个阶段所花费的时间。它显示的很清楚,哪些items在测试,布局中花费时间最长,哪些地方需要花费时间去优化。

使用该布局加载所有item所花费的时间如下:

  • Measure: 0.977ms
  • Layout: 0.167ms
  • Draw: 2.717ms

修改布局

因为上述布局性能较低的原因主要是由一个内嵌的LinearLayout所引 起,将该布局使用浅而广的扁平化结构代替深而窄的树形结构化设计,从而提高性能。在这些布局中,将RelativeLayout作为一个根节点,这样,你 将会看到该布局变为一个2层的结构,修改后的布局如下:

图4. 使用RelativeLayout的图1的布局。

修改后加载item所花费的时间:

  • Measure:
阅读全文

Android状态栏通知Notification、NotificationManager详解

  categories:android资料  author:

在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置?

首先,发送一个状态栏通知必须用到两个类:  NotificationManager 、 Notification。

NotificationManager :  是状态栏通知的管理类,负责发通知、清除通知等。

NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。

  1. NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。

下面是设置一个通知需要的基本参数:

  • An icon  (通知的图标)(大图标在低版本系统不工作,现在都是4.x以上了,问题不大)
  • A title and expanded message  (通知的标题和内容)
  • PendingIntent   (点击通知执行页面跳转)

可选的设置:

  • A ticker-text message (状态栏顶部提示消息)
  • An alert sound    (提示音)
  • A
阅读全文

Android开发优化-Adapter优化

  categories:android资料  author:
来源:http://www.cnblogs.com/purediy/p/3267913.html

ListView 作为Android开发中使用频率最高的一个控件,保证ListView的流畅运行,对用户体验的提高至关重要。Adapter是ListView和数据 源之间的中间人,当每条数据进入可见区时,Adapter 的 getView() 会被调用,返回代表具体数据的视图,在成百上千条数据触摸滚动时频繁调用,因此如何优化Adapter是提高ListView性能的关键。

1. 使用ViewHolder模式,重复利用convertView,减少频繁查找

在2009年 Google IO开发者大会中已做说明,看一下使用不同实现方式之间的差距:

Adapter 显示每条数据的 XML 布局文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
<LinearLayout
    android:orientation="horizontal">
    <ImageView android:id="@+id/icon"
        android:layout_width="48dip"
        android:layout_height="48dip" />
阅读全文

改变Android ProgressBar样式颜色

  categories:android资料  author:
来源:http://blog.csdn.net/dancelonely/article/details/11591221
先上两个效果图:

(进度条是 自定义图片

(进度条是 自定义颜色

一.修改背景为图片。

1.我自己制作了两张图片(如下图),并将它们放到工程的 /res/drawable 目录下。

(背景图片 prgs_bg.png)

(进度图片 prgs_progress.png)

2.同时在 /res/drawable 目录下新建一个 barbgimg.xml 文件,内容如下:

  1. <?xml version=“1.0” encoding=“UTF-8″?>
  2. <layer-list xmlns:android=“http://schemas.android.com/apk/res/android” >
  3. <!–  设置背景色图像资源  –>
  4. <
阅读全文

Android持续优化 – 提高流畅度

  categories:android资料  author:

来源:http://www.cnblogs.com/purediy/p/3492865.html

1. 这是官方给出的概念:Android流畅运行,需要运行60帧/秒, 则需要每帧的处理时间不超过16ms。

2. 每秒帧数,实际上就是指动画或视频每秒放映的画面数。因此“帧”的概念就是指“画面”,1幅画就叫做“1帧”,每秒帧数指的就是“每秒播放的画面数”。帧 数就是在1秒钟时间里传输的图片的量,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。

3. 一帧占用内存数

当画面的分辨率是1024×768,刷新率要达到60帧/秒时,那么显卡在一秒 钟内需要处理的像素量就达到了“1024×768×60=5713920”。那么一个“像素量”,相当与占用多少内存?我们用位图来代替粗略计算,把分辨 率是1024×768看成一张对应大小的位图,通过位图的大小来大概计算占用的内存大小。而位图的存储算法,在维基百科上有详细的介绍,详见下面的链接。

一张1024×768的16位(bit)位图文件大小 = 1024×768×16/8 = 1572864 B = 1536 KB = 1.5 MB。如果要求画面的刷新率达到60帧/秒,则每秒需要处理的数据量就达到1.5 * 60 = 90 MB,这个数据是相当大。

实际系统中会通过GPU显卡处理显示,减少CPU工作量,或者系统会缓存或局部刷新来降低处理量。没有研究过,也很想研究一下显示的流程。

二.Android流畅度的根本:解放UI主线程

1. 不要阻塞UI线程;

2. 不要在UI线程之外操作UI。

三.以ListView加载图片为例

阅读全文



快乐成长 每天进步一点点      京ICP备18032580号-1