引导页的轮播及轮播图
引导页布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Guide_pager">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/guide">
</android.support.v4.view.ViewPager>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#0B3EEC"
android:layout_alignParentRight="true"
android:layout_margin="10dp"
android:id="@+id/guide_count_down"
android:visibility="gone"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_marginBottom="70dp"
android:layout_centerHorizontal="true">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableBottom="@drawable/banal"
android:checked="true"
android:id="@+id/guide_but1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableBottom="@drawable/banal"
android:id="@+id/guide_but2"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableBottom="@drawable/banal"
android:id="@+id/guide_but3"/>
</RadioGroup>
</RelativeLayout>
引导页的完成
public class Guide_pager extends AppCompatActivity {
ViewPager viewPager;
TextView textView;
RadioButton radioButton1,radioButton2,radioButton3;
ArrayList<View> arrayList = new ArrayList<>();
Timer timer,timer1;
int p = 0;
int count_down = 5;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide_pager);
viewPager = findViewById(R.id.guide);
textView = findViewById(R.id.guide_count_down);
radioButton1 = findViewById(R.id.guide_but1);
radioButton2 = findViewById(R.id.guide_but2);
radioButton3 = findViewById(R.id.guide_but3);
ImageView image1 = new ImageView(this);
image1.setImageResource(R.mipmap.guide1);
ImageView image2 = new ImageView(this);
image2.setImageResource(R.mipmap.guide2);
ImageView image3 = new ImageView(this);
image3.setImageResource(R.mipmap.guide3);
arrayList.add(image1);
arrayList.add(image2);
arrayList.add(image3);
Guide_view_pager_adapter adapter = new Guide_view_pager_adapter(arrayList);
viewPager.setAdapter(adapter);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1001);
if(p == arrayList.size()){
p = -1;
}
}
},1000,1500);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1001){
p++;
viewPager.setCurrentItem(p);
}
if (msg.what == 1002){
textView.setText("倒计时:"+count_down);
count_down--;
if(count_down==-1){
timer.cancel();
timer1.cancel();
Intent intent = new Intent(Guide_pager.this, MainActivity.class);
startActivity(intent);
Guide_pager.this.finish();
}
}
}
};
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
radioButton1.setChecked(true);
break;
case 1:
radioButton2.setChecked(true);
break;
case 2:
radioButton3.setChecked(true);
textView.setVisibility(View.VISIBLE);
timer1 = new Timer();
timer1.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1002);
}
},0,1000);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
}
引导页ViewPager适配器
public class Guide_view_pager_adapter extends PagerAdapter {
ArrayList<View> arrayList = new ArrayList<>();
public Guide_view_pager_adapter(ArrayList<View> arrayList) {
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(arrayList.get(position));
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(arrayList.get(position));
return arrayList.get(position);
}
}
主页底部按钮实现页面切换
public class MainActivity extends AppCompatActivity {
RadioGroup home_rg;
FrameLayout home_frame_layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
home_rg = findViewById(R.id.home_rg);
home_frame_layout = findViewById(R.id.home_frame_layout);
Home_page home_page = new Home_page();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,home_page).commit();
home_rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.home_rb1:
Home_page home_page = new Home_page();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,home_page).addToBackStack("home_page").commit();
break;
case R.id.home_rb2:
Kind kind = new Kind();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,kind).commit();
break;
case R.id.home_rb3:
Find find = new Find();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,find).commit();
break;
case R.id.home_rb4:
ShoppingCar shoppingCar = new ShoppingCar();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,shoppingCar).commit();
break;
case R.id.home_rb5:
My my = new My();
getSupportFragmentManager().beginTransaction().replace(R.id.home_frame_layout,my).commit();
break;
}
}
});
}
}
主界面布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/home_frame_layout"
android:layout_above="@id/home_rg">
</FrameLayout>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/home_rg"
android:layout_alignParentBottom="true">
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableTop="@drawable/home_pager_img"
android:textColor="@drawable/home_pager_txt"
android:text="首页"
android:textSize="13sp"
android:gravity="center"
android:checked="true"
android:id="@+id/home_rb1"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableTop="@drawable/kind_img"
android:textColor="@drawable/home_pager_txt"
android:text="分类"
android:textSize="13sp"
android:gravity="center"
android:id="@+id/home_rb2"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableTop="@drawable/discover_img"
android:textColor="@drawable/home_pager_txt"
android:text="发现"
android:textSize="13sp"
android:gravity="center"
android:id="@+id/home_rb3"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableTop="@drawable/shopping_car_img"
android:textColor="@drawable/home_pager_txt"
android:text="购物车"
android:textSize="13sp"
android:gravity="center"
android:id="@+id/home_rb4"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableTop="@drawable/person_img"
android:textColor="@drawable/home_pager_txt"
android:text="我的"
android:textSize="13sp"
android:gravity="center"
android:id="@+id/home_rb5"
android:layout_weight="1"/>
</RadioGroup>
</RelativeLayout>
首页布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/home_view_pager"
android:background="#EC3535">
</android.support.v4.view.ViewPager>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:id="@+id/home_radio_group">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableTop="@drawable/banal"
android:id="@+id/home_radio_button1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableTop="@drawable/banal"
android:id="@+id/home_radio_button2"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableTop="@drawable/banal"
android:id="@+id/home_radio_button3"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableTop="@drawable/banal"
android:id="@+id/home_radio_button4"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:drawableTop="@drawable/banal"
android:id="@+id/home_radio_button5"/>
</RadioGroup>
</RelativeLayout>
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
android:id="@+id/home_grid_view"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:columnWidth="150dp"
android:stretchMode="spacingWidthUniform">
</GridView>
</LinearLayout>
首页实现轮播图及商品传值
public class Home_page extends Fragment {
ArrayList<View> arrayList = new ArrayList<>();
Timer timer;
int p = 0;
static Handler handler;
RadioButton b1,b2,b3,b4,b5;
ViewPager viewPager;
GridView gridView;
ArrayList<Map<String,String>> gridList;
ArrayList<Map<String,String>> handle_arraylist = new ArrayList<>();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_pager, null);
gridView = view.findViewById(R.id.home_grid_view);
b1 = view.findViewById(R.id.home_radio_button1);
b2 = view.findViewById(R.id.home_radio_button2);
b3 = view.findViewById(R.id.home_radio_button3);
b4 = view.findViewById(R.id.home_radio_button4);
b5 = view.findViewById(R.id.home_radio_button5);
viewPager = view.findViewById(R.id.home_view_pager);
ImageView img1 = new ImageView(getActivity());
img1.setImageResource(R.mipmap.home_viewpager1);
ImageView img2 = new ImageView(getActivity());
img2.setImageResource(R.mipmap.home_viewpager2);
ImageView img3 = new ImageView(getActivity());
img3.setImageResource(R.mipmap.home_viewpager3);
ImageView img4 = new ImageView(getActivity());
img4.setImageResource(R.mipmap.home_viewpager4);
ImageView img5 = new ImageView(getActivity());
img5.setImageResource(R.mipmap.home_viewpager5);
arrayList.add(img1);
arrayList.add(img2);
arrayList.add(img3);
arrayList.add(img4);
arrayList.add(img5);
Home_page_view_pager_adapter home_page_view_pager_adapter = new Home_page_view_pager_adapter(arrayList);
viewPager.setAdapter(home_page_view_pager_adapter);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1001);
//实现轮播
if (p == arrayList.size()){
p = -1;
}
}
},2000,2000);
new MyThread01().start();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1001){
p++;
viewPager.setCurrentItem(p);
}
if(msg.what == 100){
gridList = (ArrayList<Map<String, String>>) msg.obj;
Home_page_grid_view_adapter home_page_grid_view_adapter = new Home_page_grid_view_adapter(Home_page.this);
gridView.setAdapter(home_page_grid_view_adapter);
}
}
};
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
b1.setChecked(true);
break;
case 1:
b2.setChecked(true);
break;
case 2:
b3.setChecked(true);
break;
case 3:
b4.setChecked(true);
break;
case 4:
b5.setChecked(true);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
final PopupWindow popupWindow = new PopupWindow(Home_page.this.getActivity());
popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
View view1 = View.inflate(getActivity(),R.layout.home_gridview_popupwindow,null);
popupWindow.setContentView(view1);
ImageView img = view1.findViewById(R.id.popup_img);
ImageButton add = view1.findViewById(R.id.popup_add);
ImageButton reduce = view1.findViewById(R.id.popup_reduce);
final TextView count = view1.findViewById(R.id.popup_buy_count);
RadioGroup group = view1.findViewById(R.id.popup_amount);
final RadioButton small = view1.findViewById(R.id.popup_window_small);
RadioButton middle = view1.findViewById(R.id.popup_window_middle);
final RadioButton big = view1.findViewById(R.id.popup_window_big);
Button btn = view1.findViewById(R.id.popup_add_car);
Glide.with(getActivity()).load(gridList.get(position).get("pic")).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(img);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = Integer.parseInt(count.getText().toString());
i++;
count.setText(i+"");
}
});
reduce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = Integer.parseInt(count.getText().toString());
if (i == 0){
Toast.makeText(getActivity(), "亲,已经没有了", Toast.LENGTH_SHORT).show();
return;
}
i--;
count.setText(i+"");
}
});
View view2 = View.inflate(getActivity(),R.layout.main_activity,null);
popupWindow.setOutsideTouchable(true);
popupWindow.showAtLocation(view2, Gravity.BOTTOM,0,0);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Message obtain = Message.obtain();
obtain.what = 2001;
Map<String,String> map = new HashMap<>();
map.put("title",gridList.get(position).get("title"));
map.put("pic",gridList.get(position).get("pic"));
map.put("food_str",gridList.get(position).get("food_str"));
String large = "中分" ;
if (small.isChecked()){
large = "小份";
}
if (big.isChecked()){
large = "大份";
}
map.put("large",large);
String s = count.getText().toString();
int choose_count = Integer.parseInt(s);
if (choose_count == 0){
Toast.makeText(getActivity(), "亲,要几份呢", Toast.LENGTH_SHORT).show();
return;
}
map.put("count",s);
for (int i = 0; i < handle_arraylist.size(); i++){
String title = handle_arraylist.get(i).get("title");
String large1 = handle_arraylist.get(i).get("large");
if (title.equals(map.get("title"))&&large1.equals(map.get("large"))){
int oldCount = Integer.parseInt(handle_arraylist.get(i).get("count"));
handle_arraylist.get(i).put("count",choose_count+oldCount+"");
obtain.obj = handle_arraylist;
ShoppingCar.handler.sendMessage(obtain);
Toast.makeText(getActivity(), "添加成功", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
return;
}
}
handle_arraylist.add(map);
obtain.obj = handle_arraylist;
ShoppingCar.handler.sendMessage(obtain);
Toast.makeText(getActivity(), "添加成功", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
});
}
});
return view;
}
}
首页的GridView数据线程
public class MyThread01 extends Thread {
@Override
public void run() {
super.run();
try {
URL url = new URL("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=30&page=1");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
urlConnection.setRequestMethod("GET");
InputStream inputStream = urlConnection.getInputStream();
byte[] bytes = new byte[1024 * 6];
int len = 0;
StringBuilder sb = new StringBuilder();
BufferedInputStream bis = new BufferedInputStream(inputStream);
while((len = bis.read(bytes)) !=-1){
sb.append(new String(bytes,0,len));
}
JSONObject jsonObject = new JSONObject(sb.toString());
JSONArray data = jsonObject.getJSONArray("data");
ArrayList<Map<String,String>> arrayList = new ArrayList<>();
for (int i = 0; i <data.length(); i++){
Map<String,String> map = new HashMap<>();
JSONObject jsonObject1 = data.getJSONObject(i);
String pic = jsonObject1.getString("pic");
String title = jsonObject1.getString("title");
String food_str = jsonObject1.getString("food_str");
map.put("pic",pic);
map.put("title",title);
map.put("food_str",food_str);
arrayList.add(map);
}
Message obtain = Message.obtain();
obtain.what = 100;
obtain.obj = arrayList;
Home_page.handler.sendMessage(obtain);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
首页ViewPager适配器
public class Home_page_view_pager_adapter extends PagerAdapter {
ArrayList<View> arrayList;
public Home_page_view_pager_adapter(ArrayList<View> arrayList) {
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(arrayList.get(position));
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(arrayList.get(position));
return arrayList.get(position);
}
}
首页GridView适配器
public class Home_page_grid_view_adapter extends BaseAdapter {
Home_page home_page;
public Home_page_grid_view_adapter(Home_page home_page) {
this.home_page = home_page;
}
@Override
public int getCount() {
return home_page.gridList.size();
}
@Override
public Object getItem(int position) {
return home_page.gridList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = View.inflate(home_page.getActivity(),R.layout.home_gridview,null);
viewHolder.imageView = convertView.findViewById(R.id.home_grid_img);
viewHolder.textView = convertView.findViewById(R.id.home_grid_txt);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(home_page.gridList.get(position).get("title"));
Glide.with(home_page.getActivity()).load(home_page.gridList.get(position).get("pic")).into(viewHolder.imageView);
return convertView;
}
}
class ViewHolder{
ImageView imageView;
TextView textView;
}
购物车接受首页发送的数据并展示
public class ShoppingCar extends Fragment {
static ArrayList<Map<String,String>> arrayList;
static Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 2001){
//暂存数据
arrayList = (ArrayList<Map<String, String>>) msg.obj;
}
}
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shopping_car, null);
ListView listView = view.findViewById(R.id.shopping_car_list_view);
Car_ListView_Adapter car_listView_adapter = new Car_ListView_Adapter(ShoppingCar.this);
listView.setAdapter(car_listView_adapter);
return view;
}
购物车ListView适配器
public class Car_ListView_Adapter extends BaseAdapter {
ShoppingCar shoppingCar;
public Car_ListView_Adapter(ShoppingCar shoppingCar) {
this.shoppingCar = shoppingCar;
}
@Override
public int getCount() {
return ShoppingCar.arrayList.size();
}
@Override
public Object getItem(int position) {
return ShoppingCar.arrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder_Car viewHolder_car;
if(convertView == null){
viewHolder_car = new ViewHolder_Car();
convertView = View.inflate(shoppingCar.getActivity(),R.layout.car_list_view,null);
viewHolder_car.img = convertView.findViewById(R.id.car_list_view_img);
viewHolder_car.txt1 = convertView.findViewById(R.id.car_list_view_txt1);
viewHolder_car.txt2 = convertView.findViewById(R.id.car_list_view_txt2);
viewHolder_car.txt3 = convertView.findViewById(R.id.car_list_view_txt3);
viewHolder_car.txt4 = convertView.findViewById(R.id.car_list_view_txt4);
convertView.setTag(viewHolder_car);
}else {
viewHolder_car = (ViewHolder_Car) convertView.getTag();
}
Glide.with(shoppingCar.getActivity()).load(ShoppingCar.arrayList.get(position).get("pic")).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(viewHolder_car.img);
viewHolder_car.txt1.setText(ShoppingCar.arrayList.get(position).get("title"));
viewHolder_car.txt2.setText(ShoppingCar.arrayList.get(position).get("food_str"));
viewHolder_car.txt3.setText("数量:"+ShoppingCar.arrayList.get(position).get("count"));
viewHolder_car.txt4.setText(ShoppingCar.arrayList.get(position).get("large"));
return convertView;
}
}
class ViewHolder_Car{
ImageView img;
TextView txt1,txt2,txt3,txt4;
}