模仿朋友圈分享图片

今天学习了Android主要实现的是模仿朋友圈分享图片,接下来请欣赏一下我写的代码。

先来看看效果图,这是一个手机模拟器。

MainActivity 代码:

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private MyListViewAdapter listViewAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findID();
        init();
    }
    private void init(){
        listViewAdapter=new MyListViewAdapter(this);
        listView.setAdapter(listViewAdapter);

    }
    private void findID(){
        listView=findViewById(R.id.list_view);
    }
}

 

MyGridView 代码

public class MyGridView extends GridView {
    private Context context;
    public MyGridView(Context context){
        super(context);
        this.context=context;
    }
   public MyGridView(Context context, AttributeSet attributeSet){
        super(context,attributeSet);
   }
   public MyGridView(Context context,AttributeSet attrbuteSet,int defstyle){
        super(context,attrbuteSet,defstyle);
   }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}

 

MyListViewAdapter 代码
public class MyListViewAdapter extends BaseAdapter {
    private Context context;
    int[] image={R.mipmap.a,R.mipmap.b,R.mipmap.c,
            R.mipmap.d,R.mipmap.h,R.mipmap.g,R.mipmap.i,R.mipmap.d,R.mipmap.b};
    ArrayList<HashMap<String,Object>> imagelist;
    public MyListViewAdapter(Context context){
        this.context=context;
        imagelist=new ArrayList<HashMap<String, Object>>();
        for (int i=0;i<9;i++){
            HashMap<String,Object> map=new HashMap<String, Object>();
            map.put("image",image[i]);
            imagelist.add(map);
        }
    }
    @Override
    public int getCount() {
        //返回朋友圈的条数
        return 5;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        //获取朋友圈的内容信息
        return 5;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MyHolder holder=new MyHolder();
        if (convertView==null){
            convertView= LayoutInflater.from(context).inflate(R.layout.list_item_layout,null);
            holder.titleIV=convertView.findViewById(R.id.list_title_image);
            holder.titleTV=convertView.findViewById(R.id.list_title_text);
            holder.gridView=convertView.findViewById(R.id.list_item_grid_view);
            convertView.setTag(holder);
        }else {
            holder=(MyHolder) convertView.getTag();
        }
        //holder.titleIV.setImageDrawable();
        holder.titleTV.setText("这是朋友圈模拟的第"+position+1+"条数据");
        SimpleAdapter simpleAdapter=new SimpleAdapter(context,imagelist,R.layout.grid_item_layout,new String[]{"image"},new int[]{R.id.grid_item_image});
        holder.gridView.setAdapter(simpleAdapter);
        holder.gridView.setOnItemClickListener(new GridViewItemOnClick());
        return convertView;
    }
    class MyHolder{
        ImageView titleIV;
        TextView titleTV;
        MyGridView gridView;
    }
    class GridViewItemOnClick implements AdapterView.OnItemClickListener{
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent=new Intent(context,ShowImageActivity.class);
            intent.putExtra("id",position);
            intent.putExtra("image",image);
            context.startActivity(intent);
        }
    }
}

MyPagerAdapter 代码

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;
        }
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(list.get(position));
        return list.get(position);

    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return POSITION_NONE;
    }
}
ShowImageActivity 代码
public class ShowImageActivity extends AppCompatActivity {
    private ViewPager viewPager;
    private List<View> listviews=null;
    private int index=0;
    private MyPagerAdapter adapter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.show_image_layout);
        init();
    }
    private class PageChangeListener implements ViewPager.OnPageChangeListener{
        @Override
        public void onPageScrollStateChanged(int state) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            index=position;
        }
    }
    private void init(){
        final Intent intent=getIntent();
        viewPager=findViewById(R.id.show_view_pager);
        listviews=new ArrayList<View>();
        for (int i=0;i<intent.getIntArrayExtra("image").length;i++){
            View view= LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.view_pager_item,null);
            ImageView iv =view.findViewById(R.id.view_image);
            iv.setBackgroundResource(intent.getIntArrayExtra("image")[i]);
            listviews.add(view);
            iv.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Toast.makeText(ShowImageActivity.this,"这是第"+intent+1+"图片",Toast.LENGTH_SHORT).show();
                    return false;
                }
            });
            adapter=new MyPagerAdapter(listviews);
            viewPager.setAdapter(adapter);
            viewPager.setOnPageChangeListener(new PageChangeListener());
            viewPager.setCurrentItem(intent.getIntExtra("id",0));
        }

    }
}

还有布局代码和图片就不一一往上发了,需要的可以找我要。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值