摘要: HttpModule的认识HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。1、asp.net的HTTP请求阅读全文
posted @ 2012-02-10 23:48 Bluer 阅读(2) 评论(0) 编辑
摘要: C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常。这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便。其实解决这个问题有两种方法:一,是通过设...阅读全文
posted @ 2011-12-30 15:26 Bluer 阅读(448) 评论(0) 编辑
Dialogs
对话框通常都是出现在当前活动的前面,当当前活动弹出对话框后,
当前活动将失去焦点,而对话框将完成与用户交互的任务。对话框通常拿来当通知使用,临时中断用户
当前操作完成一个与当前活动直接相关的小工作,比如登录成功提示框及进度条。
Dialog 类是创建对话框的基类,然而,通常我们并不实例化一个Dialog,取而代之,我们使用如下的
子类:
AlertDialog:
一个通常可以带0,1,2个按钮,还可以包含单选或复选的列表。推荐使用,
它通常足够满足用户界面的需要了。
ProgressDialog:
显示为一个进度轮或进度条,因为它是扩展了的AlertDialog,它也同样支持按钮。
DatePickerDialog:
提供用户选择日期的对话框。
TimePickerDialog:
提供用户选择时间的对话框。
显示一个对话框
对话框通常都作为一个活动的一部分而被创建、显示,
通常我们可以重写活动内置的“onCreateDialog(int)”回调方法来创建。当我们重写了这个
回调查方法后,Android系统将自动管理对话框的状态,并将它与当前的活动关联,
某个活动将拥有对话框。也因此,对话框会继承活动的某些属性,例如:当一个对话框打开,
点击“Menu"按钮将显示此活动的"Options menu",音量键也将被活动用来调整音频流。
注意:如果对话框不是通过"onCreateDialog"方法创建的,那么意味着它没有被关联到一个活动
此时,必须调用“setOwnerActivity(Activity)”方法将它关联到一个对话框。
调用“showDialog(int)”来显示一个对话框,传递的整数是一个唯一值,用来标识当前要显示的对话框。
对话框第一次被请求时创建,系统将调用活动的“onCreateDialog(int)”,在此活动中实例化一个Dialog,
“onCreateDialog(int)”,“showDialog(int)”两个方法传入的整数是一样的。
一个对话框在显示前,系统都将调用回调方法“onPrepareDialog(int,Dialog)”,所以,如果可以通过
重写此方法可以动态修改对话框。由于"onCreateDialog(int)"只在第一次被请求时创建,所以,
后面再显示时将保持不变。"onPrepareDialog(int,Dialog)"这里的整型参数也与创建、显示时的一样。
当需要用到多个对话框的时候,我们最好在“onCreateDialog(int)”及“onPrepareDialog(int,Dialog)”
方法里Switch,通过对话框的唯一值(创建时传入的整型参数)用来判断一个每个对话框是否创建。
如:
static final int DIALOG_PAUSED_ID=0;
static final int DIALOG_GAMEOVER_ID=1;
而在“onCreateDialog(int)”回调查方法里:
protected Dialog onCreateDialog(int id)
{
Dialog dilog;
switch(id)
{
case DIALOG_PAUSED_ID:
{
//do the work to define the pause dialog
BREAK;
}
case DIAOLG_GAMEOVER_ID:
{
//
BREAK;
}
default:
dialog=null;
}
return dialog;
}
显示一个对话框:showDialog(DIALOG_GAMEOVER_ID);
---------------------------------------------------------------

 

清除对话框

 

  当我们创建一个对话框并将它关联到一个活动后,活动将始终维护对话框的状态,如果确定活动不再需要对话框后,
  可以让对话框调用dismiss()来自行清除,更为高效的做法是调用活动的dismissDialog(int),传递的整型数据
  与创建时传入的一致。
  
  也许有时我们需要在对话框被清除时处理一些业务,此时我们实现接口:DialogInterface.OnDismissListener,
  这个接口只有一个方法:onDismiss(dialogInterface),此方法将在对话框被清除时调用。将接口的实现传递给
  setOnDismissListener()。
  一个对话框也可以被“取消”,如用户点出了“back”回退或点击“Cancel”按钮明确取消,此时并不会触发“onDismissListener”.
  此类事件可以通过下面的方法进行捕获:DialogInterface.OnCancelListener,并 setOnCancelListener();

 

 参考资料:http://developer.android.com/guide/topics/ui/dialogs.html

 

 

posted @ 2011-12-04 11:36 Bluer 阅读(259) 评论(0) 编辑
Menu 之 Context Menu
类似于PC机上的“右键”选项菜单,而在Android 中则在用户”长按“时显示,它可以在所有示图里出现,只是比较常见于“ListView"。
与options menu 类似,应用它也是三步走:
一、将Activity 改成 ListActivity,这里采用对列表示图进行学习,创建 Context Menu
 重写方法:onCreateContextMenu
