Swift 基础语法

先来一个“Hello world”压压惊println("Hello world")//打印输出语句用println,此函数会自动换行1.变量和常量:var i = 1//变量 let A = 1//常量Swift语言t提供了简化变量和常量的定义方式,可以快速、简短的定义一个变量和常量。当然我们也可以为变量指定类型:var i : Int字符串连接:var i = 1 var s = "Hello swift" println("\(i)\(s),welcome")//变量用“\()”包含2.元组(Tuple)    元组,常用于函数多返回值,元组用逗号间隔数据,圆括号包含起来,有序数据组合。元组里的数据可以是不同类型的数据。var t = ("hello", 123) 访问语法格式:元组名.index println(t.0) //输出为:"hello" 为元组里每个数据添加一个key: var t2 = (name : "bing", old : 18) 访问语法格式:元组名.key println(t2.name)//输出为:"bing"3.字典(Dictionary)        字典的元组是由一对键和值组成,用逗号分隔,方括号包含,键和值可以是任何元素。var d : Dictionary = [1 : "one", "two" : 2, 3.0 : "three", "four" : 4]我们也可以定义字典键和值的类型:var d : Dictionary<Int,String> = [0 : "a", 1 : "b"]取值:    通过key去取value的值var d : Dictionary<Int,String> = [0 : "a", 1 : "b"] println(d[0])修改:var d : Dictionary<Int,String> = [0 : "a", 1 : "b"] //两种方式 d.updateValue("aa", forKey: 0) d[1] = "bb" println(d[0])//输出为:Optional("aa") println(d[1])//输出为:Optional("bb")删除:var d : Dictionary<Int,String> = [0 : "a", 1 : "b"] //两种方式 d.removeValueForKey(1) //d[1] = nil println(d)//输出为:[0: a]    遍历://遍历键和值 for (k, v) in d {     println("key:\(k),value:\(v)") } //遍历键 for k in d.keys {     println("key:\(k)") } //遍历值 for v in d.values {     println("value:\(v)") }4.数组(Array)    定义:var a : Array<Int> = [1,2,3] var b : [Int] = [1,3,4] //定义空数组 var a : Array<Int> = [] var b : [Int] = []访问:println(a[1])修改:a[0] = 2添加:a.insert(4, atIndex: 0)//在下标0的位置添加一个值为4元素删除:a.removeAtIndex(1)//删除数组第二个元素5. Swift中的if for while switchSwift中的if判断://不用括号包含 if i = 0 {     println("i = 0") }Swift中的for循环:for in 的第一种用法  字符串遍历var str = "ABC" //str 是字符串变量 即使字符集合1:str 是字符集合 ,temp 是临时变量(不需要定义)2:当程序执行for in 语句的时候会把字符集合中的字符赋给临时变量tempfor temp  in str { //    println("temp=\(temp)") }for in 的第二种用法 遍历序列1:1...5 表示 1到5的序列,即1-5的集合2:temp 是临时变量3:执行for in 语句的是后 把1-5的集合中对应的值,赋给临时变量 tempfor  temp  in 1...5{ //    println(temp) }Swift中的while循环:var i = 0 while i < 100 {     i++     println(i) }switch:    swift的switch支持一条case语句匹配多个值var i = 2 switch i { case 1:     println("1") case 2:     println("2") case 3,4:     println("3,4") case 3...10:     println("3,4") default:     break }6.Swift的函数(Function)//此函数需要传入一个String类型的参数 func sayHello(str:String){     println(str) } sayHello("Hello")//调用sayHello函数 //此函数需要传入两个参数,类型分别为String,Int func sayHello(str:String, i:Int){     println(str) } sayHello("Hello", 1)//调用sayHello函数 //此函数的返回值为Int func getNums() -> (Int){     return (2); } var a = getNums() //Swift的函数支持多返回值,//此函数有两个返回值,分别为Int,String func getNums() -> (Int,String){     return (2,"bing"); } var (a,b) = getNums()7.Swift的类(Class)class C{          func sayHello(){         println("Hello Swift")     } } var c = C()//实例化类 c.sayHello()

