Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.

裁剪框样式修改

凌伊 edited this page Aug 28, 2019 · 2 revisions

一般效果

一般我们按照步骤接入了这个组件之后,正常使用功能都没有问题; 但是裁剪框就无法达到Demo中的效果,我们接入的效果:

默认效果

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中的方法来:

  1. 创建/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>
  1. 在AndroidManifest.xml设置app的theme
<application
	...
    android:theme="@style/CustomTheme">
</application>

注意,这里不是写在Activity的android:theme上,否者没有效果。

第二种方法

  1. 不创建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>
  1. 在AndroidManifest.xml设置app的theme
<application
	...
    android:theme="@style/CustomTheme">
</application>
Clone this wiki locally