例:
        @Override 

public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo)
        {
        //这里可以采用扩展Layout文件来添加菜单项
        menu.add("First");
        menu.add("Second");
        super.onCreateContextMenu(menu, v, menuInfo);
        }

 
二、与用户的交互,重写方法:onContextItemSelected
  @Override

        publicboolean  onContextItemSelected(MenuItem item)
        {
        String itemTitle="Your select context menu item is: "+(String)item.getTitle();
        Toast.makeText(getApplicationContext(), itemTitle,Toast.LENGTH_LONG)
            .show();
        
        return super.onContextItemSelected(item);
        }

三、将context menu 注册到View:
在onCreate方法里:registerForContextMenu(getListView());
我这里是给ListView添加的context menu;
当然还有给列表示图提供内容的方法:
       private void ShowListView()

 {

        
        String [] citys=new String[]{
                "BeiJing","ShangHai","GuangZhou","ShengZhen"
        };
        
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.menu_items,citys);
        
        setListAdapter(adapter);
        
        }

这样,我们的onCreate方法变成了:
   
@Override 

        publicvoid onCreate(Bundle savedInstanceState) 
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ShowListView();
        
           registerForContextMenu(getListView());
          }

四、资源布局文件夹:
main.xml:
   <?xml version="1.0" encoding="utf-8"?>

   <ListView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/list" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        
>    
    </ListView>

menu_items.xml
    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width
="match_parent"
        android:layout_height
="match_parent"
        android:id
="@+id/tv">
    </TextView>
posted @ 2011-12-04 01:12 Bluer 阅读(149) 评论(4) 编辑
Menu:一个管理菜单项的接口
Menus:“活动”中一重要的用户界面组成部分,它让开发者可以以自己熟习的方式去处理事件,应用Android框架,
我们可以轻松的在自己的应用程序中增加标准的菜单。
菜单分为三类:
Options Menu:三类菜单中最重要的,当用户点出“Menu"按钮时显示。面在3。0以后的版本中,也可以通用“Anction Bar”来显示。
Context Menu:类似于PC机中点击”右键“所弹出的菜单项,它一般注册在列表示图中。
Submenu:当点击菜单项时显示出的子菜单项。
(注:三类菜单其实都是MenuItem的集合)
Options Menu 的创建及应用
一、创建菜单集合项,可以通过两种方式
A:XML文件格式,在 res/menu/下新建一个menu资源文件
如:game_file.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
            <group android:id="@+id/group1" android:menuCategory="container" android:enabled="true" android:checkableBehavior="none" android:orderInCategory="0" android:visible="true">
            <item android:id="@+id/item1" android:title="first-item" android:menuCategory="container" android:checked="true" android:visible="true"></item>
            <item android:id="@+id/item2" android:title="second-item" android:menuCategory="container" android:checked="false" android:visible="true"></item>
            <item android:id="@+id/item3" android:title="third-item" android:menuCategory="container" android:checked="false" android:visible="true"></item>
            </group>
        </menu>
而在源代码中:
@Override
        public boolean onCreateOptionsMenu(Menu menu) 
        {              
            MenuInflater inflater = getMenuInflater();
            //将资源文件“转换”成菜单对象
            inflater.inflate(R.menu.game_file, menu);
            return super.onCreateOptionsMenu(menu);
        }
B:在JAVA创建的时候增加:
final private int menuMode =Menu.FIRST; 
        final private int menuExit =Menu.FIRST + 1;
            final private int menuFile=Menu.FIRST+2;

        @Override
        public boolean onCreateOptionsMenu(Menu menu) 
        {
            menu.add(0, menuMode, Menu.NONE, "Map Mode");
            menu.add(0, menuExit, Menu.NONE, "Back");
            menu.add(0,menuFile,Menu.NONE,"File Open");
            return super.onCreateOptionsMenu(menu);
        }
说明:public boolean onCreateOptionsMenu(Menu menu) 
当用户第一次打开应用程序时,将调用onCreateOptionsMenu进行菜单的创建。创建菜单当然是用于与用户交互的,所以呢。。。且有下一步:
二、当用户选择一个菜单项进行交互时,重写“onOptionsItemClick(MenuItem Item)”方法进行功能自定义:

   @Override

    public boolean onOptionsItemSelected(MenuItem item)
    {
        int fId=item.getItemId();//得到唯一ID
        switch(fId)
        {
            case menuMode:
            {
                Toast.makeText(getApplicationContext(),"MapMode",Toast.LENGTH_LONG)
                    .show();
                break;
            }
            case menuExit:
            { 
                Toast.makeText(getApplicationContext(),"Back",Toast.LENGTH_LONG)
                .show();
                break;
            }
            case menuFile:
            {
                Toast.makeText(getApplicationContext(), "Open File",Toast.LENGTH_SHORT)
                    .show();
                break;
            }
            case R.id.item2:
            {
                String tempTitle=(String) item.getTitle();

                Toast.makeText(getApplicationContext(), tempTitle,Toast.LENGTH_SHORT)
                    .show();
                break;
            }
            default:
            {
                Toast.makeText(getApplicationContext(),"NONE",Toast.LENGTH_LONG)
                .show();
                break;
            }
        }
        return super.onOptionsItemSelected(item);
    }

