android 公司app升级UI总结

这个月忙忙碌碌已快接近尾声,主要是公司的app进行项目重构以及UI升级。所以略作总结。

1、出现编译内存不够

 Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[2016-03-02 17:00:11 - EGStarSplash] Please check logcat output for more details.
[2016-03-02 17:00:11 - EGStarSplash] Launch failed on device: 0123456789ABCDEF
解决办法,肯定卸掉真机里面一些应用,包括你的app也卸载掉。

2、Android 如何在Java代码中手动设置控件的marginleft

a、定义LayoutParams

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);//定义一个LayoutParams
b、在LayoutParams中设置marginLeft

layoutParams.setMargins(20,0,0,0);//4个参数按顺序分别是左上右下

c、把这个LayoutParams设置给控件

mView.setLayoutParams(layoutParams); //mView是控件

其中说一下这里面的参数new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)

如果是父相对布局,那么就是RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);//定义一个LayoutParams

最后补充一点:

   FILL_PARENT,即填满(和父容器一样大小);
   WRAP_CONTENT,即包裹住组件就好。

layoutParams.setMargins(20,0,0,0);设置都是像素值,单位px。

为了使用不同机子的分辨率,需要把dip转换成px设置进去。

mLayoutParams.setMargins(0, 0, 10, dip2px(this,54)); 
	private static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    } 


3、布局分隔线的问题

使用android:divider="@drawable/shape_divider2"
         android:showDividers="beginning|end"

设置分割线间隔,有些时候能显示不出来end这条线是因为你设置子布局高度match_parent,

父布局又是50dp,就是不出来效果。这样你应该设置子布局49dp就出来了,如你的android:divider="@drawable/shape_divider2"是1dp的话。


4、基类activity的全局变量继承问题

android 写activity一般都是有一个先一个基础类activity。然后项目中所有activity都是继承这个基础的。

如果在定义全局变量,例如protected boolean mItemCanLongClick = true;

那么要在子类里面,初始化改变这个值。一定要在前面才有效果。

// Item是否支持长按

super.mItemCanLongClick = false;
super.onCreate(savedInstanceState);


5、滚动条的隐藏,包括listview

Android Listview 隐藏滚动条在<ListView>标签中设置属性。
android:fastScrollEnabled="false"

以下属性scrollbars可以设置为none也可以不设置为none。效果会有点不同。根据具体情况决定是否设置为none。
android:scrollbars="none"


6、xml设置背景边框颜色,幅度,背景颜色

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white" />
    <stroke
        android:width="1dip"
        android:color="@color/title_bar_bk_color" />

    <padding
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

</shape>

7、xml设置button或者布局点击效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/ui_blue_buttom_select_color" android:state_pressed="true"></item>
    <item android:drawable="@color/ui_blue_buttom_color" android:state_enabled="false"></item>
    <item android:drawable="@color/ui_blue_buttom_color" android:state_enabled="true"></item>

</selector>

8、android里TextView加下划线

tvTest.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
tvTest.getPaint().setAntiAlias(true);//抗锯齿


9、android Textview属性

1、在Android TextView中有个内容过长加省略号的属性,即ellipsize,

用法如下:
在xml中:
android:ellipsize="end"     省略号在结尾
android:ellipsize="start"   省略号在开头
android:ellipsize="middle"   省略号在中间
android:ellipsize="marquee"  跑马灯
最好加一个TextView显示行数的约束,例如:android:singleline="true"或者android:maxLines="1"

在java文件中:

tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
2、android textview长按或者单击可以复制
ndroid:textIsSelectable="true" 

10、android EditView属性

1、android:ems
android:ems = "10" 
设置TextView或者Edittext的宽度为10个字符的宽度。当设置该属性后,控件显示的长度就为10个字符的长度,超出的部分将不显示。
设置为10时,最多编辑 10个em ,一个em单位是 两个inch ,但是随着自动调整,在Android中 em代表‘M’的数量 。
但是 EditText的属性 ,只有在 android:layout_width=“wrap_content” 时,才会显示;
如果是 android:layout_width=“match_parent” 时,则不会有变化。

2、android:maxLength
android:maxLength="3"
即限制最大输入字符个数为10

3、requestFocus
mText.setFocusable(true);
xml里面输入框设置默认获取焦点 <requestFocus />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent">
            <requestFocus />
        </TextView>

4、setSelection设置光标
怎样把光标放在EditText中文本的末尾处?
mText.setSelection(mText.getText().length());
android:inputType="numberSigned|numberDecimal"


5、行距
1、android:lineSpacingExtra 
设置行间距,如"8dp"。
2、android:lineSpacingMultiplier 
设置行间距的倍数,如"1.5"。


UI的升级,一定要找出共性的界面,或者很多有类似界面,进行统一重构后,继承就能不断复用,便于后面的新功能添加以及维护。还有一定要再三跟UI设计师确定升级方案。不然后面修改又是你。哈哈。。。

11、屏蔽HOME键

初始化

	public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; //需要自己定义标志
        this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码

重写

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_HOME) {
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

权限

  <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值