android 编程小技巧(持续中)
换言之。以后在非activity类里调用activity的方法 一律这么做。若不行的话 能够这么做:(Activity)mContext。
second:
gridview中能够设置一行显示多少个item,所以他为每一个item都预留了一部分空间。
若用textview来填充item 而textview的属性又为wrap_content时。由于内容较少,仅仅占领了分配空间的一部分,所以不管怎么去调试属性。看上去都像是顶格显示;故解决方法是让textview的宽度为marth_parent。这样grity
= "centre"才会有:-D。
third:
forth:
five:
原因不明
six:
然后 然后 各种error 解决方法 换名字或者 this.activity = (QYSPActivity) activity; 说白了 就是this. 语句 伤不起~~
eight:
nine:
if(convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
convertView.setTag(holder);
}else
{
holder = (ViewHolder)convertView.getTag();
holder.img.setImageResource(R.drawable.ic_launcher);
holder.title.setText("loulijun");
holder.info.setText("www.cnblogs.com/loulijun");
}
eleven: 单个控件的xml不能放缩问题
那么如何改动才干让按钮的大小改变呢?解决方法事实上有非常多种,最简单的方式就是在Button的外面再嵌套一层布局. 当然这个时候最外层的布局失去作用了。
ten: throw与throws的差别
twelve: gravity与 layout_gravity
thirteen:带删除button及功能的输入框
forteen: open failed: EISDIR (Is a directory)
将"/mnt/sdcard/zhufu/apkbus.db"当作目录来创建,这样就会出现EISDIR错误,解决方法:先创建前面的目录,在创建终于文件。
15:播放同一个文件MediaPlayer报IO异常
player.release(); 。
16: scrollview默认初始位置在顶部
txtBaseMsg.setFocusable(true);
txtBaseMsg.setFocusableInTouchMode(true);
txtBaseMsg.requestFocus();
17: Notification
动态图标
getMeasuredWidth():对View上的内容进行測量后得到的View内容占领的宽度。前提是你必须在父布局的onLayout()方法或者此View的onDraw()方法里调用measure(0,0);(measure參数的值能够知己定义)。否则得到的结果和getWidth()得到的结果是一样的。
这两个方法最基本的差别在于,是否使用了measure()方法,同一时候measure()使用的位置也非常重要。
getHeight() 和 get MeasuredHeight() 差别同理。
geiHeight有时候会得到0,一般原因是在View还未绘制完之前调用这种方法,所以得到的就是0。
解决该问题的方法有非常多,主要就是延后调用这些方法。
能够试着在onWindowFocusChanged()里面调用这些方法。
21:关于在xml里 android:onClick="onClick"的巧妙使用方法
在代码里若引入了其它地方的xml那么xml的点击事件就有一点麻烦,所以能够採用之前题目的那个方法。由于这个和android自带的onclick事件同样,所以能够直接套用点击方法。(其它部分与普通onclick事件一样)。
22 :设置导航栏和状态栏(仅仅对4.4或以上实用)
主题,然后设置 android:windowTranslucentNavigation 或者android:windowTranslucentStatus的主题属性为true,又或者在activity的代码里面开启 FLAG_TRANSLUCENT_NAVIGATION 或是 FLAG_TRANSLUCENT_STATUS的window窗体标识。
// 创建状态栏的管理实例SystemBarTintManager tintManager = new SystemBarTintManager(this);
// 激活状态栏设置tintManager.setStatusBarTintEnabled(true);
// 激活导航栏设置tintManager.setNavigationBarTintEnabled(true);
设置状态栏颜色和图片
// 设置一个颜色给系统栏
tintManager.setTintColor(Color.parseColor("#99000FF"));
// 设置一个样式背景给导航栏
tintManager.setNavigationBarTintResource(R.drawable.my_tint);
// 设置一个状态栏资源
tintManager.setStatusBarTintDrawable(MyDrawable);
23:Intent的Flag任用
若想保留2个Activity也就是说要在新Task里保留2个Act 那么最好的做法是一次启动两个Activity,详细操作例如以下:Intent intent = new Intent(this,A.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);intent = new Intent(this,B.class);startActivity(intent);这个时候系统会直接跳到B界面。同一时候A会放在Task的最底层。从B界面返回 会回到A界面。
getLocationInWindow 。计算该视图在它所在的widnow的坐标x。y值。//获取在整个窗体内的绝对坐标 (不是非常理解= =、)
getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲里的坐标
假设在Activity的OnCreate()事件输出那些參数。是全为0,要等UI控件都载入完了才干获取到这些。
25:android:ellipsize的使用
EidtText和textview中内容过长的话自己主动换行。使用android:ellipsize与android:singleine能够解决,使仅仅有一行。
EditText不支持marquee
使用方法例如以下:
在xml中
android:ellipsize = "end" 省略号在结尾
android:ellipsize = "start" 省略号在开头
android:ellipsize = "middle" 省略号在中间
android:ellipsize = "marquee" 跑马灯
android:singleline = "true"
当然也能够用代码语句
tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
tv.setSingleLine(true);
26:edittext光标
27:drawpidding与与drawableLeft
28:中文加粗
TextPaint tp = tv.getPaint();
tp.setFakeBoldText(true);
29:View中利用TAG传值
标签还能够用于存储视图中的数据,而不诉诸其它数据结构。(第二句话目測翻译有问题)
can also be used to store data within a view without resorting to another data structure. The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type). Keys identified as belonging to the
Android framework or not associated with any package will cause an
IllegalArgumentException
to be thrown.tag 可用于标记层次结构中查看层次结构中不必是唯一的。Tags 还能够用于存储视图中的数据,而不诉诸其它数据结构。key 应是指定的密钥id中声明的应用资源。以确保它是独一无二的(见ID资源类型)。
Keys 为属于Android框架或不相关的不论什么包的密钥,否则将导致抛出一个IllegalArgumentException。(翻译有问题)
而在传多个值时值得注意的是这个Key,他不能为普通的int型数据,它要的是与其它控件一样的id,且不能是反复的。so解决方法是在value里新建ids.xml文件 里面存放id
30:在代码里面无法设置textview文字居左问题
31:监听返回键
32:遍历Map
33:遍历list并删除某个item注意事项
5节点没有推断。so error occurs。
(it.remove()仅仅能调用一次,多次就抛异常了)
6节点(新list的i= 5)没有推断,那么每删除一次节点之后把i的值减一不即可了吗?! 下一次推断的时候还是从i= 5開始。而i= 5刚好是之前的i= 6,这样就避免了之前的漏判问题,那就OK了(此法仅仅是构想。还没实践,只是应该能够)。
34:webView禁止复制粘贴
View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
return true;//禁止事件返回
}
});
35:防截屏
36:背景变暗
37 :截屏并保存
40:ExpandableListView默认所有展开且点击不收缩
41:点击password可见隐藏
pwdEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
42:导入自己定义属性
43:android ViewPager xml inflate error
android-support-v4.jar
inlib folder. add this jar in
Build
Path
. now go to project
property-->Build Path--> Order & Export--> select all --> ok
. Clean & RUN.44 : android
java.lang.NoSuchFieldError: R$id.xxx
第一种情况 參考自http://www.shangxueba.com/jingyan/1856083.html
将引用的自己定义控件的xml文件里的最外层布局上面加入xmlns:sat=“http://schemas.Android.com/apk/res/控件所在位置的包名”但是在执行时就会报Java.lang.NoSuchFieldError:包.R$id.xxx错。
同一时候还会出现no
resource identifier found for attribute 的错误。
将xmlns:sat=“http://schemas.android.com/apk/res/控件所在位置的包名”更改为
http://schemas.android.com/apk/res-auto 就不会报错了
另外一种 參考:http://www.hankcs.com/program/mobiledev/e-androidruntime-fatal-exception-main-java-lang-nosuchfielderror.html
这个问题是因为主项目覆盖了库项目的xml所致。假设主项目中的某个xml里定义了一个跟库项目中的xml同名的xml,那么库中的xml将会被覆盖。这里的覆盖意思是,编译后仅仅有主项目中的xml以及R.id。全然没有库项目的影子。
所以才会有NoSuchFieldError的错误。
这个错误不会在编译的时候提示。算得上一个陷阱了。
解决方法非常easy,删除主项目中的xml,整个项目仅仅保留一份xml就可以。
45:WebView透明背景
web_view.setBackgroundColor(0);
加上2也无效,那是因为开启了软加速所致,解决方法。关闭就可以。
46:
Resources res = getResources();
Configuration config = new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
47:ViewGroup与子View点击冲突
- beforeDescendants :Group会优先于子View获得焦点;
- afterDescendants :Group仅仅有在子View不须要焦点的时候获得焦点;
- blocksDescendants :Group强制获取焦点。
48:ListView/GridView本身就有setEmptyView方法。
49:图片变色
项目中我们还可能遇到图片内容同样。不过颜色不同的情况。
这个时候我们就能够使用Android提供的着色来完毕,而不用提供好几套图片。比如在Android 5.0+上我们能够使用 android:tint
和 android:tintMode
,在低版本号中能够使用 ColorFilter
。
对于那些内容颜色等都同样,仅仅是方向不同的图片。我们能够仅仅保留一中方向的,其它方向的图片通过代码实现。
比如我们能够对上面提到的 ic_favorite_black_24dp
进行翻转。创建一个 drawable
:
<?xml version="1.0" encoding="utf-8"?
><rotatexmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/ic_favorite_black_24dp"android:fromDegrees="180"android:pivotX="50%"android:pivotY="50%"android:toDegrees="180" />
尽管Android设备的分辨率很的多。但这并不代表着我们须要为每一种分辨率都准备一套资源。
在显示差异不大的情况下。我们能够尽量复用一套图片资源。一套布局。然后再考虑特定屏幕密度。
android 编程小技巧(持续中)的更多相关文章
- [编程小技巧]Notepad++中如何实现文本对比功能?
1.打开Notepad++插件中心 2.安装Compare 3.按提示重启Notepad++ 4.点击Compare比较临近的两个文件 5. 取消比较 6 Comp ...
- Java编程小技巧(1)——方法传回两个对象
原文地址:Java编程小技巧(1)--方法传回两个对象 | Stars-One的杂货小窝 题目是个伪命题,由Java语法我们都知道,方法要么返回一个对象,要么就不返回 当有这样的情况,我们需要返回两个 ...
- Shellcode编程小技巧
工作需要,需要注入其他程序监控一些东西,检测到的数据通过WM_COPY 消息发送给显示窗体.(大体是这样的还没定稿) ##1 选择一个框架 ## tombkeeper/Shellcode_Templa ...
- grep的用法,小技巧,模板中含有\t时:grep -P "^\t" file
linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事 ...
- [Tools] Eclipse使用小技巧-持续更新
[背景] 使用之中发现一些eclipse使用的小技巧,记录下来供以后查阅 Eclipse保存preferences,并导入到其他workspaces The Export wizard can b ...
- 学会这些 pycharm 编程小技巧,编程效率提升 10 倍
PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 1.右击标签页: ...
- Android Studio 小技巧(2):AS中Button文字默认大写的问题
问题类型 设置Layout中添加一个Button <Button android:id="@+id/bt_showerror" android:layout_width=&q ...
- Visual C++中的一些编程小技巧
在应用程序的任意地方实现窗体的最大化.最小化.正常窗口等功能 // 设置Windows窗体的状态void CMinWindowsDlg::SetWindowState(int nWindowSize) ...
- linux常用小技巧(持续更新中)
一.设置固定ip地址1.config查看用的是哪一个网卡这是假设用的是eth12.修改dns地址vim /etc/resolv.confsearch 域名地址nameserver 192.168.3. ...
随机推荐
- Builder(构造者)
Builder(构造者) <?php class Product { private $name; public function setName($name) { $this->name ...
- 手写数字0-9的识别代码(SVM支持向量机)
帮一个贴吧的朋友改的一段代码,源代码来自<机器学习实战> 原代码的功能是识别0和9两个数字 经过改动之后可以识别0~9,并且将分类器的产生和测试部分分开来写,免得每次测试数据都要重新生成分 ...
- 【Luogu】P1410子序列(DP)
题目链接 我DP是真的菜啊啊啊啊啊! f[i][j]表示考虑前i个数,有i-j+1个数组成一个上升子序列,且不以i结尾的尾端最小值. 设a为j个数组成的序列,且以i结尾:b为i-j+1个数组成的序列, ...
- BZOJ 4516 [Sdoi2016]生成魔咒 ——后缀自动机
本质不同的字串,考虑SA的做法,比较弱,貌似不会. 好吧,只好用SAM了,由于后缀自动机的状态最简的性质, 所有不同的字串就是∑l[i]-l[fa[i]], 然后后缀自动机是可以在线的,然后维护一下就 ...
- Ceph纠删码编码机制
1 Ceph简述 Ceph是一种性能优越,可靠性和可扩展性良好的统一的分布式云存储系统,提供对象存储.块存储.文件存储三种存储服务.Ceph文件系统中不区分节点中心,在理论上可以实现系统规模的无限扩展 ...
- 从ip addr add和ifconfig的区别看linux网卡ip地址的结构
今天一个老外在邮件列表上问了一个问题,就是ip addr add和ifconfig的区别,我给他进行了解答,可能因为英语不好吧,解答的很简单,因此我还是要在这里详细说明一下.其实它们之间没有什么区别, ...
- 洛谷 [P2485] 计算器
快速幂+同余方程+BSGS 同余方程在解的时候要注意,在将exgcd求出的解变换为原方程的解的时候,要取模 BSGS的原理就是用分块+hash优化暴力,要注意特判 a 和 b 是 p 的倍数的时候. ...
- lnux 下 core文件
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. 开启或关闭core文件的生成用以下 ...
- iOS常用三方库收集
除非Pod可以直接加载到工程中的外,收集一下 https://github.com/kejinlu/KKGestureLockView 好用的手势解锁
- hdu 1224 最长路
开始用dijkstra直接求,发现不行,算法问题(1-2,(30),2-4(20),1--3(10),3--4(100)最后一个点无法更新,导致错误),后用取负,加大数法也没过. 现在(寒假了):求负 ...