锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

期末安卓项目:Android+web+SQL“电影”项目成品图片在最后

时间:2023-01-17 02:30:00 fqp8n60晶体管

目录

准备工作

idea编辑工具(专业版)

IntelliJ IDEA创建Servlet最新方法

mysql:个人使用的MySQL5.7编辑

mysql:可以使用SQLyou编辑

Android:可以使用Android Stuodio编辑

Android中代码

IDEA中代码

个人错误

Java代码错误

部分需要jar包和框架

显示代码:

Android:页面显示

idea的java:页面显示

编辑

总结


  1. 准备工作

    1. idea工具(专业版)

    2. IntelliJ IDEA创建Servlet最新方法

    3. mysql:个人使用的MySQL5.7

    4. mysql:可以使用SQLyou

    5. Android:可以使用Android Stuodio

  2. Android中代码

    1. 框架:
    2. 需要的jar包放在下main
    3. 具体代码.
      1. MainActivity  
        package com.e.myapplicationtest.activity;  import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.viewpager.widget.ViewPager;  import android.os.Bundle; import android.util.Log; import android.widget.TextView;  import com.e.myapplicationtest.R; import com.e.myapplicationtest.fragment.MyPagerAdapter; import com.e.myapplicationtest.fragment.NewsFramgment1; import com.e.myapplicationtest.fragment.NewsFramgment2; import com.e.myapplicationtest.fragment.NewsFramgment3; import com.e.myapplicationtest.fragment.NewsFramgment4; import com.google.android.material.tabs.TabLayout;  import java.util.ArrayList; import java.util.List;  public class MainActivity extends AppCompatActivity {     private ViewPager mViewPager;     private TabLayout tabLayout;     private MyPagerAdapter myPagerAdapter;     private List titlelist = new ArrayList();     private NewsFramgment1 nfragment1;     private NewsFramgment2 nfragment2;     private NewsFramgment3 nfragment3;     private NewsFramgment4 nfragment4;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         initView();     }       private void initView() {         titlelist.add("爱情");         titlelist.add("励志");         titlelist.add("喜剧");         titlelist.add("我的");         nfragment1 = new NewsFramgment1();         nfragment2 = new NewsFramgment2();         nfragment3 = new NewsFramgment3();         nfragment4 = new NewsFramgment4();            ArrayList fragmntList = nw ArrayList();
                fragmntList.add(nfragment1);
                fragmntList.add(nfragment2);
                fragmntList.add(nfragment3);
                fragmntList.add(nfragment4);
        
                mViewPager = (ViewPager) findViewById(R.id.viewpager);
                tabLayout = (TabLayout) findViewById(R.id.tab_layout);
                myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(),titlelist, fragmntList);
                mViewPager.setAdapter(myPagerAdapter);
                tabLayout.setupWithViewPager(mViewPager);
        
            }
        }

      2. ShowNewsActivity
        
        
        package com.e.myapplicationtest.activity;
        
        import androidx.appcompat.app.AppCompatActivity;
        
        import android.content.Intent;
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.os.Bundle;
        import android.view.Window;
        import android.widget.TextView;
        
        import com.e.myapplicationtest.R;
        import com.e.myapplicationtest.bean.NewsBean;
        import com.loopj.android.image.SmartImageView;
        
        public class ShowNewsActivity extends AppCompatActivity {
            TextView title,author,time,content;
            SmartImageView imageView;
            static BitmapFactory.Options opts;
            Bitmap bitmap = null;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        
                //去掉标题栏
                requestWindowFeature(Window.FEATURE_NO_TITLE);
        
                setContentView(R.layout.activity_show_news);
        
                Intent intent = getIntent();
                NewsBean newsBean = (NewsBean) intent.getExtras().getSerializable("NewsList");
                // 显示子啊什么位置
                title = (TextView) this.findViewById(R.id.title);
                author = (TextView) this.findViewById(R.id.author);
                time = (TextView) this.findViewById(R.id.time);
                content = (TextView) this.findViewById(R.id.content);
                imageView = (SmartImageView) this.findViewById(R.id.img_name);
                // 获取数据
                title.setText(newsBean.getTitle());
                author.setText(newsBean.getAuthor());
                time.setText(newsBean.getTime());
                content.setText(newsBean.getContent());
                imageView.setImageUrl("http//(ip地址):8080/Web1/TestServlet/img/"+newsBean.getImg_name(),R.drawable.newspic1);
        
        
            }
        }

      3. NewsBean
        
        
        package com.e.myapplicationtest.bean;
        
        import java.io.Serializable;
        
        public class NewsBean implements Serializable {
            public int id;
            public String title;
            public String content;
            public String img_url;
            public String img_name;
            public String big_img_name;
            public String author;
            public String time;
            public int type_id;
            private int status;
            public NewsBean()
            {
        
            }
            public NewsBean(int id, String title, String content, String img_url,
                            String img_name, String big_img_name, String author, String time,int type_id,int status) {
                this.id = id;
                this.title = title;
                this.content = content;
                this.img_url = img_url;
                this.img_name = img_name;
                this.big_img_name = big_img_name;
                this.author = author;
                this.time = time;
                this.type_id = type_id;
                this.status=status;
            }
        
            public int getId() {
                return id;
            }
        
            public void setId(int id) {
                this.id = id;
            }
        
            public String getTitle() {
                return title;
            }
        
            public void setTitle(String title) {
                this.title = title;
            }
        
            public String getContent() {
                return content;
            }
        
            public void setContent(String content) {
                this.content = content;
            }
        
            public String getImg_url() {
                return img_url;
            }
        
            public void setImg_url(String img_url) {
                this.img_url = img_url;
            }
        
            public String getImg_name() {
                return img_name;
            }
        
            public void setImg_name(String img_name) {
                this.img_name = img_name;
            }
        
            public String getBig_img_name() {
                return big_img_name;
            }
        
            public void setBig_img_name(String big_img_name) {
                this.big_img_name = big_img_name;
            }
        
            public String getAuthor() {
                return author;
            }
        
            public void setAuthor(String author) {
                this.author = author;
            }
        
            public String getTime() {
                return time;
            }
        
            public void setTime(String time) {
                this.time = time;
            }
        
            public int getType_id() {
                return type_id;
            }
        
            public void setType_id(int type_id) {
                this.type_id = type_id;
            }
            public int getStatus() {
                return status;
            }
        
            public void setStatus(int status) {
                this.status = status;
            }
        }
        

      4. MyPagerAdapter
        
        
        package com.e.myapplicationtest.fragment;
        
        import androidx.annotation.NonNull;
        import androidx.annotation.Nullable;
        import androidx.fragment.app.Fragment;
        import androidx.fragment.app.FragmentManager;
        import androidx.fragment.app.FragmentPagerAdapter;
        
        import java.util.ArrayList;
        import java.util.List;
        
        public class MyPagerAdapter extends FragmentPagerAdapter {
            private List titlelist;
            private ArrayList fragmentList;
            public MyPagerAdapter(FragmentManager fm, List titlelist, ArrayList fragmentList) {
                super(fm);
                this.titlelist = titlelist;
                this.fragmentList = fragmentList;
            }
        
            @NonNull
            @Override
            public Fragment getItem(int position) {
                return fragmentList.get(position);
            }
        
            @Override
            public int getCount() {
                return fragmentList.size();
            }
        
            @Nullable
            @Override
            public CharSequence getPageTitle(int position) {
                return titlelist.get(position);
            }
        }
        

      5. NewsFramgment1
        
        
        package com.e.myapplicationtest.fragment;
        
        import android.content.Intent;
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.graphics.Matrix;
        import android.os.Bundle;
        
        //import androidx.fragment.app.Fragment;
        
        import android.preference.PreferenceActivity;
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.Adapter;
        import android.widget.AdapterView;
        import android.widget.ImageView;
        import android.widget.LinearLayout;
        import android.widget.ListView;
        
        import com.e.myapplicationtest.R;
        import com.e.myapplicationtest.activity.ShowNewsActivity;
        import com.e.myapplicationtest.bean.NewsBean;
        import com.e.myapplicationtest.tool.JsonParse;
        import com.e.myapplicationtest.tool.NewsListAdapter;
        import com.loopj.android.http.AsyncHttpClient;
        import com.loopj.android.http.AsyncHttpResponseHandler;
        
        import androidx.annotation.NonNull;
        import androidx.fragment.app.Fragment;
        import androidx.viewpager.widget.PagerAdapter;
        import androidx.viewpager.widget.ViewPager;
        
        import org.apache.http.Header;
        
        import java.io.InputStream;
        import java.util.ArrayList;
        import java.util.List;
        
        /**
         * A simple {@link Fragment} subclass.
         * Use the {@link NewsFramgment1#?newInstance} factory method to
         * create an instance of this fragment.
         */
        public class NewsFramgment1 extends Fragment {
            // TODO: Rename parameter arguments, choose names that match
            // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
        
            ListView listView = null;
            List newsLists = new ArrayList();
            AsyncHttpClient client = new AsyncHttpClient();//创建AsyncHttpClient实例
            //    ListView listView = null;
            private View mMainView;
            //显示新闻大图片代码
            private ViewPager viewPager;
            private ImageView[] tips;//提示性点点数组
            private int[] images;//图片ID数组
            private int[] image_tips;
            private int currentPage = 0 ;
            public Bitmap[] bmp = null;
            public Bitmap[] bmp_tips = null;
        
            public NewsFramgment1() {
                // Required empty public constructor
            }
        
            /**
             * Use this factory method to create a new instance of
             * this fragment using the provided parameters.
             *
             //     * @param param1 Parameter 1.
             //     * @param param2 Parameter 2.
             * @return A new instance of fragment NewsFramgment1.
             */
            // TODO: Rename and change types and number of parameters
        
        
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                LayoutInflater inflater = getActivity().getLayoutInflater();
                mMainView = inflater.inflate(R.layout.fragment_news_framgment1,(ViewGroup) getActivity().findViewById(R.id.viewpager),false);
                showBigImages();
                listView = (ListView) mMainView.findViewById(R.id.listview);
        
                //使用GET方式请求
                client.get("http://(ip地址):8080/Web1/TestServlet/NewsSL?typeId=1",new AsyncHttpResponseHandler(){
        
                    public void onSuccess(int i , org.apache.http.Header[] headers, byte[] bytes){
                        //请求成功
                        try {
                            String json = new String(bytes,"gbk");
                            newsLists = JsonParse.getNewsInfo(json);
                            if (newsLists == null){
                                Log.i("newsList","解析失败!");
                            }else {
                                NewsListAdapter adapter = new NewsListAdapter(getActivity(),newsLists,listView);
                                listView.setAdapter(adapter);
                                //新闻列表被选中监听,跳转到新闻详细页面
                                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                    @Override
                                    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
                                        Intent intent = new Intent(getActivity(), ShowNewsActivity.class);
                                        NewsBean newsBean = newsLists.get(arg2);
                                        Bundle bundle = new Bundle();
                                        bundle.putSerializable("NewsList",newsBean);
                                        intent.putExtras(bundle);
                                        startActivity(intent);
                                    }
                                });
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
        
                    @Override
                    public void onFailure(int i, org.apache.http.Header[] headers ,byte[] bytes,Throwable throwable){
        
                    }
                });
            }
        
            private void showBigImages() {
                viewPager =(ViewPager) mMainView.findViewById(R.id.viewpager1);
                //存放点点的容器
                LinearLayout tipsBox = (LinearLayout) mMainView.findViewById(R.id.tipsBox);
                //初始化图片资源
                images = new int[]{R.drawable.app7,R.drawable.app2,R.drawable.app6};
                image_tips = new int[]{R.drawable.page, R.drawable.pagenow};
                BitmapFactory.Options opts = new BitmapFactory.Options();
                opts.inPreferredConfig = Bitmap.Config.RGB_565;
                opts.inPurgeable = true;
                opts.inInputShareable = true;
                bmp = new Bitmap[images.length];
                for (int i = 0; i < images.length;i++){
                    InputStream is = this.getResources().openRawResource(images[i]);
                    bmp[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //小原点图片
                bmp_tips = new Bitmap[image_tips.length];
                for (int i = 0 ; i < image_tips.length;i++){
                    InputStream is = this.getResources().openRawResource(image_tips[i]);
                    bmp_tips[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //初始化 提示点点
                tips = new ImageView[10];
                for (int i = 0 ; i< images.length;i++){
                    ImageView img = new ImageView(getActivity());
                    img.setLayoutParams(new LinearLayout.LayoutParams(20,20));
                    tips[i] = img;
                    if (i == 0){
                        img.setImageBitmap(bmp_tips[1]);
                    }else {
                        img.setImageBitmap(bmp_tips[0]);
                    }
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            new ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    params.leftMargin = 20;
                    params.rightMargin =20;
                    tipsBox.addView(img,params);
                }
                //初始化PagerAdapter
                PagerAdapter adapter = new PagerAdapter() {
                    @Override
                    public int getCount() {
                        return images.length;
                    }
        
                    @Override
                    public boolean isViewFromObject(@NonNull View arg0, @NonNull Object arg1) {
                        return arg0 == arg1;
                    }
        
                    @NonNull
                    @Override
                    public Object instantiateItem(@NonNull ViewGroup container, int position) {
                        ImageView im = new ImageView(getActivity());
                        im.setScaleType(ImageView.ScaleType.CENTER);
                        im.setImageBitmap(zoomImg(bmp[position],680,420));
                        container.addView(im);
                        return im;
                    }
        
        
                };
                viewPager.setAdapter(adapter);
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        
                    }
        
                    @Override
                    public void onPageSelected(int position) {
                        Log.e("rf",String.valueOf(position));
                        tips[currentPage].setImageBitmap(bmp_tips[0]);
                        currentPage = position;
                        tips[currentPage].setImageBitmap(bmp_tips[1]);
                    }
        
                    @Override
                    public void onPageScrollStateChanged(int arg0) {
        
                    }
                });
            }
            private Bitmap zoomImg(Bitmap bm,int newWidth,int newHeight) {
                //获得图片的宽高
                int width = bm.getWidth();
                int height = bm.getHeight();
                //计算缩放比例
                float scaleWidth = ((float) newWidth)/width;
                float scaleHeight = ((float) newHeight)/height;
                //取得想要缩放的matrix参数
                Matrix martix = new Matrix();
                martix.postScale(scaleWidth,scaleHeight);
                //取得新的图片,www.2cto.com
                Bitmap newbm = Bitmap.createBitmap(bm,0,0,width,height,martix,true);
                return newbm;
        
            }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
                ViewGroup p = (ViewGroup) mMainView.getParent();
                if (p!=null) {
                    p.removeAllViewsInLayout();
                }
                return mMainView;
            }
        }
      6. NewsFramgment2
        
        
        package com.e.myapplicationtest.fragment;
        
        import android.content.Intent;
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.graphics.Matrix;
        import android.os.Bundle;
        
        import androidx.annotation.NonNull;
        import androidx.fragment.app.Fragment;
        import androidx.viewpager.widget.PagerAdapter;
        import androidx.viewpager.widget.ViewPager;
        
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.AdapterView;
        import android.widget.ImageView;
        import android.widget.LinearLayout;
        import android.widget.ListView;
        
        import com.e.myapplicationtest.R;
        import com.e.myapplicationtest.activity.ShowNewsActivity;
        import com.e.myapplicationtest.bean.NewsBean;
        import com.e.myapplicationtest.tool.JsonParse;
        import com.e.myapplicationtest.tool.NewsListAdapter;
        import com.loopj.android.http.AsyncHttpClient;
        import com.loopj.android.http.AsyncHttpResponseHandler;
        
        import java.io.InputStream;
        import java.util.ArrayList;
        import java.util.List;
        
        /**
         * A simple {@link Fragment} subclass.
         * Use the {@link NewsFramgment2#?newInstance} factory method to
         * create an instance of this fragment.
         */
        public class NewsFramgment2 extends Fragment {
        
            // TODO: Rename parameter arguments, choose names that match
            // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
            ListView listView = null;
            List newsLists = new ArrayList();
            AsyncHttpClient client = new AsyncHttpClient();//创建AsyncHttpClient实例
        
            //    ListView listView = null;
            private View mMainView;
            //显示新闻大图片代码
            private ViewPager viewPager;
            private ImageView[] tips;//提示性点点数组
            private int[] images;//图片ID数组
            private int[] image_tips;
            private int currentPage = 0 ;
            public Bitmap[] bmp = null;
            public Bitmap[] bmp_tips = null;
        
            public NewsFramgment2() {
                // Required empty public constructor
            }
        
            /**
             * Use this factory method to create a new instance of
             * this fragment using the provided parameters.
             *
             //     * @param param1 Parameter 1.
             //     * @param param2 Parameter 2.
             * @return A new instance of fragment NewsFramgment1.
             */
            // TODO: Rename and change types and number of parameters
        
        
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                LayoutInflater inflater = getActivity().getLayoutInflater();
                mMainView = inflater.inflate(R.layout.fragment_news_framgment2,(ViewGroup) getActivity().findViewById(R.id.viewpager),false);
                showBigImages();
                listView = (ListView) mMainView.findViewById(R.id.listview);
        
                //使用GET方式请求
                client.get("http://(ip地址):8080/Web1/TestServlet/NewsSL?typeId=2",new AsyncHttpResponseHandler(){
        
        
                    public void onSuccess(int i , org.apache.http.Header[] headers, byte[] bytes){
                        //请求成功
                        try {
                            String json = new String(bytes,"gbk");
                            newsLists = JsonParse.getNewsInfo(json);
                            if (newsLists == null){
                                Log.i("newsList","解析失败!");
                            }else {
                                NewsListAdapter adapter = new NewsListAdapter(getActivity(),newsLists,listView);
                                listView.setAdapter(adapter);
                                //新闻列表被选中监听,跳转到新闻详细页面
                                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                    @Override
                                    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
                                        Intent intent = new Intent(getActivity(), ShowNewsActivity.class);
                                        NewsBean newsBean = newsLists.get(arg2);
                                        Bundle bundle = new Bundle();
                                        bundle.putSerializable("NewsList",newsBean);
                                        intent.putExtras(bundle);
                                        startActivity(intent);
                                    }
                                });
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
        
                    @Override
                    public void onFailure(int i, org.apache.http.Header[] headers ,byte[] bytes,Throwable throwable){
        
                    }
                });
            }
        
            private void showBigImages() {
        
        
                viewPager =(ViewPager) mMainView.findViewById(R.id.viewpager2);
                //存放点点的容器
                LinearLayout tipsBox = (LinearLayout) mMainView.findViewById(R.id.tipsBox);
                //初始化图片资源
                images = new int[]{R.drawable.app9,R.drawable.app15,R.drawable.app5};
                image_tips = new int[]{R.drawable.page, R.drawable.pagenow};
                BitmapFactory.Options opts = new BitmapFactory.Options();
                opts.inPreferredConfig = Bitmap.Config.RGB_565;
                opts.inPurgeable = true;
                opts.inInputShareable = true;
                bmp = new Bitmap[images.length];
                for (int i = 0; i < images.length;i++){
                    InputStream is = this.getResources().openRawResource(images[i]);
                    bmp[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //小原点图片
                bmp_tips = new Bitmap[image_tips.length];
                for (int i = 0 ; i < image_tips.length;i++){
                    InputStream is = this.getResources().openRawResource(image_tips[i]);
                    bmp_tips[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //初始化 提示点点
                tips = new ImageView[5];
                for (int i = 0 ; i< images.length;i++){
                    ImageView img = new ImageView(getActivity());
                    img.setLayoutParams(new LinearLayout.LayoutParams(20,20));
                    tips[i] = img;
                    if (i == 0){
                        img.setImageBitmap(bmp_tips[1]);
                    }else {
                        img.setImageBitmap(bmp_tips[0]);
                    }
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            new ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    params.leftMargin = 20;
                    params.rightMargin =20;
                    tipsBox.addView(img,params);
                }
                //初始化PagerAdapter
                PagerAdapter adapter = new PagerAdapter() {
                    @Override
                    public int getCount() {
                        return images.length;
                    }
        
                    @Override
                    public boolean isViewFromObject(@NonNull View arg0, @NonNull Object arg1) {
                        return arg0 == arg1;
                    }
        
                    @NonNull
                    @Override
                    public Object instantiateItem(@NonNull ViewGroup container, int position) {
                        ImageView im = new ImageView(getActivity());
                        im.setScaleType(ImageView.ScaleType.CENTER);
                        im.setImageBitmap(zoomImg(bmp[position],680,420));
                        container.addView(im);
                        return im;
                    }
        
        
                };
                viewPager.setAdapter(adapter);
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        
                    }
        
                    @Override
                    public void onPageSelected(int position) {
                        Log.e("rf",String.valueOf(position));
                        tips[currentPage].setImageBitmap(bmp_tips[0]);
                        currentPage = position;
                        tips[currentPage].setImageBitmap(bmp_tips[1]);
                    }
        
                    @Override
                    public void onPageScrollStateChanged(int arg0) {
        
                    }
                });
            }
            private Bitmap zoomImg(Bitmap bm,int newWidth,int newHeight) {
                //获得图片的宽高
                int width = bm.getWidth();
                int height = bm.getHeight();
                //计算缩放比例
                float scaleWidth = ((float) newWidth)/width;
                float scaleHeight = ((float) newHeight)/height;
                //取得想要缩放的matrix参数
                Matrix martix = new Matrix();
                martix.postScale(scaleWidth,scaleHeight);
                //取得新的图片,www.2cto.com
                Bitmap newbm = Bitmap.createBitmap(bm,0,0,width,height,martix,true);
                return newbm;
        
            }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
                ViewGroup p = (ViewGroup) mMainView.getParent();
                if (p!=null) {
                    p.removeAllViewsInLayout();
                }
                return mMainView;
            }
        }

      7. NewsFramgment3
        
        
        package com.e.myapplicationtest.fragment;
        
        import android.content.Intent;
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.graphics.Matrix;
        import android.os.Bundle;
        
        //import androidx.fragment.app.Fragment;
        
        import android.preference.PreferenceActivity;
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.AdapterView;
        import android.widget.ImageView;
        import android.widget.LinearLayout;
        import android.widget.ListView;
        
        import com.e.myapplicationtest.R;
        import com.e.myapplicationtest.activity.ShowNewsActivity;
        import com.e.myapplicationtest.bean.NewsBean;
        import com.e.myapplicationtest.tool.JsonParse;
        import com.e.myapplicationtest.tool.NewsListAdapter;
        import com.loopj.android.http.AsyncHttpClient;
        import com.loopj.android.http.AsyncHttpResponseHandler;
        
        import androidx.annotation.NonNull;
        import androidx.fragment.app.Fragment;
        import androidx.viewpager.widget.PagerAdapter;
        import androidx.viewpager.widget.ViewPager;
        
        import java.io.InputStream;
        import java.util.ArrayList;
        import java.util.List;
        
        /**
         * A simple {@link Fragment} subclass.
         * Use the {@link NewsFramgment3#?newInstance} factory method to
         * create an instance of this fragment.
         */
        public class NewsFramgment3 extends Fragment {
        
            // TODO: Rename parameter arguments, choose names that match
            // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
            ListView listView = null;
            List newsLists = new ArrayList();
            AsyncHttpClient client = new AsyncHttpClient();//创建AsyncHttpClient实例
        
        
        
            //    ListView listView = null;
            private View mMainView;
            //显示新闻大图片代码
            private ViewPager viewPager;
            private ImageView[] tips;//提示性点点数组
            private int[] images;//图片ID数组
            private int[] image_tips;
            private int currentPage = 0 ;
            public Bitmap[] bmp = null;
            public Bitmap[] bmp_tips = null;
        
            public NewsFramgment3() {
                // Required empty public constructor
            }
        
            /**
             * Use this factory method to create a new instance of
             * this fragment using the provided parameters.
             *
             //     * @param param1 Parameter 1.
             //     * @param param2 Parameter 2.
             * @return A new instance of fragment NewsFramgment1.
             */
            // TODO: Rename and change types and number of parameters
        
        
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                LayoutInflater inflater = getActivity().getLayoutInflater();
                mMainView = inflater.inflate(R.layout.fragment_news_framgment3,(ViewGroup) getActivity().findViewById(R.id.viewpager),false);
                showBigImages();
                listView = (ListView) mMainView.findViewById(R.id.listview);
        
                //使用GET方式请求
                client.get("http://(ip地址):8080/Web1/TestServlet/NewsSL?typeId=3",new AsyncHttpResponseHandler(){
        
        
                    public void onSuccess(int i , org.apache.http.Header[] headers, byte[] bytes){
                        //请求成功
                        try {
                            String json = new String(bytes,"gbk");
                            newsLists = JsonParse.getNewsInfo(json);
                            if (newsLists == null){
                                Log.i("newsList","解析失败!");
                            }else {
                                NewsListAdapter adapter = new NewsListAdapter(getActivity(),newsLists,listView);
                                listView.setAdapter(adapter);
                                //新闻列表被选中监听,跳转到新闻详细页面
                                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                    @Override
                                    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
                                        Intent intent = new Intent(getActivity(), ShowNewsActivity.class);
                                        NewsBean newsBean = newsLists.get(arg2);
                                        Bundle bundle = new Bundle();
                                        bundle.putSerializable("NewsList",newsBean);
                                        intent.putExtras(bundle);
                                        startActivity(intent);
                                    }
                                });
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
        
                    @Override
                    public void onFailure(int i, org.apache.http.Header[] headers ,byte[] bytes,Throwable throwable){
        
                    }
                });
            }
        
            private void showBigImages() {
        
        
                viewPager =(ViewPager) mMainView.findViewById(R.id.viewpager3);
                //存放点点的容器
                LinearLayout tipsBox = (LinearLayout) mMainView.findViewById(R.id.tipsBox);
                //初始化图片资源
                images = new int[]{R.drawable.app13,R.drawable.app14,R.drawable.app11};
                image_tips = new int[]{R.drawable.page, R.drawable.pagenow};
                BitmapFactory.Options opts = new BitmapFactory.Options();
                opts.inPreferredConfig = Bitmap.Config.RGB_565;
                opts.inPurgeable = true;
                opts.inInputShareable = true;
                bmp = new Bitmap[images.length];
                for (int i = 0; i < images.length;i++){
                    InputStream is = this.getResources().openRawResource(images[i]);
                    bmp[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //小原点图片
                bmp_tips = new Bitmap[image_tips.length];
                for (int i = 0 ; i < image_tips.length;i++){
                    InputStream is = this.getResources().openRawResource(image_tips[i]);
                    bmp_tips[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //初始化 提示点点
                tips = new ImageView[5];
                for (int i = 0 ; i< images.length;i++){
                    ImageView img = new ImageView(getActivity());
                    img.setLayoutParams(new LinearLayout.LayoutParams(20,20));
                    tips[i] = img;
                    if (i == 0){
                        img.setImageBitmap(bmp_tips[1]);
                    }else {
                        img.setImageBitmap(bmp_tips[0]);
                    }
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            new ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    params.leftMargin = 20;
                    params.rightMargin =20;
                    tipsBox.addView(img,params);
                }
                //初始化PagerAdapter
                PagerAdapter adapter = new PagerAdapter() {
                    @Override
                    public int getCount() {
                        return images.length;
                    }
        
                    @Override
                    public boolean isViewFromObject(@NonNull View arg0, @NonNull Object arg1) {
                        return arg0 == arg1;
                    }
        
                    @NonNull
                    @Override
                    public Object instantiateItem(@NonNull ViewGroup container, int position) {
                        ImageView im = new ImageView(getActivity());
                        im.setScaleType(ImageView.ScaleType.CENTER);
                        im.setImageBitmap(zoomImg(bmp[position],680,420));
                        container.addView(im);
                        return im;
                    }
        
        
                };
                viewPager.setAdapter(adapter);
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        
                    }
        
                    @Override
                    public void onPageSelected(int position) {
                        Log.e("rf",String.valueOf(position));
                        tips[currentPage].setImageBitmap(bmp_tips[0]);
                        currentPage = position;
                        tips[currentPage].setImageBitmap(bmp_tips[1]);
                    }
        
                    @Override
                    public void onPageScrollStateChanged(int arg0) {
        
                    }
                });
            }
            private Bitmap zoomImg(Bitmap bm,int newWidth,int newHeight) {
                //获得图片的宽高
                int width = bm.getWidth();
                int height = bm.getHeight();
                //计算缩放比例
                float scaleWidth = ((float) newWidth)/width;
                float scaleHeight = ((float) newHeight)/height;
                //取得想要缩放的matrix参数
                Matrix martix = new Matrix();
                martix.postScale(scaleWidth,scaleHeight);
                //取得新的图片,www.2cto.com
                Bitmap newbm = Bitmap.createBitmap(bm,0,0,width,height,martix,true);
                return newbm;
        
            }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
                ViewGroup p = (ViewGroup) mMainView.getParent();
                if (p!=null) {
                    p.removeAllViewsInLayout();
                }
                return mMainView;
            }
        }

      8. NewsFramgment4
        
        
        package com.e.myapplicationtest.fragment;
        
        import android.graphics.Bitmap;
        import android.graphics.BitmapFactory;
        import android.graphics.Matrix;
        import android.os.Bundle;
        
        //import androidx.fragment.app.Fragment;
        
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;
        import android.widget.LinearLayout;
        import android.widget.ListView;
        
        import com.e.myapplicationtest.R;
        
        import androidx.annotation.NonNull;
        import androidx.fragment.app.Fragment;
        import androidx.viewpager.widget.PagerAdapter;
        import androidx.viewpager.widget.ViewPager;
        
        import java.io.InputStream;
        
        /**
         * A simple {@link Fragment} subclass.
         * Use the {@link NewsFramgment4#?newInstance} factory method to
         * create an instance of this fragment.
         */
        public class NewsFramgment4 extends Fragment {
        
            // TODO: Rename parameter arguments, choose names that match
            // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
        
            ListView listView = null;
            private View mMainView;
            //显示新闻大图片代码
            private ViewPager viewPager;
            private ImageView[] tips;//提示性点点数组
            private int[] images;//图片ID数组
            private int[] image_tips;
            private int currentPage = 0 ;
            public Bitmap[] bmp = null;
            public Bitmap[] bmp_tips = null;
        
            public NewsFramgment4() {
                // Required empty public constructor
            }
        
            /**
             * Use this factory method to create a new instance of
             * this fragment using the provided parameters.
             *
             //     * @param param1 Parameter 1.
             //     * @param param2 Parameter 2.
             * @return A new instance of fragment NewsFramgment1.
             */
            // TODO: Rename and change types and number of parameters
        
        
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                LayoutInflater inflater = getActivity().getLayoutInflater();
                mMainView = inflater.inflate(R.layout.fragment_news_framgment4,(ViewGroup) getActivity().findViewById(R.id.viewpager),false);
                showBigImages();
        //        listView = (ListView) mMainView.findViewById(R.id.listview);
            }
        
            private void showBigImages() {
                viewPager =(ViewPager) mMainView.findViewById(R.id.viewpager4);
                //存放点点的容器
                LinearLayout tipsBox = (LinearLayout) mMainView.findViewById(R.id.tipsBox);
                //初始化图片资源
                images = new int[]{R.drawable.app10,R.drawable.app11,R.drawable.app12,R.drawable.app13,R.drawable.app14};
                image_tips = new int[]{R.drawable.page, R.drawable.pagenow};
                BitmapFactory.Options opts = new BitmapFactory.Options();
                opts.inPreferredConfig = Bitmap.Config.RGB_565;
                opts.inPurgeable = true;
                opts.inInputShareable = true;
                bmp = new Bitmap[images.length];
                for (int i = 0; i < images.length;i++){
                    InputStream is = this.getResources().openRawResource(images[i]);
                    bmp[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //小原点图片
                bmp_tips = new Bitmap[images.length];
                for (int i = 0 ; i < image_tips.length;i++){
                    InputStream is = this.getResources().openRawResource(images[i]);
                    bmp_tips[i] = BitmapFactory.decodeStream(is,null,opts);//将普通图片转换成位图
                }
                //初始化 提示点点
                tips = new ImageView[7];
                for (int i = 0 ; i< images.length;i++){
                    ImageView img = new ImageView(getActivity());
                    img.setLayoutParams(new LinearLayout.LayoutParams(20,20));
                    tips[i] = img;
                    if (i == 0){
                        img.setImageBitmap(bmp_tips[1]);
                    }else {
                        img.setImageBitmap(bmp_tips[0]);
                    }
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            new ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    params.leftMargin = 20;
                    params.rightMargin =20;
                    tipsBox.addView(img,params);
                }
                //初始化PagerAdapter
                PagerAdapter adapter = new PagerAdapter() {
                    @Override
                    public int getCount() {
                        return images.length;
                    }
        
                    @Override
                    public boolean isViewFromObject(@NonNull View arg0, @NonNull Object arg1) {
                        return arg0 == arg1;
                    }
        
                    @NonNull
                    @Override
                    public Object instantiateItem(@NonNull ViewGroup container, int position) {
                        ImageView im = new ImageView(getActivity());
                        im.setScaleType(ImageView.ScaleType.CENTER);
                        im.setImageBitmap(zoomImg(bmp[position],680,420));
                        container.addView(im);
                        return im;
                    }
        
        
                };
                viewPager.setAdapter(adapter);
                viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                    @Override
                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        
                    }
        
                    @Override
                    public void onPageSelected(int position) {
                        Log.e("rf",String.valueOf(position));
                        tips[currentPage].setImageBitmap(bmp_tips[0]);
                        currentPage = position;
                        tips[currentPage].setImageBitmap(bmp_tips[1]);
                    }
        
                    @Override
                    public void onPageScrollStateChanged(int arg0) {
        
                    }
                });
            }
            private Bitmap zoomImg(Bitmap bm,int newWidth,int newHeight) {
                //获得图片的宽高
                int width = bm.getWidth();
                int height = bm.getHeight();
                //计算缩放比例
                float scaleWidth = ((float) newWidth)/width;
                float scaleHeight = ((float) newHeight)/height;
                //取得想要缩放的matrix参数
                Matrix martix = new Matrix();
                martix.postScale(scaleWidth,scaleHeight);
                //取得新的图片,www.2cto.com
                Bitmap newbm = Bitmap.createBitmap(bm,0,0,width,height,martix,true);
                return newbm;
        
            }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
                ViewGroup p = (ViewGroup) mMainView.getParent();
                if (p!=null) {
                    p.removeAllViewsInLayout();
                }
                return mMainView;
            }
        }

      9. JsonParse
        
        package com.e.myapplicationtest.tool;
        
        import com.e.myapplicationtest.bean.NewsBean;
        import com.google.gson.Gson;
        import com.google.gson.reflect.TypeToken;
        
        import java.lang.reflect.Type;
        import java.util.List;
        
        public class JsonParse {
            public static List getNewsInfo(String json){
                //使用gson库解析json数据
        
                Gson gson = new Gson();
                //创建一个TypeToken的匿名子类对象,并调用对象的getType()方法
                Type listType = new TypeToken>(){}.getType();
                //把获取到的信息集合存到newsInfos中
                List newsInfos = gson.fromJson(json,listType);
                return newsInfos;
            }
        }
        

      10. NewsListAdapter
        
        
        package com.e.myapplicationtest.tool;
        
        import android.app.Activity;
        import android.content.Context;
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.ListView;
        import android.widget.TextView;
        
        import androidx.annotation.NonNull;
        
        import com.e.myapplicationtest.R;
        import com.e.myapplicationtest.bean.NewsBean;
        import com.google.android.material.transition.Hold;
        import com.loopj.android.image.SmartImageView;
        
        import org.w3c.dom.Text;
        
        import java.util.List;
        import java.util.logging.Handler;
        
        public class NewsListAdapter extends ArrayAdapter {
            private ListView listView;
            private LayoutInflater inflater;
            private Context context;
            Holder holder = null;
        //    String imgUrl ="";//存储图片的地址
        
            public NewsListAdapter(Activity activity, List newsBeans,ListView listView) {
                super(activity,0,newsBeans);
                this.listView = listView;
                //得到一个渲染对象
                inflater = activity.getLayoutInflater();
                this.context = activity;
                holder = new Holder();
            }
            public View getView(int position, View convertView, ViewGroup parent){
                if (convertView == null){
                    convertView = inflater.inflate(R.layout.news,null);
                    holder.img = (SmartImageView)convertView.findViewById(R.id.img);
                    holder.title = (TextView) convertView.findViewById(R.id.title);
                    holder.author = (TextView) convertView.findViewById(R.id.author);
                    holder.time = (TextView)convertView.findViewById(R.id.time);
                    convertView.setTag(holder);
                }else {
                    holder = (Holder) convertView.getTag();
                }
                //获取item对应第几条(positon)的Model实体
                NewsBean newsBean = getItem(position);
                String imageUrl = "http://(ip地址):8080/Web1/TestServlet/img/"+newsBean.getImg_name();
                System.out.println("imageUrl"+imageUrl);
                holder.img.setTag(imageUrl);
                holder.img.setImageUrl(imageUrl,R.drawable.icon);
                holder.title.setText(newsBean.getTitle());
                holder.author.setText(newsBean.getAuthor());
                holder.time.setText(newsBean.getTime());
                Log.i("text","position = "+position);
                return convertView;
            }
            static class Holder{
                SmartImageView img;
                TextView title;
                TextView author;
                TextView time;
        
            }
        }
        

      11. activity_main.xml
        
        
        
            
        
            
        
        

      12. activity_show_news.xml
        
        
            
        
                
        
                
        
                
        
            
        
            
        
                
        
                
        
                
        
                    
        
                    
                
        
                
        
                
        
                
                    
                
        
            
        

      13. fragment_news_framgment1.xml
        
        
        
            
            
        
                
                
                
                
                    
        
                    
                
            
            
            
        
        

      14. fragment_news_framgment2.xml
        
        
        
            
            
        
                
                
                
                
                    
        
                    
                
            
            
            
        
        

      15. fragment_news_framgment3.xml
        
        
        
            
            
        
                
                
                
                
                    
                    
                
            
            
            
        
        

      16. fragment_news_framgment4.xml
        
        
        
            
            
        
                
                
                
                
                    
                    
                
            
            
            
        
        

      17. news.xml
        
        
            
            
            
        
            
        

  3. IDEA中代码

    1.  框架:

    2. bootstrap框架,以放在下面

    3. 具体的代码

      1. DelNewsServlet
        
        package com.user.action;
        
        import com.user.dao.NewsDao;
        import jakarta.servlet.ServletException;
        import jakarta.servlet.annotation.WebServlet;
        import jakarta.servlet.http.HttpServlet;
        import jakarta.servlet.http.HttpServletRequest;
        import jakarta.servlet.http.HttpServletResponse;
        
        import java.io.IOException;
        
        @WebServlet("/delNews")
        public class DelNewsServlet extends HttpServlet{
            private static final long serialVersionUID = 1L;
        
            private NewsDao newsDao = new NewsDao();
        
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                response.setContentType("application/json;charset=gbk");
                String id = request.getParameter("id");
                int delNums = newsDao.delNewById(id);
                //1表示成功 0表示失败
                response.getWriter().write(delNums>0?"1":"0");
            }
        
            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                doGet(request,response);
            }
        }
        
      2. ListNewsServlet
        
        
        package com.user.action;
        
        import com.user.bean.NewsBean;
        import com.user.dao.NewsDao;
        import jakarta.servlet.ServletException;
        import jakarta.servlet.annotation.WebServlet;
        import jakarta.servlet.http.HttpServlet;
        import jakarta.servlet.http.HttpServletRequest;
        import jakarta.servlet.http.HttpServletResponse;
        
        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.List;
        
        @WebServlet("/listNews")
        public class ListNewsServlet extends HttpServlet {
            private static final long serialVersionUID = 1L;
        
            private NewsDao newsDao = new NewsDao();
            private List list = new ArrayList();
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                response.setCharacterEncoding("gbk");
                list = newsDao.findAllNews();
                request.setAttribute("newsList",list);
                request.getRequestDispatcher("news.jsp").forward(request,response

相关文章