入门Android开发--第一行代码--笔记系列(五)

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();//
            }
        });
    }
}

ListView
(感觉上面这个文不对题,现在这个又跳回来了。。。)

第一次接触的时候,觉得这个组件真的是好难,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


你可能感兴趣的:(入门Android开发--第一行代码--笔记系列(五))