iOS 2015-05-22
PhpStorm配置SVN

1.配置Svn账户在顶部菜单里找到VCS点击Repositorys右边的+号并且在Repository URL处输入svn地址,然后点击ok:2. 检出代码双击刚才添加的SVN目录,在弹出的窗口中输入SVN用户名和密码,登录成功后点击右下方‘checkout’按钮:然后选择储存SVN代码的目录,点击右下方‘ok’按钮:继续点击‘ok’按钮,点击‘ok’按钮然后就静静等待代码下载到本地吧!下载完成会弹窗提示询问是否打开此项目:点击'New Window'或者'This Window':3.配置项目SVN此时项目已经检出到了本地,但是却找不到更新(update)和提交(commit),这时我们再去设置一下SVN:打开preference,选择Version Control:添加项目到Version Control:最后,右键点击项目,svn菜单就粗来啦!

PHP 2015-05-18
Android Studio 实用技巧

1.手动代码提示contorl+option+space如需修改,打开keymap设置,搜索:“Class Name Completion”,如图:2.查找快捷键冲突打开keymap设置,点击垃圾桶左边的搜索按钮,在First Stroke里输入你要查找的快捷键,点击回车就会显示这个快捷键(组合)与其相对应功能的列表,如图:

Android 2015-05-17
Sae URL重写(rewrite)

在代码根目录的config.yaml下加入下面代码:1.伪静态传参:    例如 将用户的访问的 aaa/bbb/ccc.html 路径 改写成 index.php?x=aaa&y=bbb&z=ccc- rewrite: if (!is_file() && !is_dir() && path~"(.*)/(.*)/(.*)\.html") goto "index.php?x=$1&y=$2&z=$3"2.将子文件夹设置为入口文件夹:   例如 将所有的请求全部rewrite到webroot/文件夹下 不允许访问webroot/文件夹外的文件- rewrite:if (path ~ "^(?!webroot/)(.*)") goto "webroot/$1?%{QUERY_STRING}"3.为子文件夹绑定一个域名: 例如 为子文件夹domain/绑定域名www.b.com- rewrite:if (in_header["host"] ~ "www.b.com" && path ~ "^(?!domain/)(.*)") goto "domain/$1?%{QUERY_STRING}"4.域名转跳: 例如 将a.com转跳到www.a.com - rewrite:if (in_header["host"] ~"^a.com"   && path ~ "(.*)") goto "http://www.a.com$1?%{QUERY_STRING}"5.隐藏index: 例如 将将用户的访问的 a.com/index/posts 路径 改写成a.com/posts- rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"如果使用的是CI框架,找到CI项目目录下得/application/config.php 将index_page设为空:$config['index_page'] = '';

PHP 2015-05-16
全屏滚动插件FullPage的使用

