android-listview-GridView-ViewPager(朋友圈样式+点击预览图片)

1.朋友圈listview适配器


import android.content.Context;
import android.content.Intent;
import android.nfc.Tag;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 **/
public class MyListViewAdapter extends BaseAdapter {

    private int [] imgs={
            R.mipmap.song4,
            R.mipmap.song3,
            R.mipmap.song2,
            R.mipmap.song1
    };

    ArrayList<HashMap<String,Object>> imgeList;
    //初始化
    private Context context;
    //初始化
    public MyListViewAdapter(Context context){
        this.context=context;
        imgeList=new ArrayList<>();
        for (int a=0;a<4;a++){
            HashMap<String,Object> hashMap=new HashMap<String,Object>();
            hashMap.put("image",imgs[a]);
            imgeList.add(hashMap);
        }
    }

    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public Object getItem(int position) {
        return position;//当前这个位置
    }

    @Override
    public long getItemId(int position) {
        return 4;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MyHolder myHolder=new MyHolder();
        //如果view为空,主动添加视图
        if(convertView==null){
            convertView= LayoutInflater.from(context).inflate(R.layout.list_item_layout,null);
            myHolder.ttitletv=convertView.findViewById(R.id.list_title_text);
            myHolder.titleiv=convertView.findViewById(R.id.list_title_image);
            myHolder.myGridView=convertView.findViewById(R.id.list_item_gradview);
            convertView.setTag(myHolder);
        }else{
            myHolder= (MyHolder) convertView.getTag();
        }
        myHolder.ttitletv.setText("这是朋友圈的第"+(position+1)+"个数");
        SimpleAdapter simpleAdapter=new SimpleAdapter(context,imgeList,R.layout.grid_item_layout,new String []{"image"},new int[]{R.id.grid_item_image});
        myHolder.myGridView.setAdapter(simpleAdapter);
        myHolder.myGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.e("", "onItemClick: 下标---"+position );
                Intent intent=new Intent(context,ShowImgActivity.class);
                intent.putExtra("index",position);
                intent.putExtra("image",imgs);
                context.startActivity(intent);
            }
        });
        return convertView;
    }

    //设置Item控件的
    class MyHolder{
        ImageView titleiv;
        TextView ttitletv;
        MyGridView myGridView;
    }

}

2.图片宫格样式的自定义

GridView类

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

/**
 *
 **/
public class MyGridView extends GridView {
    public MyGridView(Context context) {
        super(context);
    }

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    //测量GridView的高度   我们listview嵌套GridView的时候显示全,返回GridView高度
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
        //计算好的expandSpec   传入到下面这个方法
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

3.主页面类


import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private MyListViewAdapter myListViewAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=findViewById(R.id.listview);
        myListViewAdapter=new MyListViewAdapter(MainActivity.this);
        listView.setAdapter(myListViewAdapter);
    }
}

4.预览图片适配器


import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

/**
 *
 **/
public class MypagerAdapter extends PagerAdapter {

    private List<View> list;

    public MypagerAdapter (List<View> list){
        this.list=list;
    }

    @Override
    public int getCount() {
        if(list!=null&&list.size()>0){
            return list.size();
        }else{
            return 0;
        }

    }



    public boolean isViewFromObject(View v,Object object){
        return v==object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
//        将view添加到viewgroup中
        container.addView(list.get(position));
        return list.get(position);
    }
}

5.预览界面代码


import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import java.util.ArrayList;
import java.util.List;

/**
 *
 **/
public class ShowImgActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private List<View> listview;
    private int index=0;
    private MypagerAdapter mypagerAdapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_image_layout);
        init();
    }

    private void init() {
        final Intent intent=getIntent();
        viewPager=findViewById(R.id.myviewpager);
        listview=new ArrayList<View>();
        int lenget=intent.getIntArrayExtra("image").length;
        int [] imgInt=intent.getIntArrayExtra("image");
        Log.e("TAG", "init: ----"+lenget);
        for (int a=0;a<lenget;a++){
            View view= LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_pager_item,null);
            ImageView imageView=view.findViewById(R.id.view_image);
            imageView.setBackgroundResource(imgInt[a]);
            listview.add(view);
        }
        mypagerAdapter=new MypagerAdapter(listview);
        viewPager.setAdapter(mypagerAdapter);
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //显示指定的数据
                index=position;
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        viewPager.setCurrentItem(2);
    }
}

FriendCrile(朋友圈样式+点击预览图片).rar-互联网文档类资源-CSDN下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞飞翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值