ไลบรารี่เป็นวิดเจ็ตที่สามารถกำหนดค่าได้สูงสำหรับการครอบตัดรูปภาพ
เพิ่มสิ่งนี้ลงในบล็อกการพึ่งพาของคุณ
compile 'com.steelkiwi:cropiwa:1.0.3'
โปรดดูแอปตัวอย่างสำหรับตัวอย่างการใช้งานห้องสมุด
ไลบรารีมีสถาปัตยกรรมแบบโมดูลาร์ ซึ่งทำให้กำหนดค่าได้สูง สำหรับข้อมูลเกี่ยวกับวิธีกำหนดค่า CropIwaView
โปรดดูส่วนด้านล่าง
หนึ่งในคุณสมบัติที่มีประโยชน์คือคุณไม่ต้องรอผลลัพธ์ - หลังจากคำขอครอบตัดเสร็จสิ้น เพียงสลับไปที่หน้าจออื่นและรอผลลัพธ์ในรูปแบบของการออกอากาศ
เพิ่ม CropIwa ให้กับ xml ของคุณ:
< com .steelkiwi.cropiwa.CropIwaView
android : id = " @+id/crop_view "
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
cropView . crop ( new CropIwaSaveConfig . Builder ( destinationUri )
. setCompressFormat ( Bitmap . CompressFormat . PNG )
. setSize ( outWidth , outHeight ) //Optional. If not specified, SRC dimensions will be used
. setQuality ( 100 ) //Hint for lossy compression formats
. build ());
ภูมิภาคที่ครอบตัดบันทึกการโทรกลับแล้ว เมื่อคำขอครอบตัดเสร็จสิ้น ระบบจะส่งการออกอากาศ คุณสามารถฟังได้โดยใช้อินสแตนซ์ CropIwaView
cropView . setCropSaveCompleteListener ( bitmapUri -> {
//Do something
});
cropView . setErrorListener ( error -> {
//Do something
});
หรือทำงานโดยตรงกับเครื่องรับกระจายเสียง ข้อดีคือสามารถใช้งานได้จากส่วนใดก็ได้ของแอป โดยที่คุณสามารถเข้าถึง Context
ได้
CropIwaResultReceiver resultReceiver = new CropIwaResultReceiver ();
resultReceiver . setListener ( resultListener );
resultReceiver . register ( context );
//Don't forget to unregister it when you are done
resultReceiver . unregister ( context );
คุณสามารถสมัครรับการเปลี่ยนแปลงในการกำหนดค่าของ CropIwaView
ผู้ฟังจะได้รับแจ้งทุกครั้งที่มีการเรียก . .apply()
cropIwaView . configureOverlay (). addConfigChangeListener ( listener );
cropIwaView . configureImage (). addConfigChangeListener ( listener )
app : ci_dynamic_aspect_ratio = "true|false"
cropView . configureOverlay ()
. setDynamicCrop ( enabled )
. apply ();
app : ci_draw_grid = "true|false"
cropView . configureOverlay ()
. setShouldDrawGrid ( draw )
. apply ();
app : ci_aspect_ratio_w = "16"
app : ci_aspect_ratio_h = "9"
cropView . configureOverlay ()
. setAspectRatio ( new AspectRatio ( 16 , 9 ))
. setAspectRatio ( AspectRatio . IMG_SRC ) //If you want crop area to be equal to the dimensions of an image
. apply ();
app : ci_initial_position = "centerCrop|centerInside"
cropView . configureImage ()
. setImageInitialPosition ( position )
. apply ();
//Value is a float from 0.01f to 1
cropIwaView . configureImage ()
. setScale ( scale )
. apply ();
app : ci_scale_enabled = "true|false"
cropView . configureImage ()
. setImageScaleEnabled ( enabled )
. apply ();
app : ci_translation_enabled = "true|false"
cropView . configureImage ()
. setImageTranslationEnabled ( enabled )
. apply ();
app : ci_crop_shape = "rectangle|oval"
cropView . configureOverlay ()
. setCropShape ( new CropIwaRectShape ( cropView . configureOverlay ()))
. setCropShape ( new CropIwaOvalShape ( cropView . configureOverlay ()))
. apply ();
app : ci_max_scale = "1f"
cropView . configureImage ()
. setMinScale ( minScale )
. setMaxScale ( maxScale )
. apply ();
app : ci_min_crop_width = "40dp"
app : ci_min_crop_height = "40dp"
cropView . configureOverlay ()
. setMinWidth ( dps )
. setMinHeight ( dps )
. apply ();
app : ci_border_width = "1dp"
app : ci_corner_width = "1dp"
app : ci_grid_width = "1dp"
cropView . configureOverlay ()
. setBorderStrokeWidth ( dps )
. setCornerStrokeWidth ( dps )
. setGridStrokeWidth ( dps )
. apply ();
app : ci_border_color = "#fff"
app : ci_corner_color = "#fff"
app : ci_grid_color = "#fff"
app : ci_overlay_color = "#fff"
cropView . configureOverlay ()
. setBorderColor ( Color . WHITE )
. setCornerColor ( Color . WHITE )
. setGridColor ( Color . WHITE )
. setOverlayColor ( Color . WHITE )
. apply ();
คุณสามารถทำงานกับวัตถุ Paint
ได้โดยตรง สิ่งนี้ทำให้คุณสามารถวาดเส้นตารางที่มีเอฟเฟกต์เส้นประได้
Paint gridPaint = cropView . configureOverlay ()
. getCropShape ()
. getGridPaint ();
gridPaint . setPathEffect ( new DashPathEffect ( new float [] { interval , interval }, 0 ));
คุณสามารถรับ Paint
อื่นๆ ได้ในลักษณะเดียวกัน
CropIwaOverlayConfig config = cropView . configureOverlay ();
CropIwaShape shape = config . getCropShape ();
shape . getGridPaint ();
shape . getBorderPaint ();
shape . getCornerPaint ();
คุณยังสามารถสร้างรูปร่างพื้นที่ครอบตัดแบบกำหนดเองได้ เพียงขยาย CropIwaShape
(สำหรับตัวอย่างอ้างถึง CropIwaOvalShape) และตั้งค่าอินสแตนซ์ของคลาสของคุณโดยใช้:
cropView . configureOverlay ()
. setCropShape ( new MyAwesomeShape ())
. apply ();
Copyright © 2017 SteelKiwi, http://steelkiwi.com
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.