2

我在下面的链接carousel 演示源代码链接中下载了示例 android carousel 演示源代码

我的疑问是如果我添加更多图像,图像间隙非常低,所以如何增加图像空间,还有一个疑问底部图像反射是隐藏如何获得底部反射图像.....

这是我的 xml 源代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:pj="http://schemas.android.com/apk/res/com.carouseldemo.main"
    xmlns:bm="com.carouseldemo.main"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
        android:layout_weight="0.5"
        android:padding="5dip"
        android:gravity="top"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        >
            <com.carouseldemo.controls.Carousel
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/carousel"  
                pj:UseReflection="true"
                pj:Items="@array/entries"
                pj:SelectedItem="0"
                android:animationDuration="200"
            />      
    </LinearLayout>     
</LinearLayout>

请看我的屏幕截图:

在此处输入图像描述

4

3 回答 3

3

我修改了代码,在计算中Calculate3DPosition包含了 NEW 的使用:verticalStretchFactory

计算3D位置

 float y = -getHeight()/2f + (float) (diameter/mVerticalStretchFactor * z * android.util.FloatMath.sin(mTheta));

我将这个新的属性参数添加到控件的属性中。我发现 140f 数量级的因子在标准 Droid Phone 显示器上运行良好,可以在列表中的项目之间提供更大的垂直间距。我将该控件用作主菜单控件,列表中只有 5 到 6 个项目。

于 2012-12-03T23:45:13.020 回答
2

它应该在Carousel.java文件中定义。请检查以下功能

src/com/carouseldemo/controls/Carousel.java

getChildStaticTransformation  
makeAndAddView  
setUpChild  
Calculate3DPosition 
于 2012-05-04T13:23:54.590 回答
1

谢谢大家的回答,尤其是森,麻风病患者。我解决了大图像点击错误选择的问题。如果用户只需要保持图像不变但问题仍然存在,那么您的解决方案非常有用。

如果有人需要像 Balaji 上面给出的示例图像那样使微调器图像保持不变,请使用 Sen 和 lepert 解决方案。

如果你想让图像成为主要图像并正确获得点击/选择,请更改下面给出的代码..这对我有用..

在某一方面的变化

CorousalSpinner.java 中的 pointToPosition(int x, int y) 无需更改上述方案给出的代码

代替

Collections.sort(fitting);

        if(fitting.size() != 0)
            return fitting.get(0).getIndex();
        else
            return mSelectedPosition;

Collections.sort(fitting);

if(fitting.size() != 0){
    if(fitting.size()>1){
        return fitting.get((fitting.size()-1)).getIndex();
    }else{
        return fitting.get(0).getIndex();   
    }


}
else{
    return mSelectedPosition;
}
于 2013-05-24T07:30:12.333 回答