android 学习笔记③
41.TextView跑马灯效果
TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式:
例如,"encyclopedia"显示, 只是举例,以实际显示为准:)
android:ellipsize=”start”—–省略号显示在开头 "...pedia"
android:ellipsize=”end”——省略号显示在结尾 "encyc..."
android:ellipsize=”middle”—-省略号显示在中间 "en...dia"
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)
对于使用marquee即滚动显示方式的,需要当前textview获得焦点才会滚动。所以有时可能因为实际需要,textview未获得焦点或者需要多个textview都同时滚动显示时,可以采用以下办法:
因为判断textview是否处于focused状态是通过它本身isFocused()方法,这样只要此方法返回为true时,即认为处于focused的状态,就可以滚动啦。
所以可以通过继承TextView类,并override isFocused()方法来控制是否滚动咯
42.设置RadioGroup选中与没有选中时的颜色(背景色)或者是图片
首先新建一个res/下新建一个color的目录,新建一个radiogroup_selecked_bg.xm文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_checked="true" android:color="@color/conversion_item_bg_checked"/><item android:state_checked="false" android:color="@color/conversion_item_bg_unchecked"/></selector>
注意后面的@color必须在res/values/color.xml中定义好,不能直接写
ndroid:color = "#ffffff"这样写是不会有效果的
然后再RadioGroup中加入属性:android:background = "@color/radiogroup_selecked_bg(就是一开始建立的文件的名字)"
设置背景图片类似
43.ListView的分割线
android:divider="@color/conversion_item_divider"
android:dividerHeight="1dp"
//注意这两个要一起用,如果没有第二个,默认是0dp,即没有效果
android:cacheColorHint="#00000000" //设置拖动背景色为透明
android:dividerHeight="30px" //listview item之间的高度
android:divider="@drawable/ic_launcher" //listview item之间的背景或者说是颜色
android:fadingEdge="vertical" //上边和下边有黑色的阴影 值为none的话就没有阴影
android:scrollbars="horizontal|none" //只有值为horizontal|vertical的时候,才会显示滚动条,并且会自动影藏和显示
android:fastScrollEnabled="true" //快速滚动效果,配置这个属性,在快速滚动的时候旁边会出现一个小方块的快速滚动效果,自动隐藏和显示,
android:scrollbarStyle="outsideInset" //四个值的含义如下
1>outsideInset : 该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.
2>outsideOverlay : 该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖
3>insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.
4>insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容上.
44.android 锁定横屏
xml文件中设置:
要实现这个目的,只需要在AndroidManifest.xml里声明Activity的时候加上一个属性:android:screenOrientation,属性取值landscape为固定横屏、portrait为固定纵屏幕。
代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE););//强制为横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
============延伸========
屏幕会自动切换时,默认状态的应用程序,会重新调用onCreate,相当于重新启动了一次应用程序。同时,layout可能因为横屏带来不能合理适配的问题。为了解决旋屏和键盘切换引起的程序重启问题,还需要增加一个属性:android:configChanges。这个属性可以理解为一个监听器,它将拦截旋屏和键盘切换事件,阻止程序重启而变为回调onConfigurationChanged方法。这里常用的属性取值为:keyboardHidden|orientation。
45.设置标志位1和-1,true和false
无需通过判断
if(flag){
flag = false;}
else{
flag = true;}//只需要这样
flag = flag != true;//同样,1和-1可以通过这样
i = i*-1;
46.设置button主动被点击
怎么触发onclicklistener呢?可以用这个方法:
button.perfromClick();
47.Intent跳转到另外一个应用的Activity
intent.setComponent(new ComponentName("要跳转的应用的包名","要跳转的应用的包名加类名"));
eg:
intent.setComponent(new ComponentName("com.siyehua.test.otherapp","com.siyehua.test.otherapp.SpaceActivity"));
同时:必须在目标的应用里设置Activity的Actioon和catoery
<activityandroid:name="<span style="font-family: Arial, Helvetica, sans-serif;">com.siyehua.test.otherapp.SpaceActivity</span><span style="font-family: Arial, Helvetica, sans-serif;">"</span>><intent-filter><action android:name="com.siyehuazhilian.abc" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
48.检测手机里时候包含该应用
/*** 检测手机时候包含应用*/private boolean getInstallFlag(String appPackageName) {List<PackageInfo> list = getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);for (PackageInfo packageInfo : list) {if (packageInfo.packageName.equals(appPackageName)) {return true;}}Toast.makeText(this, "检测到您的手机不存在闪购客户端,现在为您跳转到应用商店下载", 1000).show();Uri uri = Uri.parse("market://search?q=" + "闪购");Intent it = new Intent(Intent.ACTION_VIEW, uri);startActivity(it);return false;}
49.在java代码中设置控件的大小和位置
GridView mGrid= (GridView) findViewById(R.id.gridview);
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) mGrid.getLayoutParams(); // 取控件mGrid当前的布局参数
linearParams.height = 75;// 当控件的高强制设成75象素
mGrid.setLayoutParams(linearParams); // 使设置好的布局参数应用到控件mGrid2
比如
TextView mTextView = new TextView(context);
mTextView.setPadding(left, top, right, bottom);// 通过自定义坐标来放置你的控件
或者
TextView mTextView = new TextView(context);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)xxxx.getLayoutParams();
params.setMargins(left, top, right, bottom));// 通过自定义坐标来放置你的控件
mTextView .setLayoutParams(params);
注意LayoutParams可能是LinearLayout,也可能是RelativeLayout,要看当前控件的父控件是哪个
50.
|
51,刷新某个文件的uri
public static void scanPhotos(String filePath, Context context) {Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);Uri uri = Uri.fromFile(new File(filePath));intent.setData(uri);context.sendBroadcast(intent);}
52.设置对话框的位置Dialog
requestWindowFeature(Window.FEATURE_NO_TITLE);DisplayMetrics display = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(display);int width = display.widthPixels;int height = display.heightPixels;Window dialogWindow = this.getWindow();WindowManager.LayoutParams lp = dialogWindow.getAttributes();dialogWindow.setGravity(Gravity.CENTER);lp.width = width; // 宽度lp.height = (int) (height * 0.6); // 高度lp.x = 0; // 新位置X坐标lp.y = lp.height; // 新位置Y坐标dialogWindow.setAttributes(lp);
53.EditeText模仿输入法删除EditeText的文本
//动作按下int action = KeyEvent.ACTION_DOWN;//code:删除,其他code也可以,例如 code = 0int code = KeyEvent.KEYCODE_DEL;KeyEvent event = new KeyEvent(action, code);searchEditText.onKeyDown(KeyEvent.KEYCODE_DEL, event); //抛给系统处理了
54.通过uri得到文件路径(文件属性)
// 保存选择的铃声UriUri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);String[] proj = { MediaStore.Audio.Media.DATA };Cursor actualimagecursor = managedQuery(pickedUri, proj, null, null,null);int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);actualimagecursor.moveToFirst();String img_path = actualimagecursor.getString(actual_image_column_index);File file = new File(img_path);
57.打开系统铃声
// 打开系统铃声设置Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);// 设置铃声类型和titleintent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM);intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹铃铃声");// 当设置完成之后返回到当前的ActivitystartActivityForResult(intent, 10086);
58. 让ListView滚动到最底部
// msgListView是ListView控件
// adapter是ListView绑定的Adapter,如果不方便直接使用,也可以通过ListView的getAdapter()方法获取到,前提是你已经绑定了适配器哦
// 里面的参数就很熟悉了吧,其实这个方法的主要作用是选中listview的指定列,选中了,自然就得让这个item可见,自然就滚动咯
msgListView.setSelection(adapter.getCount()-1);
//还要必须设置selection为true
msgListView.selection(true);
还可以在ListView标签中加入如下两个属性,动态添加元素后,列表会自动滚动到底部:
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
59,限制EditText只能输入数字
小数请使用android:numeric="decimal" 属性
然后gettext后进行类型转换
其实还有很多办法解决。
可以添加TextChangedListener 监听器 进行字符判断。
android:digits 属性 输入规则
例如:android:digits=“0123456789” 表示只能输入数字。
android:digits=“0123456789.” 表示可以输入数字和小数点
60.EditText 的inputType详解
在开发的过程中,通常会用到EditText,如何让虚拟键盘来适应输入框中内容的类型,通常我们都会在xml文件中加入android:inputType=""。android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"//前3个输入普通字符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 学习笔记③相关推荐
- Android学习笔记21:ImageView获取网络图片
Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
- Android学习笔记26:图片切换控件ImageSwitcher的使用
在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
- Android学习笔记:TabHost 和 FragmentTabHost
2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
- Android学习笔记:TabHost 和 FragmentTabHost(转)
Android学习笔记:TabHost 和 FragmentTabHost(转) 转自:http://www.cnblogs.com/asion/p/3339313.html 作者:Asion Tan ...
- Pro Android学习笔记(三三):Menu(4):Alternative菜单
什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...
- Android学习笔记之(一)开发环境搭建
Android学习笔记之(一)开发环境搭建 zouxy09@qq.com http://blog.csdn.net/zouxy09 至于说Android是什么之类的俺就不啰嗦了,因为它离我们太近了.直 ...
最新文章
- 从Java 8中的java.util.stream.Stream检索列表
- free命令输出详解
- Spring原理简述
- Java:main()函数调用类中方法的限制
- python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020
- VS2010下的多线程窗口
- python整数转换字符串_使用Python中的str()函数将整数值转换为字符串
- jdbc工具类 配置版本 20210412_222527.mp4
- 电脑一族,打电脑时候的健康的坐姿
- python基础作业_017--python基础作业
- jsonp 获取图片文件流_【国际IT专场】Laravel Media Library多媒体文件的上传与管理...
- eos utility中文版v3.7.0
- 最近发现一款超牛的记单词软件,分享一下
- 关于舵轮AGV 的数学模型
- python爬取“堆糖网”小姐姐 图片
- Flask学习(二)-Jinji2模板引擎
- 数模--0-1规划问题~Matlab中 intlinprog函数用法简介
- 个嵌入式牛人学习经历
- Excel中同一单元格设置不同颜色的字体
- word格式角落的直角问题又名裁剪标记