UI的使用(究竟是想到了再学,还是学到了再用,其实都有吧)
把基本的几个组件也放在这里讲了,包括TextView,Button,ImageView等。
真的是不多说废话,提到必要的属性,其他用到再查即可
ProgressBar
style="?android:progressBarStyleHorizontal"<span style="white-space:pre"> </span>//像这种系统属性格式,目前我用的不多,用了几次查几次,感觉毫不熟悉,AlertDialog
屏蔽掉其他控件的交互能力,很像dialog式的activity。
ProgressDialog
可能我看的项目不对,需要显示进度的界面,基本都是其他方法实现的,并没有用过这个组件。
四种基本布局(后来无意中看到新加了TabLayout等,不过就不算基本布局了吧)
LinearLayout,RelativeLayout两个用的很多,书上也写得挺少,就没啥好记了
FrameLayout:(在应用中偶尔看到,不过我尽量是用RelativeLayout代替使用,有点怕)
在这个布局中的空间,按后添加的显示在上面的形式,把所有子组件显示在布局的左上角。
TableLayout:好像说这个的编译效率还是耗时等性能上都比较差。具有拉伸属性。
创建自定义控件
标题栏的复用为例,
通过include方法(这个开始还用过,后来因为标题栏也有很多不同,就没用了)可以在xml中快速复用
但是代码中的绑定呢,可以重写布局控件来快速实现,注意xml中要引用自定义的TitleLayout
public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs){ super(context,attrs); LayoutInflater.from(context).inflate(R.layout.title,this);//每次创建的时候,就直接内部实现返回按钮的相关代码,不需要每次都写了 Button titleBack=(Button)findViewById(R.id.title_back); titleBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity)getContext()).finish();// } }); } }
第一次接触的时候,觉得这个组件真的是好难,adapter神马鬼啊。浏览大半天网页根本不明白啊,后来发现recycleView是代替它才出现的
干脆去用recycleView,用到后面发现不成熟,前人足迹太难找,又回头用ListView。。前前后后从不会到使用,三四天估计还是有的
最近因为需要又找到了个ExpandableListView。也就大半天就会用了,虽然不是一用就触类旁通,慢慢进步还是有的。。。
ListView加载过程中的优化,这个在很多实例中都可以看到,还是再记一遍吧,对每个子项进行处理。
@Override public View getView(int position, View convertView, ViewGroup parent) { Person person=getPerson(position); View view; ViewHolder viewHolder; if(convertView==null){ view= LayoutInflater.from(getContext()).inflate(<span style="color:#ff0000;"><strong>R.id.layout</strong></span>,null); viewHolder=new ViewHolder(); viewHolder.imageView=(ImageView)view.findViewById(R.id.back); view.setTag(viewHolder); }else{ view=convertView; viewHolder=(ViewHolder)view.getTag(); } viewHolder.imageView.setImageResource(<span style="color:#ff0000;"><strong>R.drawable.image</strong></span>); return view; } class ViewHolder{ ImageView imageView; TextView textView; }红字加粗部分,原文是使用一个实体类存储、或者构造的时候传递resourceId来代替的,不知道有什么好处?
单位和尺寸(越来越有沾边就讲的感觉啊)
px,dp,sp在使用的时候比较容易明白
获取屏幕的密度值:
float xdpi=getResources().getDisplayMetrics().xdpi; float ydpi=getResources().getDisplayMetrics().ydpi;安卓规定,160dpi的屏幕上,1dp等于1px;320dpi的屏幕上,1dp等于2px。
于是这样子就可以在不同密度的手机上保持显示比例一致。
哇塞!好神奇有木有~
.9文件(这个也是蛮6的)
可以对png图片指定一定的长宽范围,注意这个范围可以不连续,指定了之后,在Android的使用中,可以只拉伸、收缩指定的部分。
自带的插件在SDK目录下的tools中,draw9patch.bat