andriod day02

2019-08-14  本文已影响0人  nonooon

1.fill_parent  wrap_content match_parent

    1)fill_parent

    设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。

    2) wrap_content

    设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。

    3)match_parent

    Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了

2.使用android:gravity来指定文字的对齐方式,可选值有top、bottom、left、right、center等,可以用“|”来同时指定多个值

3.android:layout_gravity和android:gravity的使用区别。

    android:gravity:

    这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,

    android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左部。

    android:layout_gravity:

    这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:layout_gravity="left"属性时,表示该Button按钮将位于界面的左部。

4.布局共有属性 https://www.jianshu.com/p/4ce3a81b559d

5.Android控件的可见属性。所有的Android控件都具有这个属性,可以通过android:visibility进行指定,可选值有3种:visible、invisible和gone

    visible表示控件是可见的,这个值是默认值,不指定android:visibility时,控件都是可见的。invisible表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅不可见,而且不再占用任何屏幕空间

6.LinearLayout本身已经支持按比例指定控件的大小了,因此百分比布局只为FrameLayout和RelativeLayout进行了功能扩展,提供了PercentFrameLayout和PercentRelativeLayout这两个全新的布局。

    dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:24.2.1'

    compile 'com.android.support:percent:24.2.1'

    testCompile 'junit:junit:4.12'

}

7.view 继承关系。

可以看到,我们所用的所有控件都是直接或间接继承自View的,所用的所有布局都是直接或间接继承自ViewGroup的。View是Android中最基本的一种UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在View的基础之上又添加了各自特有的功能。而ViewGroup则是一种特殊的View,它可以包含很多子View和子ViewGroup,是一个用于放置控件和布局的容器

8.在layout xml中引入其他自定义xml视图 ,使用 <include layout="@layout/XXXXX" />

9. Activity标题栏隐藏

public class MainActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ActionBar actionbar = getSupportActionBar();

        if (actionbar != null) {

            actionbar.hide();

        }

    }

}

10.MainActivity.this:表示MainActivity对象,一般用在内部类中指示外面的this,如果在内部类直接用this,指示的是内部类本身。因为MainActivity继承Activity,而Activity继承Context,所以它也可以用来提供Activity Contex;

this:表示当前对象;一般而言,在哪个类中调用,就是指向该对象。

getContext():这个是View类中提供的方法,在继承了View的类中才可以调用,返回的是当前View运行在哪个Activity Context中。

getActivity():获得Fragment依附的Activity对象。Fragment里边的getActivity()不推荐使用原因如下:这个方法会返回当前Fragment所附加的Activity,当Fragment生命周期结束并销毁时,getActivity()返回的是null,所以在使用时要注意判断null或者捕获空指针异常

11.列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。https://www.cnblogs.com/zhydate/articles/4507355.html

    在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。    

    而列表的显示需要三个元素:

    1.ListVeiw 用来展示列表的View。

    2.适配器用来把数据映射到ListView上的中介。

    3.数据    具体的将被映射的字符串,图片,或者基本组件。

12.LayoutInflater.inflate方法的参数解析 https://www.jianshu.com/p/e492044a7cf2

13.ListView的扩展性也不够好,它只能实现数据纵向滚动的效果,如果我们想实现横向滚动的话,ListView是做不到的

14.要使用RecyclerView这个控件,首先需要在项目的build.gradle中添加相应的依赖库才行

    dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:24.2.1'

    compile 'com.android.support:recyclerview-v7:24.2.1'

    testCompile 'junit:junit:4.12'

}

15碎片(Fragment)是一种可以嵌入在活动当中的UI片段

16.调用FragmentManager的findFragmentById()方法,可以在活动中得到相应碎片的实例,然后就能轻松地调用碎片里的方法了

17.在每个碎片中都可以通过调用getActivity()方法来得到和当前碎片相关联的活动实例

18.既然碎片和活动之间的通信问题已经解决了,那么碎片和碎片之间可不可以进行通信呢?

    说实在的,这个问题并没有看上去那么复杂,它的基本思路非常简单,首先在一个碎片中可以得到与它相关联的活动,然后再通过这个活动去获取另外一个碎片的实例,这样也就实现了不同碎片之间的通信功能,因此这里我们的答案是肯定的。

19.有的时候我们希望可以更加灵活地为不同设备加载布局,不管它们是不是被系统认定为large,这时就可以使用最小宽度限定符(Smallest-width Qualifier)了

    

20.

上一篇下一篇

猜你喜欢

热点阅读