MCPcopy Index your code
hub / github.com/cesards/SuperImageView

github.com/cesards/SuperImageView @1.0.2.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.2.1 ↗ · + Follow
121 symbols 257 edges 21 files 26 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CropImageView

Hex.pm Platform

An ImageView that supports different kind of cropping rather than the only Android is currently supporting: centerCrop

Using this library, you can crop your desired image by sides described below:

Crop options

Development idea borns at the point in [Kerad Games] we needed images cropped by somewhere no matter the image size.

The original images we had to deal with (we wanted the half size of the ball shown whatever screen size), below

Menu Left Side Menu Right Side

Here are some screenshots what we got thanks to this widget :-)

Menu Post Left Side Menu Post Right Side Menu Centered

Usage

Step 1

Gradle
dependencies {
   compile 'com.cesards.android:CropImageView:1.0.2'
}
Maven
<dependency>
   <groupId>com.cesards.android</groupId>
   <artifactId>CropImageView</artifactId>
   <version>1.0.2</version>
   <type>aar</type>
</dependency>

Step 2

Define in xml:

<com.cesards.cropimageview.CropImageView
   xmlns:custom="http://schemas.android.com/apk/res-auto"
   android:id="@+id/imageView1"
   android:src="https://github.com/cesards/SuperImageView/raw/1.0.2.1/@drawable/photo1"
   custom:crop="value" />

where value can take values

topLeft|centerLeft|bottomLeft|topRight|centerRight|bottomRight|centerTop|centerBottom

Or in code:

CropImageView cropImageView = new CropImageView(CropActivity.this);
final Resources res = getResources();
cropImageView.setImageDrawable(res.getDrawable(images[position]));
final CropImageView.CropType cropType = imageCrops[position];
cropImageView.setCropType(cropType);

Performance tests (using Hugo)

Center Crop Sample (ImageView)

V/TestForegroundImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1557)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1557)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1557)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = false
V/TestForegroundImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1557)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = false
V/TestForegroundImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1701)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1701)
V/TestForegroundImageView﹕ ⇠ setFrame [0ms] = true`

Custom Crop Sample (CropImageView)

V/TestForegroundCropImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1557)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundCropImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1557)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundCropImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1557)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = false
V/TestForegroundCropImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1557)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = false
V/TestForegroundCropImageView﹕ ⇢ setFrame(l=0, t=0, r=1080, b=1701)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = true
V/TestForegroundCropImageView﹕ ⇢ setFrame(l=1080, t=0, r=2160, b=1701)
V/TestForegroundCropImageView﹕ ⇠ setFrame [0ms] = true

Results: code used does not cause overhead in the UI thread.

ChangeLog

  • 1.0.2.1 (2015-10-22)
  • ImageView crashes in devices with API < 18 due to a @TargetApi annotation
  • 1.0.2 (2015-10-22)
  • Changed minSdkVersion to 7
  • Solved a bug related with ImageView and API < 18
  • 1.0.1 (2015-02-17)
  • Changed Samples UI and removed unused resources.
  • Added performance tests to Samples
  • Added code styles for contributions
  • Improved CropImageViewwidget. RemovedonLayout()overhead.ImageView'sonLayout()is emoty, so we only need logic insetFrame()` method
  • 1.0.0 (2015-02-15)
  • Initial release. (minSdkVersion="14")

Developed By

Follow me on Twitter Follow me on Google Plus Add me to Linkedin

Who's using it

Do you want to contribute?

I'm pretty sure you there are some awesome hidden features you need in your daily dev life. Just let me know or collaborate to improve this librar

I'd like to improve this library with your help, there are some new features to implement waiting for you ;)

If you want to contribute, you should use my code styles available in the root of the project!

License

Copyright 2015 César Díez Sánchez

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Extension points exported contracts — how you extend this code

ImageMaths (Interface)
(no doc) [4 implementers]
cropimageview/src/main/java/com/cesards/cropimageview/ImageMaths.java
OnVisibilityChangeListener (Interface)
A callback interface used to listen for system UI visibility changes.
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java

Core symbols most depended-on inside this repo

setIsShowing
called by 6
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java
setForeground
called by 4
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/widget/ForegroundCropImageView.java
hide
called by 4
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java
removeQueuedRunnables
called by 3
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java
initImageView
called by 3
cropimageview/src/main/java/com/cesards/cropimageview/CropImageView.java
getCrop
called by 3
cropimageview/src/main/java/com/cesards/cropimageview/CropImageView.java
show
called by 2
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java
parseAttributes
called by 2
cropimageview/src/main/java/com/cesards/cropimageview/CropImageView.java

Shape

Method 94
Class 24
Interface 2
Enum 1

Languages

Java100%

Modules by API surface

cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelper.java22 symbols
cropimageview/src/main/java/com/cesards/cropimageview/CropImageView.java14 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelperImplHC.java10 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/activity/CropActivity.java10 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/widget/ForegroundCropImageView.java9 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/ABaseTransformer.java8 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelperImplJB.java6 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/util/SystemUiHelperImplICS.java5 symbols
cropimageview/src/main/java/com/cesards/cropimageview/PreApi18CropImage.java4 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/activity/MainActivity.java4 symbols
cropimageview/src/main/java/com/cesards/cropimageview/API18Image.java3 symbols
cropimageview-samples/src/main/java/com/cesards/samples/cropimageview/widget/TestForegroundImageView.java3 symbols

For agents

$ claude mcp add SuperImageView \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact