Android Notification.setLatestEventInfo弃用和Notification.Builder用法
(转载自:http://blog.csdn.net/sinat_28676875/article/details/50590602)
今天在学习小米便签的源码的时候,至于源码的地址,http://m.blog.csdn.net/article/details?id=50544248 ,里面有好多github的开源项目,打开项目,报错2处,一处就是便是找不到setLatestEventInfo()这个方法,我用的api6.0编译的,在这个api这个方法时被弃用的,采用Notification.Builder来代替,
原来的用法:1首先是拿到NotificationManager这个管理类实例,
mNotifiManager = (NotificationManager) mContext
.getSystemService(Context.NOTIFICATION_SERVICE);
2.创建Notification实例,第一个参数是传入通知的图片,第二个是传入通知的标题,这里采用的getString的方法,顺带一提,getString方法时通过参数tickerId来调用xml文件里的常量,一般这个值为R.String.xxx
Notification notification =new Notification(R.drawable.notification, mContext.getString(tickerId), System.currentTimeMillis())
3调用setLatestEvent(xx),里面有四个参数,分别是context,标题,内容,和pendingIntnet 4个参数
notification.setLatestEventInfo(mContext, mContext.getString(R.string.app_name), content,
pendingIntent);
4.d调用NotificationManager的notify(xx)方法,接收两个参数一个id,可用于取消通知的时候用,另一个是Notification的实例
新的:在APi6.0时方法2,和3步骤被弃用,用过Notification.Builder来创建,直接来看官方的提供代码例程吧`
Notification noti = new Notification.Builder(mContext)
.setContentTitle(“New mail from ” + sender.toString())
.setContentText(subject)
.setSmallIcon(R.drawable.new_mail)
.setLargeIcon(aBitmap)
.build();
他是通过穿件一个Notification.Builder对象,并对这个对象进行设置,然后调用build方法来返回一个Notification对象,最后再执行上述第四个步骤,这里要注意的是,替代setLatestEventInfo(xxx)方法除了上述设置标题和内容,里面还有一个setContentIntent(pendingIntent)来设置点击通知后调用的Intent,还有其他方法详见Android官方文档http://developer.android.com/reference/android/app/Notification.Builder.html
TextView属性android:ellipsize实现跑马灯效果
TextView实现文字滚动需要以下几个要点:
1.文字长度长于可显示范围:android:singleLine=”true”
2.设置可滚到,或显示样式:android:ellipsize=”marquee”
3.TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView。重写isFocused方法,这个方法默认行为是,如果TextView获得焦点,方法返回true,失去焦点则返回false。跑马灯效果估计也是用这个方法判断是否获得焦点,所以把它的返回值始终设置为true。
ellipsize属性
设置当文字过长时,该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
marqueeRepeatLimit属性
在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
focusable属性
能否获得焦点,同样focusableInTouchMode应该是滑动时能否获得焦点。
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
XML代码:
android:ellipsize=”marquee”, android:singleLine=”true”
Java代码:
mTVText.setText(“哼唱接撒砥砺风节雷锋精神http://orgcent.com/,很长很长很长很长很长很长的数据”);
mTVText.setSingleLine(true);
mTVText.setEllipsize(TruncateAt.MARQUEE);
PS: TextView.setHorizontallyScrolling(true); //让文字可以水平滑动
TextView还可以设置跑马灯效果的滚动次数,如下:
XML代码设置:
android:marqueerepeatlimit=”1”。1代表1次,-1代表无限循环。
Java代码设置:
mTVText.setMarqueeRepeatLimit(-1);
EditText 的 inputType属性(键盘类型)
(转载自:http://www.cnblogs.com/hiqc/p/4763844.html)
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。
//文本类型,多为大写、小写和数字符号。
android:inputType参数类型说明
android:inputType=”none”–输入普通字符
android:inputType=”text”–输入普通字符
android:inputType=”textCapCharacters”–输入普通字符
android:inputType=”textCapWords”–单词首字母大小
android:inputType=”textCapSentences”–仅第一个字母大小
android:inputType=”textAutoCorrect”–前两个自动完成
android:inputType=”textAutoComplete”–前两个自动完成
android:inputType=”textMultiLine”–多行输入
android:inputType=”textImeMultiLine”–输入法多行(不一定支持)
android:inputType=”textNoSuggestions”–不提示
android:inputType=”textUri”–URI格式
android:inputType=”textEmailAddress”–电子邮件地址格式
android:inputType=”textEmailSubject”–邮件主题格式
android:inputType=”textShortMessage”–短消息格式
android:inputType=”textLongMessage”–长消息格式
android:inputType=”textPersonName”–人名格式
android:inputType=”textPostalAddress”–邮政格式
android:inputType=”textPassword”–密码格式
android:inputType=”textVisiblePassword”–密码可见格式
android:inputType=”textWebEditText”–作为网页表单的文本格式
android:inputType=”textFilter”–文本筛选格式
android:inputType=”textPhonetic”–拼音输入格式
android:inputType=”number”–数字格式
android:inputType=”numberSigned”–有符号数字格式
android:inputType=”numberDecimal”–可以带小数点的浮点格式
android:inputType=”phone”–拨号键盘
android:inputType=”datetime”
android:inputType=”date”–日期键盘
android:inputType=”time”–时间键盘
Android之设置EditText输入类型(setInputType()方法和android:inputType属性)
(转载自:http://blog.csdn.net/u013059863/article/details/49914513)
在Android开发过程中,我们经常使用到EditText控件,并且会根据各种需求设置它的输入类型。设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置。
下面将介绍这两种方法:
(1)使用EditText的setInputType()方法设置输入类型:
EditText editText;
//输入类型为没有指定明确的类型的特殊内容类型
editText.setInputType(InputType.TYPE_NULL);
//输入类型为普通文本
editText.setInputType(InputType.TYPE_CLASS_TEXT);
//输入类型为数字文本
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
//输入类型为电话号码
editText.setInputType(InputType.TYPE_CLASS_PHONE);
//输入类型为日期和时间
editText.setInputType(InputType.TYPE_CLASS_DATETIME);
//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,允许输入日期和时间。
editText.setInputType(InputType.TYPE_DATETIME_VARIATION_NORMAL);
//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。
editText.setInputType(InputType.TYPE_DATETIME_VARIATION_DATE);
//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。
editText.setInputType(InputType.TYPE_DATETIME_VARIATION_TIME);
//输入类型为决定所给文本整体类的位掩码
editText.setInputType(InputType.TYPE_MASK_CLASS);
//输入类型为提供附加标志位选项的位掩码
editText.setInputType(InputType.TYPE_MASK_FLAGS);
//输入类型为决定基类内容变化的位掩码
editText.setInputType(InputType.TYPE_MASK_VARIATION);
//输入类型为小数数字,允许十进制小数点提供分数值。
editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
//输入类型为数字是带符号的,允许在开头带正号或者负号
editText.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
//输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为纯普通数字文本
editText.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);
//输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为数字密码
editText.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
//输入类型为自动完成文本类型
editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
//输入类型为自动纠正文本类型
editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
//输入类型为所有字符大写
editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
//输入类型为每句的第一个字符大写
editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
//输入类型为每个单词的第一个字母大写
editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
//输入多行文本
editText.setInputType(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);
//进行输入时,输入法无提示
editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
//输入一个短的,可能是非正式的消息,如即时消息或短信。
editText.setInputType(InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE);
//输入长内容,可能是正式的消息内容,比如电子邮件的主体
editText.setInputType(InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
//输入文本以过滤列表等内容
editText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);
//输入一个电子邮件地址
editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
//输入电子邮件主题行
editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT);
//输入一个密码
editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
//输入老式的普通文本
editText.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
//输入人名
editText.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
//输入邮寄地址
editText.setInputType(InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS);
//输入语音发音输入文本,如联系人拼音名称字段
editText.setInputType(InputType.TYPE_TEXT_VARIATION_PHONETIC);
//输入URI
editText.setInputType(InputType.TYPE_TEXT_VARIATION_URI);
//输入对用户可见的密码
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
//输入网页表单中的文本
editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);
//输入网页表单中的邮件地址
editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS);
//输入网页表单中的密码
editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD);
下面是几个简单的例子:
/**
* 第一个例子:对用户可见的密码字段
*/
editText.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
/**
* 第二个例子:具有自动大写的多行邮寄地址
*/
editText.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS |
InputType.TYPE_TEXT_FLAG_MULTI_LINE);
/**
* 第三个例子:一个时间字段
*/
editText.setInputType(InputType.TYPE_CLASS_DATETIME |
InputType.TYPE_DATETIME_VARIATION_TIME);
(2)在布局文件中使用android:inputType属性来设置:
//输入类型为没有指定明确的类型的特殊内容类型
android:inputType=”none”
//输入类型为普通文本
android:inputType="text"
//输入类型为数字文本
android:inputType="number"
//输入类型为电话号码
android:inputType=”phone”
//输入类型为日期和时间
android:inputType=”datetime”
//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。
android:inputType=”date”
//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。
android:inputType=”time”
//输入类型为小数数字,允许十进制小数点提供分数值。
android:inputType="numberDecimal"
//输入类型为数字是带符号的,允许在开头带正号或者负号
android:inputType="numberSigned"
//输入类型为数字密码
android:inputType="numberPassword"
//输入类型为自动完成文本类型
android:inputType="textAutoComplete"
//输入类型为自动纠正文本类型
android:inputType="textAutoCorrect"
//输入类型为所有字符大写
android:inputType="textCapCharacters"
//输入类型为每句的第一个字符大写
android:inputType="textCapSentences"
//输入类型为每个单词的第一个字母大写
android:inputType="textCapWords"
//输入法多行文本
android:inputType="textImeMultiLine"
//进行输入时,输入法无提示
android:inputType="textNoSuggestions"
//输入一个短的,可能是非正式的消息,如即时消息或短信。
android:inputType="textShortMessage"
//输入长内容,可能是正式的消息内容,比如电子邮件的主体
android:inputType="textLongMessage"
//输入文本以过滤列表等内容
android:inputType="textFilter"
//输入一个电子邮件地址
android:inputType="textEmailAddress"
//输入电子邮件主题行
android:inputType="textEmailSubject"
//输入一个密码
android:inputType="textPassword"
//输入对用户可见的密码
android:inputType="textVisiblePassword"
//输入人的姓名
android:inputType="textPersonName"
//输入邮寄地址
android:inputType="textPostalAddress"
//输入语音发音输入文本,如联系人拼音名称字段
android:inputType="textPhonetic"
//输入URI
android:inputType="textUri"
//输入网页表单中的文本
android:inputType="textWebEditText"
//输入网页表单中的邮件地址
android:inputType="textWebEmailAddress"
//输入网页表单中的密码
android:inputType="textWebPassword"