当前位置: 编程技术>移动开发
本页文章导读:
▪layer-list跟include的使用 layer-list和include的使用
layer-list,include,merge使用,记录一下转自:http://wang-peng1.iteye.com/blog/558646,http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerListlayer-list是一个静态的展示,select.........
▪ import跟@class的区别 import和@class的区别
二者的区别在于:1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用.........
▪ 获取短信跟通话记录 获取短信和通话记录
Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER); String strUriInbox = "content://sms/inbox"; Uri uriS.........
[1]layer-list跟include的使用
来源: 互联网 发布时间: 2014-02-18
layer-list和include的使用
layer-list,include,merge使用,记录一下
转自:http://wang-peng1.iteye.com/blog/558646,
http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList
layer-list是一个静态的展示,selector是一个动态的展示。
当我们想把多个图层叠在一起现身的时候,可以使用layer-list,第一个item排在最下层,第二个item排在上面,当然还可以排三层、四层......,item之间最好产生距离,不然上层的会挡住下层的,字面上是多个层,也就是你可以把多个layer放在一起然后一其显现出来 如qqw.xml
1.代码实现方式:
2.layer-list.xml方式:
然后就可以在别处引用了
例如在 android:style/Widget.ProgressBar.Large 或者其他的progressbar风格
而include的使用就是为了降低 重复书写同一个布局而使用的引用,当然他还有另一优点就是和merge的混合使用 当你想添加一个布局而这个布局本身已经有了一个layout你想直接在这个layout下添控件,而你另一个xml中必须有一个layout ,如果你直接引用include这个xml那么就会多了一个layout ,所以这时候你应该把控件填写在merge中,这样就可以直接加入到原来的layout中了。
track_list_item_common.xml
从上面的代码可以看到 merge是不需要merge的
layer-list,include,merge使用,记录一下
转自:http://wang-peng1.iteye.com/blog/558646,
http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList
layer-list是一个静态的展示,selector是一个动态的展示。
当我们想把多个图层叠在一起现身的时候,可以使用layer-list,第一个item排在最下层,第二个item排在上面,当然还可以排三层、四层......,item之间最好产生距离,不然上层的会挡住下层的,字面上是多个层,也就是你可以把多个layer放在一起然后一其显现出来 如qqw.xml
1.代码实现方式:
Resources r = getResources(); Drawable[] layers = new Drawable[2]; layers[0] = r.getDrawable(R.drawable.cor_info); layers[1] = r.getDrawable(R.drawable.icon); LayerDrawable layerDrawable = new LayerDrawable(layers); ((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);
2.layer-list.xml方式:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" /> --> <item> <shape> <solid android:color="#FF00ff00" /> <gradient android:useLevel="true" android:type="sweep" android:startColor="#ff000000" android:endColor="#ffff0000" /> </shape> </item> <item> <rotate android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="80" android:drawable="@drawable/icon" /> </item> </layer-list>
然后就可以在别处引用了
<ImageButton android:id="@+id/btnFindMe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@drawable/qqw"/>
例如在 android:style/Widget.ProgressBar.Large 或者其他的progressbar风格
<style name="progressBarStyleSmall" parent="android:style/Widget.ProgressBar.Large"> <item name="android:indeterminateDrawable">@drawable/progress</item> </style>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- <item android:drawable="@android:drawable/progress_circular_background" />--> <!-- <item> <shape android:shape="ring" android:innerRadiusRatio="3.4" android:thicknessRatio="6.0"> <gradient android:useLevel="true" android:type="sweep" android:startColor="#ff000000" android:endColor="#ffffffff" /> </shape> </item> --> <item> <rotate android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="370" android:drawable="@drawable/load2" /> </item> </layer-list>
而include的使用就是为了降低 重复书写同一个布局而使用的引用,当然他还有另一优点就是和merge的混合使用 当你想添加一个布局而这个布局本身已经有了一个layout你想直接在这个layout下添控件,而你另一个xml中必须有一个layout ,如果你直接引用include这个xml那么就会多了一个layout ,所以这时候你应该把控件填写在merge中,这样就可以直接加入到原来的layout中了。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="64dip" android:gravity="center_vertical" android:ignoreGravity="@+id/icon"> <include layout="@layout/track_list_item_common" />; </RelativeLayout>
track_list_item_common.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/icon" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="4dip" android:layout_width="60px" android:layout_height="60px"/> ... </merge>
从上面的代码可以看到 merge是不需要merge的
[2] import跟@class的区别
来源: 互联网 发布时间: 2014-02-18
import和@class的区别
二者的区别在于:
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
二者的区别在于:
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
[3] 获取短信跟通话记录
来源: 互联网 发布时间: 2014-02-18
获取短信和通话记录
Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI,
null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
String strUriInbox = "content://sms/inbox";
Uri uriSms = Uri.parse(strUriInbox);
Cursor c = context.getContentResolver().query(
uriSms,
new String[] { "_id", "thread_id", "address",
"person", "date", "body" }, null, null,
null);
据说是这样
Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI,
null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
String strUriInbox = "content://sms/inbox";
Uri uriSms = Uri.parse(strUriInbox);
Cursor c = context.getContentResolver().query(
uriSms,
new String[] { "_id", "thread_id", "address",
"person", "date", "body" }, null, null,
null);
据说是这样
最新技术文章: