1.把Button或者ImageButton的背景设为透明或者半透明:

半透明<Buttonandroid:background="#e0000000" ... />

透明<Buttonandroid:background="#00000000".../>

其他透明度:在RGB的值前面加上数字(100以内),如#90436EEE(RGB为436EEE),#50436EEE,根据值的大小呈现不同的显示效果,值越小透明度越高。

2.设置按钮背景图片或颜色:

btn.setBackgroundResource(R.drawable.comment_sel);

btn.setTextColor(getResources().getColor(R.color.blue));

3.文字换行:;(要加上分号).

4.布局时,不宜做过多的嵌套,否则容易报堆栈溢出异常。

5.9.png图片最好放在drawable-hdpi文件夹中,否则可能显示时可能会出现黑色的外边线。

6.android进程优先级:foreground Process(前台进程)>Visable Process(不在前端显示,但也没有完全隐藏,比如弹出一个对话框式的 Activity)>ServiceProcess>Background Process>Empty Process。

7.Android进程启动:PackageServiceàPackageManagerà加载manifest配置文件—>读取MAIN和LAUNCHERà映射类的实例。

8.TextView设置符号时(如问号),要在英文键盘环境下输入,否则会被显示为省略号。

9.EditText追加字符:

edit.append("0");

edit.getText().insert(edit.getSelectionStart(),"0");

10. EditText去掉默认的边框:android:background="@null"或者 android:background="#00000000

11.weight的使用:weight的意义在于,对于父控件,若子控件能够完全显示,先分配没有设置weight的控件,对于有weight属性的控件,则根据weight的值等分布局的剩余部分。如右图:都采用RelativeLayout左中右布局,但是由于文字的字数不同结果出现第二个布局中文字换行。解决方法:对中间的TextView设置weight = 1;外层采用LinearLayout或其他都可以达到需要的效果。

12.转字符串时,优先选用String.valueOf。直接用toString时最好做一个非null判断。二者区别可参考源码。

13.android工程中如果出现(所有的)资源找不到异常,可能是图片问题,检查9.png是否有问题。

14.对LinearLayout(或其他widget)整个控件设置onclick事件:

(1).XML中设置CliClickable=true(也可以不用设置,区别在于设置为true之后必须在代码中注册监听事件,否则点击后程序会崩溃),然后直接重写onClick方法;

(2)XML中设置onClick=”name(响应事件的名称)” ,在Activity中写一个name(View v)的方法执行点击后的操作。

15. dialog的WindowLeaked异常:

AlertDialogdialog = new AlertDialog.Builder(this);

dialog.show();

finish();

android 上的dialog.show不会阻塞调用线程(如UI线程),导致dialog尚未dismiss或者cancel之前,dialog所依赖的context被关闭,因此出现windowleaked。但是此问题并不影响程序继续运行。

解决办法:在dialog的OnClickListener事件中先dismiss(onClick中有一个DialogInterface参数,直接调用此DialogInterface的dismiss即可)后再finish activity(点击按钮时先调用dialog的dismiss()方法,然后调用Activity的finish()方法)。

16.xml中有EditText时,弹出键盘时导致页面向上收缩:

解决办法:在manifest.xml中对应的Activity设置 android:windowSoftInputMode="adjustPan";并且如果该xml中有ListView时,不能设置 android:fastScrollEnabled="true"android:focusable="true"(有待再次验证)。

17.若LinearLayout设置OnclickListener点击事件,则该LinearLayout中不宜放置Button按钮,否则当点击整个LinearLayout时,Button所占的区域无法执行点击命令。(也许可以通过设置focusable解决)

18. EditText的getText方法不会返回null(因此调用getText不必作mull判断)。

19.TextView设置字体粗体:

在xml文件中使用android:textStyle=”bold” 可以将英文设置成粗体,但是不能将中文设置成粗体,

将中文设置成粗体的方法是:

TextView tv =(TextView)findViewById(R.id.TextView01);

TextPaint tp = tv.getPaint();

tp.setFakeBoldText(true);

20.TimePicker,DatePicker:根据键盘输入动态更新日期

