This repository has been archived by the owner on Jan 7, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
裁剪框样式修改
凌伊 edited this page Aug 28, 2019
·
2 revisions
一般我们按照步骤接入了这个组件之后,正常使用功能都没有问题; 但是裁剪框就无法达到Demo中的效果,我们接入的效果:
Demo中的效果:
扒源码找到了裁剪框属性的获取方法:HighlightView.initStyles()
中的方法
private void initStyles(Context context) {
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.cropImageStyle, outValue, true);
TypedArray attributes = context.obtainStyledAttributes(outValue.resourceId, R.styleable.CropImageView);
try {
showThirds = attributes.getBoolean(R.styleable.CropImageView_showThirds, false);
showCircle = attributes.getBoolean(R.styleable.CropImageView_showCircle, false);
highlightColor = attributes.getColor(R.styleable.CropImageView_highlightColor,
DEFAULT_HIGHLIGHT_COLOR);
handleMode = HandleMode.values()[attributes.getInt(R.styleable.CropImageView_showHandles, 0)];
} finally {
attributes.recycle();
}
}
结合example例子,可以找到在values文件夹下有一个theme.xml的文件,找到了修改样式的具体地方,接下来仿照例子修改即可;
修改样式有一下两种方式,主要是是否需要创建一个theme.xml文件的问题
这种方法直接按照demo中的方法来:
- 创建/src/main/res/values/theme.xml文件,这里与demo中不一样的是parent需要修改为你自己的AppTheme如:parent="AppTheme"
<resources xmlns:tools="http://schemas.android.com/tools">
<style tools:ignore="NewApi" name="CustomTheme" parent="AppTheme">
<item name="cropImageStyle">@style/Widget.CropImageView</item>
</style>
<style name="Widget.CropImageView" parent="android:Widget">
<item name="showThirds">false</item>
<item name="showCircle">false</item>
<item name="showHandles">always</item>
<item name="highlightColor">@color/highlight</item>
</style>
</resources>
- 在AndroidManifest.xml设置app的theme
<application
...
android:theme="@style/CustomTheme">
</application>
注意,这里不是写在Activity的android:theme上,否者没有效果。
- 不创建theme.xml,直接在styles.xml中配置cropImageStyle属性
<resources>
<!-- 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>
<item name="cropImageStyle">@style/Widget.CropImageView</item>
</style>
<style name="Widget.CropImageView" parent="android:Widget">
<item name="showThirds">false</item>
<item name="showCircle">false</item>
<item name="showHandles">always</item>
<item name="highlightColor">@color/highlight</item>
</style>
</resources>
- 在AndroidManifest.xml设置app的theme
<application
...
android:theme="@style/CustomTheme">
</application>