简介如今我们经常能见到全屏网站,尤其是国外网站。这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次。比如 iPhone 5C 的介绍页面(查看),QQ浏览器的官网站。如果你也希望你的网站能设计成全屏的,显得更上档次,你可以试试 fullPage.js。fullPage.js 是一个基于 jQuery 的插件,它能够很方便、很轻松的制作出全屏网站,主要功能有:支持鼠标滚动支持前进后退和键盘控制多个回调函数支持手机、平板触摸事件支持 CSS3 动画支持窗口缩放窗口缩放时自动调整可设置滚动宽度、背景颜色、滚动速度、循环选项、回调、文本对齐方式等等    fullPage.js是开源的JQuery插件库,GitHub 地址:https://github.com/alvarotrigo/fullPage.js兼容性jQuery 兼容兼容 jQuery 1.7+。浏览器兼容IE8+ ✔Chrome ✔Firefox ✔Opera ✔Safari ✔使用方法1、引入文件<link rel="stylesheet" type="text/css" href="css/jquery.fullPage.css"/> <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="js/jquery.fullPage.min.js"></script>2、HTML<body> <div id="fullpage">     <div class="section active">         <h1>每一个section是一屏,这是第一屏</h1>         <p>^</p>     </div>     <div class="section">         <h1 class="a">每一个section是一屏,这是第二屏</h1>         <p>^</p>     </div>     <div class="section">         <h1 class="a">每一个section是一屏,这是第三屏</h1>         <p>^</p>     </div>     <div class="section">         <h1>每一个section是一屏,这是第四屏</h1>     </div> </div> </body>3、Css<style type="text/css">     body {          color: #FFFFFF;          text-align: center;      }     p {         font-size: 20px;         position: absolute;         bottom: 0px;         width: 100%;         text-align: center;         animation: top 3s infinite;         -webkit-animation: top 1s infinite; /*Safari and Chrome*/     }     h1 {         display: none;     }               .in {         display: block;         animation: in 3s;         -webkit-animation: in 3s; /*Safari and Chrome*/     }     @keyframes top {         0% {             bottom: 0         }         25% {             bottom: 300px         }         50% {             bottom: 0         }         75% {             bottom: 300px         }         100% {             bottom: 0px         }     }     @-webkit-keyframes top {         0% {             bottom: 0         }         90% {             bottom: 20px         }         100% {             bottom: 0px         }     }     /*进入页面文字移动的动画*/     @keyframes in {         from {             margin-left: -200px;         }         to {             margin-left: 0px;         }     }     @-webkit-keyframes in /*Safari and Chrome*/     {         from {             margin-left: -200px;         }         to {             margin-left: 0px;         }     } </style>4、JavaScript<script type="text/javascript">     $(function () {         $("#fullpage").fullpage({             //设置各个页面的颜色             sectionsColor: ['#1bbc9b', '#4BBFC3', '#7BAABE', '#f90'],             //设置循环滚动              continuousVertical: true,             //设置是否显示项目导航             navigation: true,             //页面初始化完成后的回调函数             afterRender: function () {                 $('h1').addClass('in');             },             //滚动到某一屏后的回调函数             afterLoad: function () {                 if (!$('h1').hasClass('in')) {                     $('h1').addClass('in')                 }             },             //离开某一屏时的回调函数             onLeave: function () {                 $('h1').removeClass('in')             }         });     }); </script>配置1、选项选项类型默认值说明verticalCentered字符串true内容是否垂直居中resize布尔值false字体是否随着窗口缩放而缩放slidesColor函数无设置背景颜色anchors数组无定义锚链接scrollingSpeed整数700滚动速度,单位为毫秒easing字符串easeInQuart滚动动画方式menu布尔值false绑定菜单,设定的相关属性与 anchors 的值对应后,菜单可以控制滚动navigation布尔值false是否显示项目导航navigationPosition字符串right项目导航的位置,可选 left 或 rightnavigationColor字符串#000项目导航的颜色navigationTooltips数组空项目导航的 tipslidesNavigation布尔值false是否显示左右滑块的项目导航slidesNavPosition字符串bottom左右滑块的项目导航的位置,可选 top 或 bottomcontrolArrowColor字符串#fff左右滑块的箭头的背景颜色loopBottom布尔值false滚动到最底部后是否滚回顶部loopTop布尔值false滚动到最顶部后是否滚底部loopHorizontal布尔值true左右滑块是否循环滑动autoScrolling布尔值true是否使用插件的滚动方式,如果选择 false,则会出现浏览器自带的滚动条scrollOverflow布尔值false内容超过满屏后是否显示滚动条css3布尔值false是否使用 CSS3 transforms 滚动paddingTop字符串0与顶部的距离paddingBottom字符串0与底部距离fixedElements字符串无normalScrollElements无keyboardScrolling布尔值true是否使用键盘方向键导航touchSensitivity整数5continuousVertical布尔值false是否循环滚动,与 loopTop 及 loopBottom 不兼容animateAnchor布尔值truenormalScrollElementTouchThreshold整数52、方法名称说明moveSectionUp()向上滚动moveSectionDown()向下滚动moveTo(section, slide)滚动到moveSlideRight()slide 向右滚动moveSlideLeft()slide 向左滚动setAutoScrolling()设置页面滚动方式,设置为 true 时自动滚动setAllowScrolling()添加或删除鼠标滚轮/触控板控制setKeyboardScrolling()添加或删除键盘方向键控制setScrollingSpeed()定义以毫秒为单位的滚动速度3、回调函数名称说明afterLoad滚动到某一屏后的回调函数,接收 anchorLink 和 index 两个参数,anchorLink 是锚链接的名称,index 是序号,从1开始计算onLeave滚动前的回调函数,接收 index、nextIndex 和 direction 3个参数:index 是离开的“页面”的序号,从1开始计算;nextIndex 是滚动到的“页面”的序号,从1开始计算;direction 判断往上滚动还是往下滚动,值是 up 或 down。afterRender页面结构生成后的回调函数,或者说页面初始化完成后的回调函数afterSlideLoad滚动到某一水平滑块后的回调函数,与 afterLoad 类似,接收 anchorLink、index、slideIndex、direction 4个参数onSlideLeave某一水平滑块滚动前的回调函数,与 onLeave 类似,接收 anchorLink、index、slideIndex、direction 4个参数文档来自:http://www.dowebok.com/77.html

