您的位置:首页 > 移动开发 > Android开发

Android 零碎知识点---1

2017-08-20 17:14 267 查看

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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android