三、扩展,3.0后,Android都是在用户第一次使用应用程序的时候就创建菜单,而不像以前是在用户第一次使用菜单时创建,有时,根据实际需要,在某些

情况下动态增加菜单: onPrepareOptionsMenu()
如:
@Override
    public boolean onPrepareOptionsMenu (Menu menu)
    {
        menu.add(0,menuMode,Menu.NONE,"MenuMode");
        return super.onPrepareOptionsMenu(menu);
    }
要注意的是。在每次用户打开菜单时,都将执行onPrepareOptionsMenu,所以,在动态增加的时候得判断是否已添加。

 

 参考资源:http://developer.android.com/guide/topics/ui/menus.html

 

 

posted @ 2011-12-03 00:07 Bluer 阅读(171) 评论(0) 编辑

 

属性position,指定元素的定位方式,讲解三个值:static,relative,absolute;

定位方式选定后,就通过如下四个偏移属性来指定它所定位到的位置:top,left,rigth,bottom;
所需具备的认识:默认情况下,如果不指定定位方式,系统将默认为static值;文档流:就是HTML标签集;

对于static:可以这么理解:把html页面看作一个文档流,源代码中各个标签的先后位置就是它们所对应的对象的呈现次序,所有
取值为static的对象都按照你所编写的html标签的顺序依次呈现,我们可以认为这就是一个默认的文档流:所有标签的position都
采用默认值:static,所形成的文档流。

对于absolute这种绝对定位方式,指定此属性值的元素的四个偏移属性是相对于窗口的,而且这个元素也将从默认的文档流中脱离
出来,与默认的文档流形成一种并列关系(可以视它为用户自定义的文档流),它在默认文档流中的位置也可以被后面的元素占用
,当然,此元素也可能会覆盖前面某些元素;


对于relative:这种相对定位,指定此属性值的元素还保留在默认的文档流中,也就是说,它同样占有在默认文档流中的固定位置,
后面的对象不会侵占或覆盖它,而此元素真实出现的位置将会相对于其在默认文档流中的位置发生偏移,偏移量将根据四个偏移属
性指定的值而定;

属性z-index(Z轴):指定元素的重叠次序,也以认为是自定义文档流间以及与默认文档流间的重叠关系;大值元素覆盖小值元素;

本属性生效条件是:元素要是飘动的:正确的指定position属性,将四大偏移属性的值指定得合理让元素在布局上有交叉有重叠!

 

  (注:加下划线的语句纯属个人见解,自己的一种理解方式,如有不当,请多见谅)

posted @ 2009-04-06 15:58 Bluer 阅读(612) 评论(2) 编辑
摘要: 呵呵,真的,看了几天Profile 相关的东西了,可是还是不明白Profile 怎么样来进行验证,是不是得结合其它的方法来一起进行,这里我贴了一个实例出来(Profile 与Form 验证)但是,这个实例还是有些问题的,不能正确输出我想要输出的信息,,不过,我也搞不定它,不知道哪里错了,还希望朋友们帮帮忙,在这里先谢谢你们了,当然,希望各位能发表下自己对Profile 的认识,最好能有个更好的应用...阅读全文
posted @ 2008-09-29 12:02 Bluer 阅读(76) 评论(2) 编辑
摘要: 如果你要在这里知道什么叫事件,什么叫委托,那我就要说不好意思了,因为,我不打算在这里阐述,也阐述不好!所以,只能谈谈自己个人对他们的理解,起个抛砖引玉的作用,希望能得到大家的高见! 委托也其实就是个指针,但是,他严格定义了它所指向方法的定义(如参数类型,个数,返回值等),当实例化委托时,只能将符合它所要求的方法做为参数传递给它; [代码]之后引用委托实例时,将直接调用用来实例化此委托的方法!这也达...阅读全文
posted @ 2008-09-06 17:29 Bluer 阅读(222) 评论(0) 编辑
摘要: 在朋友的强烈建议下,我用vs2005+sql2000做了个小东西,好简单的一个新闻发布系统,就是些新闻的添加,删除,编辑以及用户的登录. 以前觉得做这个东西一点问题也没有,都是些最基本的操作,所以,一直都没有做,直到昨天;虽然也算蛮顺利地完成,但是也暴露出了一些细节上的问题,有一些自己稍费神也就地搞定了,不过,还有几个就^^^^^,还希望能得到朋友们的帮助,在这里先谢谢大家了; 问题一:数据绑定时...阅读全文
posted @ 2007-11-20 20:06 Bluer 阅读(184) 评论(1) 编辑