HTML5 2015-05-16
MAC OS X 和 Windows下XAMPP 添加虚拟主机+ host重定向

如果你不想整天输入localhost来访问你的项目,不妨来试试添加虚拟主机,给你的目录绑定一个域名,实现多域名绑定访问。是不是很屌的样子。列如我们想把localhost/test改成通过 www.test.com  访问 1.修改host文件Mac OS X :打开Finder -》点击菜单栏的前往 -》点击前往文件夹 -》输入 "/private/etc/" ->点击前往 -》找到hosts文件并且打开Windows:打开C:/WINDOWS\system32\drivers\etc目录下的 hosts 文件在hosts文件最后一行添加:127.0.0.1 www.test.com2.配置虚拟机Mac OS X :打开 "XAMPP/xamppfiles/httpd.conf"Windows:打开xampp\apache\conf\httpd.conf文件    然后,Windows搜索 “Include conf/extra/httpd-vhosts.conf”,Mac OS X搜索 "Include etc/extra/httpd-vhosts.conf"确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。Mac os X :把这个:# Virtual hosts #Include etc/extra/httpd-vhosts.conf修改成这样:# Virtual hosts Include etc/extra/httpd-vhosts.confWindow也一样,去掉前面的#号注释符就可以了,其他不改动。3.添加虚拟机Mac OS X :打开 "XAMPP/xamppfiles/httpd.conf"<VirtualHost *:80>     DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/test"     ServerName www.test.com </VirtualHost>Windows:打开xampp\apache\conf\httpd.conf文件<VirtualHost *:80> DocumentRoot D:\xampp\htdocs\test  ServerName www.test.com </VirtualHost>好啦,搞完了!在浏览器输入www.test.com试试看有木有用吧!

