android ui界面设计的一些心得与问题解决

本文介绍了Android应用开发中UI设计及交互方面的多个实用技巧,包括如何调整Button的透明度、设置背景图片、处理EditText的边框及字符输入等问题,并探讨了布局优化、进程管理等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    半透明

    透明

    其他透明度:在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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值