用于壁纸应用的Android裁剪/缩放/平移库?类似于Nova Launcher“设置壁纸”屏幕

时间:2014-05-28 12:18:15

标签: android android-layout crop wallpaper pinchzoom

我一直在开发壁纸应用程序,它可以获取一些壁纸(通过我选择的API),为用户提供共享功能,直接设置为壁纸(如果支持则可滚动)或编辑和设置图片。

此编辑屏幕是我遇到一些错误/问题的地方。

我需要用户能够根据自己的喜好裁剪/缩放/平移图像并将其设置为壁纸。与Nova壁纸的工作方式类似,如果裁剪选择减少,整个图像将相应地放大到该选择。所有这些都发生在我相信的单一图像视图中。

但是,就我而言,我碰巧使用了两个图像视图,一个用于裁剪,另一个用于缩放。 裁剪库:github-dot-com / edmodo / cropper /

一旦用户裁剪,第二个图像视图将填充来自裁剪器的选择位图。此imageview用于缩放或平移。 zoom / pan library:github-dot-com / jasonpolites / gesture-imageview

以下是该屏幕的布局: http://i.stack.imgur.com/wnjcP.jpg

代码:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:gesture-image="http://schemas.polites.com/android"
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout 
android:id="@+id/mylayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:orientation="vertical"

tools:context=".MainActivity" >

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/Button_crop"
        style="@style/RoboTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:text="@string/crop"
        android:textColor="#33B5E5"
        android:textSize="12sp" />

    <ImageButton
        android:id="@+id/Button_rotate_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/rotate_left" />

    <ImageButton
        android:id="@+id/Button_rotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/rotate_right" />

     <Button
        android:id="@+id/Button_setother"
        style="@style/RoboTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:text="@string/setother"
        android:textColor="#33B5E5"
        android:textSize="12sp" />


</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:id="@+id/checkboxlayout">

     <CheckBox
         android:id="@+id/scrollable"
         style="@style/RoboTheme"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textColor="#33B5E5"
         android:textSize="12sp"
         android:checked="false"
         android:text="Scrollable" />



     <Button
        android:id="@+id/Button_setwallpaper"
        style="@style/RoboTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:text="@string/setwallpaper"
        android:textColor="#33B5E5"
        android:textSize="12sp" />

 </LinearLayout>


 <com.edmodo.cropper.CropImageView
         xmlns:custom="http://schemas.android.com/apk/res-auto"
         android:id="@+id/CropImageView"
         android:layout_width="wrap_content"
         android:layout_height="0dp"
         android:layout_weight="1"
         android:layout_gravity="center"

         android:adjustViewBounds="true" />

<com.polites.android.GestureImageView
    android:id="@+id/croppedImageView"

    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:adjustViewBounds="true"
    android:contentDescription="@string/croppedImageDesc"
    gesture-image:max-scale="10.0"
    gesture-image:min-scale="0.1"
    gesture-image:strict="false" />

 </LinearLayout>

</ScrollView>

然而,我想在一定程度上帮助提高布局的效率。我不需要在不同的设备中滚动或基于类似于Nova Launcher&#34; Set Wallpaper&#34;屏幕像:

http://i.stack.imgur.com/WaJRO.png

非常感谢任何帮助!

谢谢,

ARNAB

1 个答案:

答案 0 :(得分:0)

Nova Launcher的裁剪活动基于AOSP Gallery2 https://android.googlesource.com/platform/packages/apps/Gallery2/的CropImage.java。引入所有必需的依赖项然后修复构建SDK的所有构建问题(比如他们可能在视图中使用mLeft而你必须用getLeft()替换它)。