Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android水平类别视图与图像_Android_Android Layout_Android Imageview_Android View_Android Scrollview - Fatal编程技术网

Android水平类别视图与图像

Android水平类别视图与图像,android,android-layout,android-imageview,android-view,android-scrollview,Android,Android Layout,Android Imageview,Android View,Android Scrollview,我正在实现一个水平滚动视图,其中的项目包含一个ImageView和一个Textview 这是我的主要活动: public class MainActivity extends Activity implements OnClickListener{ List elementlist; LinearLayout layout; @Override public void onCreate(Bundle savedInstanceState) {

我正在实现一个水平滚动视图,其中的项目包含一个ImageView和一个Textview

这是我的主要活动:

    public class MainActivity extends Activity implements OnClickListener{
    List elementlist;
    LinearLayout layout;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        elementlist=new ArrayList<Element>();

        elementlist.add(new Element("Item 1", "p1"));
        elementlist.add(new Element("Item 2", "p2"));
        elementlist.add(new Element("Item 3", "p3"));
        elementlist.add(new Element("Item 4", "p4"));
        elementlist.add(new Element("Item 5", "p5"));

        layout=(LinearLayout)findViewById(R.id.lay);


        populate_list();

    }

    private void populate_list()
    {

        Iterator<Element> i=elementlist.iterator();
        while(i.hasNext())
        {
            Element e= (Element)i.next();

            LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
            View v=inflater.inflate(R.layout.list_element, null);

            ImageView iw=(ImageView)v.findViewById(R.id.imageView1);
            TextView tw=(TextView)v.findViewById(R.id.textView1);
            iw.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(e.getImagename(), "drawable", this.getPackageName())));
            tw.setText(e.getDisplayname());

            layout.addView(v);
        }



    }   
}
activity_main.xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

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

</RelativeLayout>

和listelement.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_centerHorizontal="true"
        android:background="#000000"
        android:layout_alignParentRight="true"
        android:layout_alignParentLeft="true"
        android:orientation="vertical" >


        <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ffffff" />


    </LinearLayout>

</RelativeLayout>

现在,我的场景是,我有两个需求:

  • 滚动列表时,列表的大小应减小(如诺基亚N72、N95等多媒体资料)

  • 滚动完成后,列表应自动跳转到最近的项目,并且大小再次增加,即该项目的宽度适合屏幕宽度,或者至少位于中间

  • 如何满足我的要求

    我想就这样做

    当用户滚动时,应如下所示:

    根据你的问题,我假设尺寸的减小不必与位移成正比,即,你有一个大尺寸和一个小尺寸


    继续我的假设,我建议您仔细研究这个问题-它将向您展示四种处理所需大小调整动画的实现

    实际上是的,它不需要完全成比例,但是我需要一个渐进的扩展,我已经通过使用一些矩阵变换和数学在一个垂直的自定义列表视图中实现了这一点。在这种情况下,缩放和旋转与子对象到列表中心的距离成比例,看起来非常酷。
        <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true" />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/imageView1"
            android:layout_centerHorizontal="true"
            android:background="#000000"
            android:layout_alignParentRight="true"
            android:layout_alignParentLeft="true"
            android:orientation="vertical" >
    
    
            <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#ffffff" />
    
    
        </LinearLayout>
    
    </RelativeLayout>