使用TimePicker,DatePicker时无法屏蔽软键盘,因此用户可以通过键盘输入日期。

假设有一个确定按钮。当用户通过键盘手动输入日期,点击确定,结果无法取到正确的日期值。解决方法:在findviewbyid找到TimePicker,DatePicker时首先调用它们的requestFocus(),点击确定时调用clearFocus()。

21.设置全屏 :

1)setContentView之前:

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

2)自定义style:<style name="full_screen">

<itemname="android:windowNoTitle">true</item>

<itemname="android:windowFullscreen">android:windowNoTitle</item>

</style>

对应的Activity设置android:theme=”@style/full_screen”

3)直接在Activity中设置android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

22.使View居中:

利用weight属性,可以在上下或左右各添加空View:

<View       android:layout_width="0dip"

android:layout_height="0dp"

android:layout_weight="1"

/>

23.Fragment中嵌套ViewFlipper时,滑动触摸无响应:

在onCreateView中,对由inflate()得到的View设置view.setOnTouchListener(this);

在重写onTouch方法时返回true(而不再是detector.onTouchEvent(event))。

24.设置图片使其充满ImageView控件:

为了匹配ImageView的width和height属性(如:fill_parent),则设置scaleType=”fitXY”.

25.android的签名期限如果过期,项目就会报错,无法打包,不能通过编译。

26.在Adapter使用Intent启动Activity:

在构造器中传入Context参数,用Context.startActivity()启动Activity。

27.View设置padding和margin:

Padding:直接调用setPadding();

Margin:先构造出LayoutParams params = newLayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);之后params.setMargins(10,1 0,1 0, 10);最后

view. setLayoutParams(params);

28.软键盘imeOptions的用法:

android:imeOptions="flagNoExtractUi"  //使软键盘不全屏显示,只占用一部分屏幕

同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键

android:imeOptions="actionNone"  //输入框右侧不带任何提示

android:imeOptions="actionGo"    //右下角按键内容为'开始'

android:imeOptions="actionSearch"  //右下角按键为放大镜图片,搜索

android:imeOptions="actionSend"    //右下角按键内容为'发送'

android:imeOptions="actionNext"   //右下角按键内容为'下一步'

android:imeOptions="actionDone"  //右下角按键内容为'完成'

29.EditText设置字符长度限制:

XML: android:maxLength=“15

Code: editText.setFilters(newInputFilter[]{new InputFilter.LengthFilter(15});

30. java.lang.InstantiationException:can't instantiate class com.sns.ui.Login$UserLogin; no empty constructor

内部类UserLogin声明成static。

31. 判断当前为飞行模式:

Settings.System.getInt(context.getContentResolver(),

Settings.System.AIRPLANE_MODE_ON, 0)  == 0;

32.监听enter键,点击enter实现登录或其他响应事件:

editText.setOnEditorActionListener(newOnEditorActionListener() {

@Override

publicboolean onEditorAction(TextView v, int actionId, KeyEvent event) {

// TODOAuto-generated method stub

Server.login(Login.this,name, pwd);

returnfalse;

}

});

33.若Activity设置全屏,则Fragment中setHasOptionsMenu(true);将看不到菜单项。

34. PopupWindow:点击外部窗体时使其消失

popupWindow.setOutsideTouchable(true);

popupWindow.setFocusable(true);

popupWindow.setBackgroundDrawable(new BitmapDrawable());//重要: 点击使其消失,并且不会影响背景

35.用 SpannableStringBuilder处理TextView:

SpannableStringBuilder style=new SpannableStringBuilder(str);

style.setSpan(new ForegroundColorSpan(Color.argb(255, 12, 170, 218)),0,3,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

mTextView.setText(style);

注意:设置自定义color时,优先调用Color.argb方法(使用Color.rgb可能会出错)。

36.自定义Adapter继承自BaseAdapter时,ViewHolder使用静态类,非static的ViewHolder会导致ListView在滑动时比较卡。

37. java.lang.RuntimeException: Unable to destroy activity {com.demo.***.MainTabActivity}: java.lang.RuntimeException: Unable to destroy activity {com.demo.***.TabActivity01 }: java.lang.IllegalStateException: Activity has been destroyed

检查Activity的生命周期,对于ondestroy不要放不相关的代码。

38.ListView的item对某个widget进行触摸点击事件:

在item的布局中对相应的widget设置:

android:focusable="false"

android:focusableInTouchMode="false"

android:clickable="false"

主要考虑获取焦点的优先级,让widget在默认情况下不获取焦点。

39.EditText没有边框,聚焦时只有底部的边框出现:

在manifest.xml中看android:targetSdkVersions是否已设定。例如:要在4.0的平台上测试,而 android:targetSdkVersion=13(3.2平台),就会出现EditText缺失边框的现象。删除 android:targetSdkVersion标签即可。

40.对EditText,点击屏幕,隐藏软键盘:

对当前Activity的Layout设置id,然后重写onclick方法:

InputMethodManagerimm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(v.getWindowToken(),0);

41. android.view.WindowManager$BadTokenException:Unable to add window -- tokenandroid.app.LocalActivityManager$LocalActivityRecord@41226b10 is not valid; isyour activity running?

在Activity或View中,显示Dialog(AlertDialog),导致此错误。

1).如果构造Dialog使用的context是getApplication,改成相应的Activity,在Activity中进行添加view的操作。

2).如果使用了TabActivity(或者TabActivity里面嵌套TabAcitivity),context使用getParent。

