横向ListView 图片展示

本文主要使用了 HorizontalScrollView实现横向展示图片

一、首先看效果图

这里写图片描述

二、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"
    tools:context=".MainActivity" >

    <HorizontalScrollView
        android:id="@+id/horizon"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:scrollbars="none"

         >

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

</RelativeLayout>

这就是整个xml布局了,很简单。

三、java部分

package com.example.horizontalscrollview;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.HorizontalScrollView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {


    HorizontalScrollView horizon_view;
    LinearLayout linear;
    //图片数组
        int[] ImageView = new int[] {

                R.drawable.a,
                R.drawable.b,
                R.drawable.c,
                R.drawable.d,
                R.drawable.a,
                R.drawable.b,
                R.drawable.c,
                R.drawable.d,
                R.drawable.demo
        };


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


    }



    private List ArrayList() {
        // TODO Auto-generated method stub
        return null;
    }



    //初始化数据
    private void initView() {
        // TODO Auto-generated method stub
        horizon_view=(HorizontalScrollView) findViewById(R.id.horizon);
        linear=(LinearLayout) findViewById(R.id.linear);
        //从新加载数据,把以前的view全部去掉
        linear.removeAllViews();
    }


    private void initData() {
        // TODO Auto-generated method stub
        for( int i=0;i<ImageView.length;i++)
        {
            ImageView img=new ImageView(MainActivity.this);
//          LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( uitl.dip2px(MainActivity.this, 40), uitl.dip2px(MainActivity.this, 60));
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(200,200);

            params.setMargins(0, 0, 0, 0);
            img.setScaleType(ScaleType.FIT_XY);
            img.setLayoutParams(params);
//          img.setBorderColor(getResources().getColor(android.R.color.holo_purple));
//          img.setBorderWidth(4);
            img.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getApplicationContext(), "点击成功", Toast.LENGTH_SHORT).show();
                }
            });
            //添加点击事件(把关键数据传递到下一个页面捷星查询相关的信息)
//          img.setOnClickListener(new MyCardClickListener(vo.getCardNo(),vo.getCardName()));
            img.setImageResource(ImageView[i]);
            linear.addView(img);
        }
    }



四、实现原理

1.主要是通过for循环实现每次新建一个view,把新建的View添加到LinearLayout布局中。

2.关于监听。
在for循环中为每一个view添加监听,要实现点击一张图片跳转到指定的界面。可以重写监听

private class MyCardClickListener implements OnClickListener {

        /**
         * 卡号
         */
        private String cardNo;
        /**
         * 卡名称
         */
        private String cardName;

        public MyCardClickListener(String cardNo,String cardName) {
            this.cardNo = cardNo;
            this.cardName = cardName;
        }

        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                //LogHelper.d(TAG, "我的卡列表 cardNO:"+cardNo);
//              Intent intent = new Intent(PersonLoginAct.this, MyCardDetailsAct.class);
//              //卡号
//              intent.putExtra("cardNo", cardNo);
//              intent.putExtra("cardName", cardName);
//              startActivity(intent);
            } catch(Exception e) {
                //LogHelper.e(TAG, "我的卡列表点击事件异常", e);
            }
        }


    };

因为在实际的代码中。图片都从网络请求下载,可以针对的每张特定的图片,从json中取出唯一的标志或者参数,传到监听,根据拿到的参数去网络请求相应的数据或者跳到一个界面。

链接下载地址:

http://download.csdn.net/detail/nodonoidea/9045647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值