今天学习了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)); } } }
还有布局代码和图片就不一一往上发了,需要的可以找我要。