PHP 2015-05-08
jquery实现点击某元素之外触发事件

  前端写脚本绑定某事件已经司空见惯了,突然有个需求需要点击某个元素之外触发一些动作呢?比如,写一个模拟的select下拉,一般都是点击下拉,弹出下拉选项,再点击下拉的某个选项,下拉收起。如果用户点击下拉,然后就不想点下拉选项了,这时用户点击这个下拉之外的任何东西,这个下拉都应该收起。  jq如何实现这个功能呢?其实也不难,大概思路就是,在document上面绑定一个事件,当用户触发document的事件时,判断一下目标元素是什么,然后再执行相应的操作就行了。CODE:<script>     $(function(){         $(document).bind("click",function(e){             //id为menu的是菜单,id为open的是打开菜单的按钮                         if($(e.target).closest("#menu").length == 0 && $(e.target).closest("#open").length == 0){             //点击id为menu之外且id不是不是open,则触发                 close();             }         })     })     function close(){         //close menu...     }     function open(){          //open menu...     } </script>closest() 方法定义和用法closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上。语法.closest(selector)参数描述selector字符串值,包含匹配元素的选择器表达式。如果给定表示 DOM 元素集合的 jQuery 对象,.closest() 方法允许我们检索 DOM 树中的这些元素以及它们的祖先元素,并用匹配元素构造新的 jQuery 对象。

HTML5 2015-05-06
解决SwipeBackLayout滑动返回时显示桌面而不是显示上一层的Bug

由于我们用SwipeBackLayout需要将App的Theme添加一个透明的属性,这就是导致出现Bug的源头。<application       android:icon="@drawable/icon"       android:label="@string/app_name"       android:theme="@style/AppTheme" >   </application>我们只需要单独将App的主界面设置成不透明就可以解决啦code:<activity       android:name=".MainActivity"       android:theme="@style/AppThemeNotTranslucent" >   </activity>style code:<!-- Application theme. -->   <style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">       <item name="android:windowIsTranslucent">true</item>   </style>      <!-- 单独为MainActivity设置不透明,解决SwipeBackLayout返回时显示桌面而不是上一层的Bug -->   <style name="AppThemeNotTranslucent" parent="android:Theme.Holo.Light.NoActionBar">       <item name="android:windowIsTranslucent">false</item>   </style>

Android 2015-03-30
解决Activity的LaunchMode为SingeTask和SingeInstance时,Act

aActivity为普通ActivitybActivity的 LaunchMode为SingeTask或者SingeInstanceaActivity通过Intent跳转到bActivity,并且传递一个数据。bActivity:Intent Intent = new Intent(); intent.setClass(this, MainActivity.class); intent.putExtra("item", 2); startActivity(intent);此时因为更改了aActivity的LaunchMode,所以接收不到Intent传递过来的值。我们需要在aActivity里重写onNewIntent()方法:aActivity:@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); }

Android 2015-03-30
Android ViewPager简单几行代码设置滑动动画

CODE:viewPager.setPageTransformer(false, new ViewPager.PageTransformer() {     @Override     public void transformPage(View page, float position) {      final float normalizedposition = Math.abs(Math.abs(position) - 1); //page.setAlpha(normalizedposition);//渐变透明 //渐变大小         //page.setScaleX(normalizedposition / 2 + 0.5f);         //page.setScaleY(normalizedposition / 2 + 0.5f); page.setRotationY(position * -30);//渐入渐出     } });

Android 2014-12-10
Javascript实用代码收集

Jquery each() 遍历:通过选择器来限定遍历子元素或包含的元素:$("#ID >div").each(function(){     alert($(this).attr("id"));  //打印子div的ID });四种Touch事件(用于移动端):touchstart: // 手指放到屏幕上的时候触发 touchmove: // 手指在屏幕上移动的时候触发 touchend: // 手指从屏幕上拿起的时候触发 touchcancel: // 系统取消touch事件的时候触发。至于系统什么时候会取消,不详。。获取触摸(用法:event.touches[0].clientX):client / clientY:// 触摸点相对于浏览器窗口viewport的位置 pageX / pageY:// 触摸点相对于页面的位置 screenX /screenY:// 触摸点相对于屏幕的位置 identifier:// touch对象的unique ID获取宽高:浏览器窗口宽:window.innerWidth;浏览器窗口高:window.innerHeight;获取宽高:添加事件:document.onmousedown=function(e){};//document可以替换成其他html标签对象

HTML5 2014-09-15
Android 判断网络是否可用

1.在AndroidManifest.xml里面添加两个权限没有权限会报错    <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>2.判断网络函数: public static boolean isNetworkConnected(Context context) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE); if (manager == null) { return false; } NetworkInfo networkinfo = manager.getActiveNetworkInfo(); if (networkinfo == null || !networkinfo.isAvailable()) { return false; } return true; }

Android 2014-08-03
Android Activity跳转动画

1.在Intent后面设置使用overridePendingTransition(int enterAnim, intexitAnim)局限性:只能实现进入另一个activity时的动画,当另一个activity退出时,还是使用的系统默认动画。Intent intent = new Intent(); intent.setClass(MainActivity.this, er.class); startActivity(intent); //第一个参数是心Activity进入的动画,第二是参数是当前Activity退出的动画 overridePendingTransition(R.anim.abc_slide_in_top, R.anim.abc_slide_out_bottom);2.定义Theme和style样实下面这个可以设置所有Activity的进入跳转动画和退出跳转动画。在AndroidManifest.xml里的application标签中定义:android:theme="@style/ThemeActivity"在style.xml里添加下面代码:<style name="ThemeActivity" mce_bogus="1" parent="AppBaseTheme">     <item name="android:windowAnimationStyle">@style/AnimationActivity</item>     <item name="android:windowNoTitle">false</item> </style> <style name="AnimationActivity" mce_bogus="1" parent="@android:style/Animation.Activity">     <item name="android:<span style="color:#ff0000;">activityOpenEnterAnimation</span>">@anim/anim_enter</item>     <item name="android:<span style="color:#ff0000;">activityOpenExitAnimation</span>">@anim/anim_exit</item>     <item name="android:<span style="color:#ff0000;">activityCloseEnterAnimation</span>">@anim/back_enter</item>     <item name="android:<span style="color:#ff0000;">activityCloseExitAnimation</span>">@anim/back_exit</item> </style>activityOpenEnterAnimation:新Activity进入时的动画。activityOpenExitAnimation:当前Activity退出的动画。activityCloseEnterAnimation:返回时前一个Activity的进入动画。activityCloseExitAnimation:返回是当前Activity的退出动画。四个动画文件如下:在res下新建anim文件夹,新建Android XML文件anim_enter.xml:<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"     android:interpolator="@android:anim/decelerate_interpolator" >     <scale         android:duration="@android:integer/config_mediumAnimTime"         android:fromXScale="0.0"         android:fromYScale="0.0"         android:pivotX="69.99999%"         android:pivotY="100.0%"         android:toXScale="1.0"         android:toYScale="1.0" />     <alpha         android:duration="@android:integer/config_mediumAnimTime"         android:fromAlpha="0.0"         android:toAlpha="1.0" /> </set> anim_exit.xml:<?xml version="1.0" encoding="UTF-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"     android:interpolator="@android:anim/accelerate_interpolator" >     <scale         android:duration="@android:integer/config_mediumAnimTime"         android:fromXScale="1.0"         android:fromYScale="1.0"         android:pivotX="69.99999%"         android:pivotY="100.0%"         android:toXScale="0.0"         android:toYScale="0.0" />     <alpha         android:duration="@android:integer/config_mediumAnimTime"         android:fromAlpha="1.0"         android:toAlpha="0.0" /> </set>back_enter.xml:<?xml version="1.0" encoding="UTF-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"     android:interpolator="@android:anim/decelerate_interpolator" >     <scale         android:duration="@android:integer/config_mediumAnimTime"         android:fromXScale="1.5"         android:fromYScale="1.5"         android:pivotX="50.0%"         android:pivotY="50.0%"         android:toXScale="1.0"         android:toYScale="1.0" />     <alpha         android:duration="@android:integer/config_mediumAnimTime"         android:fromAlpha="0.4"         android:toAlpha="1.0" /> </set>back_exit.xml:<?xml version="1.0" encoding="UTF-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"     android:interpolator="@android:anim/decelerate_interpolator" >     <scale         android:duration="@android:integer/config_mediumAnimTime"         android:fromXScale="1.0"         android:fromYScale="1.0"         android:pivotX="50.0%"         android:pivotY="50.0%"         android:toXScale="0.4"         android:toYScale="0.4" />     <alpha         android:duration="@android:integer/config_mediumAnimTime"         android:fromAlpha="1.0"         android:toAlpha="0.0" /> </set>

Android 2014-08-03
Android Toast自定义

1.Toast的默认效果Toast.makeText(getApplicationContext(), "这里输入你想弹出的提示文字", Toast.LENGTH_SHORT).show();Toast.LENGTH_SHORT / Toast.LENGTH_LONG:这是显示时长,Toast.LENGTH_SHORT(短),Toast.LENGTH_LONG(长)。2.定义Toast的显示位置Toast toast = Toast.makeText(getApplicationContext(), "自定义位置", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();setGravity:设置显示位置。3.带图片的ToastToast toast = Toast.makeText(getApplicationContext(), "带图片",Toast.LENGTH_SHORT);inearLayout layout = (LinearLayout) toast.getView(); ImageView imgView = new ImageView(getApplicationContext()); imgView.setImageResource(R.drawable.ic_launcher);//设置图片 layout.addView(imgView, 0); toast.show();4.Toast的自定义java代码:LayoutInflater inflater = getLayoutInflater(); View view = inflater.inflate(R.layout.toast, (ViewGroup) findViewById(R.id.toast)); TextView text = (TextView) view.findViewById(R.id.textView1); text.setText("自定义Toast"); toast = new Toast(getApplicationContext()); toast.setDuration(Toast.LENGTH_LONG); toast.setView(view); toast.show();toast.xml代码:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/toast"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:background="@drawable/title2" >     <ImageView         android:id="@+id/imageView1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_centerHorizontal="true"         android:src="@drawable/ic_launcher" />     <TextView         android:id="@+id/textView1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_below="@+id/imageView1"         android:layout_centerHorizontal="true"         android:layout_centerVertical="true"         android:padding="10dp"         android:text="TextView" /> </RelativeLayout>

Android 2014-07-23
Android自定义Spinner

1.my_spinner.xml,注意这里的CheckedTextView id必须是@android:id/text1 <?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@android:id/text1"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:background="@drawable/spinnercontent_selector"     android:ellipsize="marquee"     android:gravity="center_vertical"     android:singleLine="true"     android:textSize="18dp"     android:textColor="#333333"/>2.定义spinner_item.xml,这个是下拉列表的item样式 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@drawable/spinnercontent_selector"     android:padding="15dp" >     <TextView         android:id="@+id/spinner_item_label"         android:layout_width="wrap_content"         android:layout_height="30dp"         android:layout_alignParentLeft="true"         android:layout_centerVertical="true"         android:text="12"         android:textColor="#333333"         android:textSize="18dp" />     <ImageView         android:id="@+id/icon"         android:layout_width="20dp"         android:layout_height="20dp"         android:layout_alignParentRight="true"         android:layout_centerVertical="true"         android:src="@drawable/spinner_select"         android:visibility="visible" /> </RelativeLayout>3.需要重写ArrayAdapter的getDropDownView(int position, View convertView, ViewGroup parent)方法。 // 初始化控件 kdNameSpinner = (Spinner) findViewById(R.id.spinnerKuaidi); // 建立数据源 String[] mItems = getResources().getStringArray(R.array.spinnername); // 建立Adapter并且绑定数据源 // 重写ArrayAdapter的getDropDownView()方法 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_spinner, mItems) { @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getLayoutInflater().inflate( R.layout.spinner_item_layout, parent, false); } TextView label = (TextView) convertView .findViewById(R.id.spinner_item_label); label.setText(getItem(position)); ImageView icon = (ImageView) convertView .findViewById(R.id.icon); icon.setVisibility(kdNameSpinner.getSelectedItemPosition() == position ? View.VISIBLE : View.INVISIBLE); return convertView; } }; // 绑定 Adapter到控件 kdNameSpinner.setAdapter(adapter);

Android 2014-07-17