【转】android UI设计的一些心得与问题解决(无效果图)的更多相关文章

  1. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  2. 详解 “Android UI”设计官方教程

    我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...

  3. 移动周报:十款最实用的Android UI设计工具

    上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...

  4. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  5. shape和selector是Android UI设计中经常用到的

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  6. Android UI设计

    Android UI设计--PopupWindow显示位置设置 摘要: 当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的 ...

  7. Android UI设计的基本元素有哪些

    在android app开发如火如荼的今天,如何让自己的App受人欢迎.如何增加app的下载量和使用量....成为很多android应用开发前,必须讨论的问题.而ui设计则是提升客户视觉体验度.提升下 ...

  8. (转载)Android UI设计之AlertDialog弹窗控件

    Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...

  9. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解

    做Android开发加起来差不多也有一年多的时间了,总是想写点自己在开发中的心得体会与大家一起交流分享.共同进步,刚开始写也不知该如何下手,仔细想了一下,既然是刚开始写,那就从一个软件给人最直观的感受 ...

随机推荐

  1. mysql笔记整理

    删除整个表 TRUNCATE TABLE 表名; 持久链接 自动提交

  2. centos wordpress

    How To Install Linux, nginx, MySQL, PHP (LEMP) stack on CentOS 6 https://www.digitalocean.com/commun ...

  3. C#加密NodeJS解密

    C#代码: class Program { static void Main(string[] args) { Console.WriteLine(", "abcdefghijkl ...

  4. How to use Android Activity's finish(), onDestory() and System.exit(0) methods

    Activity.finish() Calling this method will let the system know that the programmer wants the current ...

  5. p1205单词翻转-递归解决

    题目描述 Description 给出一个英语句子,希望你把句子里的单词顺序都翻转过来 输入描述 Input Description 输入包括一个英语句子. 输出描述 Output Descripti ...

  6. PythonChallenge 2:爬虫和正则表达式

    题目: 解题思路:题目里已经说的很清楚了,字符可能在网页的源代码里.右键查看网页源代码,发现其中有一段:find rare characters in the mess below.有些人是直接把下面 ...

  7. 【转】并查集&MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基 ...

  8. Understanding and Using Servlet Filters

    Overview of How Filters Work This section provides an overview of the following topics: How the Serv ...

  9. node.js 安装、图文详解

    网上的教程很多,有些模糊不清,有些版本太旧,有些是.exe安装,本文讲述windows系统下简单nodejs .msi环境配置.最新版是Current version: v0.10.26.官网下载地址 ...

  10. hdu 4412 Sky Soldiers DP

    动态规划,主要是用单调性求区间的最小期望. 代码如下: #include<iostream> #include<stdio.h> #include<algorithm&g ...