Android
来源:互联网 发布:淘宝魔镜软件管用吗 编辑:程序博客网 时间:2024/06/06 00:25
推荐阅读:Android studio的文件创建
res/anim:定义补间动画
res/animator:定义属性动画
res/drawable目录下:可定义帧动画、shape、selector、和图片
res/values目录下:可创建
arrays(字符串数组)、attrs(自定义view的属性)、colors(颜色)、demens(尺寸)、strings(字符串)、styles(主题或布局参数)。
res/menu:定义菜单
res/raw:存放音乐、视频等
assets:注意不在res目录下,且与java、res、manifests同等级。
动画的定义
推荐阅读: 属性动画
1、res/anim:补间动画
1、定义:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="1.0" android:toXScale="0.5" android:fromYScale="1.0" android:toYScale="0.5" android:pivotX="50%" android:pivotY="50%" android:duration="500" /> <alpha android:interpolator="@android:anim/accelerate_interpolator" android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" /></set>
2、引用:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);tv.setAnimation(animation);
2、res/drawable:帧动画
1、定义
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@mipmap/pull_end_image_frame_01" android:duration="100" /> <item android:drawable="@mipmap/pull_end_image_frame_02" android:duration="100" /> <item android:drawable="@mipmap/pull_end_image_frame_03" android:duration="100" /> <item android:drawable="@mipmap/pull_end_image_frame_04" android:duration="100" /> <item android:drawable="@mipmap/pull_end_image_frame_05" android:duration="100" /></animation-list>
2、引用
/* res/drawable 目录下的帧动画 */tv.setBackgroundResource(R.drawable.animation_refresh_second);AnimationDrawable animationDrawable = (AnimationDrawable) tv.getBackground();animationDrawable.start();//开始播放if (animationDrawable != null && animationDrawable.isRunning()) { animationDrawable.stop(); //停止播放}
3、res/animator : 属性动画
1、定义
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="sequentially"> <objectAnimator android:duration="2000" android:propertyName="translationX" android:valueFrom="-500" android:valueTo="0" android:valueType="floatType" /> <set android:ordering="together"> <objectAnimator android:duration="3000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" android:valueType="floatType" /> <set android:ordering="sequentially"> <objectAnimator android:duration="1500" android:propertyName="alpha" android:valueFrom="1" android:valueTo="0" android:valueType="floatType" /> <objectAnimator android:duration="1500" android:propertyName="alpha" android:valueFrom="0" android:valueTo="1" android:valueType="floatType" /> </set> </set></set>
2、使用
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator); animator.setTarget(tv); animator.start();
属性动画一般在代码中设置,如下:
AnimatorSet set = new AnimatorSet(); //平移 ObjectAnimator anim1 = ObjectAnimator.ofFloat(tv, "translationX", -500f, 0f); anim1.setDuration(2000); ObjectAnimator anim2 = ObjectAnimator.ofFloat(tv, "translationY", 0f, -500f); anim2.setDuration(2000); //透明度 ObjectAnimator anim3 = ObjectAnimator.ofFloat(tv, "alpha", 1f, 0f);//逐渐消失 anim3.setDuration(2000); //旋转 ObjectAnimator anim4 = ObjectAnimator.ofFloat(tv, "rotationX", 180f, 0f); anim4.setDuration(2000); ObjectAnimator anim5 = ObjectAnimator.ofFloat(tv, "rotationY", 0f, 180f); anim5.setDuration(2000); //缩放 ObjectAnimator anim6 = ObjectAnimator.ofFloat(tv, "scaleX", 0.5f);//x轴缩小一半 anim6.setDuration(1000); ObjectAnimator anim7 = ObjectAnimator.ofFloat(tv, "scaleY", 0.5f);//y轴缩小一半 anim7.setDuration(1000); set.play(anim1).before(anim2); set.play(anim3).before(anim4); set.play(anim5).before(anim6); set.play(anim1).before(anim7); set.start();
res/value/XXX
1、res/value/arrays:字符串数组
推荐阅读:Android:entries的使用
1、定义
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="week_day"> <item>周日</item> <item>周一</item> <item>周二</item> <item>周三</item> <item>周四</item> <item>周五</item> <item>周六</item> </string-array></resources>
2、引用
/* res/value/arrays 目录下 */String[] items = getResources().getStringArray(R.array.week_day);
2、res/value/attrs:自定义view的自定义属性
1、定义
<?xml version="1.0" encoding="utf-8"?><resources> <!--自定义属性--> <declare-styleable name="TagFlowLayout"> <attr name="auto_select_effect" format="boolean"></attr> <attr name="max_select" format="integer"></attr> <attr name="gravity"> <enum name="left" value="-1" /> <enum name="center" value="0" /> <enum name="right" value="1" /> </attr> </declare-styleable></resources>
2、引用:自定义view的构造方法中
public TagFlowLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); //读取attrs中资源 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.TagFlowLayout); //第一个参数,读取attrs中参数名,是以“样式名_参数名”的形式。 //第二个参数,是默认值,如果从xml中获取不到则使用默认值。 mAutoSelectEffect = ta.getBoolean(R.styleable.TagFlowLayout_auto_select_effect, true); //TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性 ta.recycle(); }
3、res/value/colors:颜色
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color></resources>
4、res/value/dimens:尺寸
<?xml version="1.0" encoding="utf-8"?><resources> <dimen name="padding_small">8dp</dimen> <dimen name="padding_medium">8dp</dimen> <dimen name="padding_large">16dp</dimen></resources>
5、res/value/strings :字符串
<resources> <string name="app_name">MyResource</string> <!-- 下载新版app --> <string name="download_percent">下载:&lt;font color="#ff0000"&gt;%1$s&lt;/font&gt;%%</string> <!-- 注册 --> <string name="str_register_now">我要注册</string> <string name="str_register_now2">立即注册</string></resources>
6、res/value/styles:自定义APP的主题,或布局参数
<resources> <!--定义APP主题--> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <!--定义布局参数--> <style name="text_white_8"> <item name="android:textColor">#ffffff</item> <item name="android:textSize">8dp</item> </style> <style name="text_white_10"> <item name="android:textColor">#ffffff</item> <item name="android:textSize">10dp</item> </style></resources>
res/value下的引用:
res/value根节点都是resource
/* res/value/colors 目录下 */int colors = R.color.colorAccent;/* res/value/dimens 目录下 */int dimens = R.dimen.padding_small;/* res/value/strings 目录下 */int strings = R.string.app_name;/* res/value/styles 目录下 */int styles = R.style.AppTheme;
res/drawable:定义shape或selector
推荐阅读:Android - shape 使用
定义:
normal_bg.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#21BF64" /> <corners android:radius="30dp" /> <padding android:bottom="2dp" android:left="10dp" android:right="10dp" android:top="2dp" /></shape>
checked_bg.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#FFFFFF" /> <corners android:radius="30dp" /> <padding android:bottom="2dp" android:left="10dp" android:right="10dp" android:top="2dp" /></shape>
btn_login_selector.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/checked_bg" android:state_focused="true"></item> <item android:drawable="@drawable/checked_bg" android:state_pressed="true"></item> <item android:drawable="@drawable/normal_bg"></item></selector>
使用:设置背景
//xml中android:background="@drawable/normal_bg"//或android:background="@drawable/btn_login_selector"//代码中tv.setBackgroundResource(R.drawable.normal_bg);//或tv.setBackgroundResource(R.drawable.btn_login_selector);
res/raw:
raw属于隐藏文件夹,他放的是图片、音乐等资源(可以直接复制到设备中,不会被编译,并且不会被自动压缩,他会在R.java中生成对应的唯一ID);它区别于assets文件夹,assets文件夹用于存放需要打包到应用程序的静态文件,给文件夹下的文件不会被影射到R.java中(即不会生成对应的id)
引用:
InputStream is = getResources().openRawResource(R.raw.refresh_logo);
assets:
AssetManager am = null; am = getAssets(); InputStream is = am.open("filename");
res/raw和assets的相同点:
1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.Java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
- Android
- android
- Android
- android
- android
- Android
- Android
- android
- android
- android
- Android
- Android
- android!!!
- android
- android
- android
- android
- android:
- leetcode[Binary Watch]
- Android在子线程更新UI界面
- springboot 使用自己的fastJson框架
- 动态规划7:最长上升子序列LIS
- 乱七八糟
- Android
- python连接mysql和sqlsever驱动
- 关于不同像素设备替换不同图片的问题
- 最短路问题,多源、SPFA变形
- Linux下守护进程
- netty 发送 超过 1024 数据
- 将beyond compare设置为svn的代码比较工具
- vivado【3】
- TGP无限验证码怎么办?