• 仿知乎日报App


    1、6.Error:Execution failed for task ':app:buildInfoDebugLoader'.
    > Exception while doing past iteration backup : Source G:project***appuildintermediatesuildsdebug37215488613481classes.dex and destination G:project***appuildintermediatesuildsdebug37215488613481classes.dex must be different

    这种问题不知道怎么出现的,clean一下即可。

    2、Imageview加载网络图片,要用Handler。

    3、ImageView设置图片的比例问题。http://blog.csdn.net/hhbgk/article/details/8101676

    4、取消标题栏,只要设置一下Theme即可。

    第一步是爬取相关的文章标题,图片,以及地址。

    用的是普通的java写的,还有用了htmlunit的库比较方便,为什么要这样,还得学下css

    源网址:http://daily.zhihu.com

    出来的效果大概是这样

    代码:

    import java.io.IOException;
    import java.net.MalformedURLException;
    
    import com.gargoylesoftware.htmlunit.BrowserVersion;
    import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
    import com.gargoylesoftware.htmlunit.WebClient;
    import com.gargoylesoftware.htmlunit.html.DomNode;
    import com.gargoylesoftware.htmlunit.html.DomNodeList;
    import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
    import com.gargoylesoftware.htmlunit.html.HtmlImage;
    import com.gargoylesoftware.htmlunit.html.HtmlPage;
    
    public class main {
        
        public static void main(String args[]) throws FailingHttpStatusCodeException, MalformedURLException, IOException{
            
            
            
             String url = "http://daily.zhihu.com";
            
             WebClient webClient = new WebClient(BrowserVersion.CHROME);
             
             //把警告弄掉的
             webClient.getOptions().setJavaScriptEnabled(false);
    
             webClient.getOptions().setCssEnabled(false);
             
             HtmlPage page = webClient.getPage(url);
             
            //System.out.println(page.asXml());
             
             //DomNode content = page.querySelector(".main-wrap.content-wrap");
             //System.out.println(content.asXml());
             
             
             
             
             //找到所有wrap的类
             DomNodeList<DomNode> iList = page.querySelectorAll(".wrap");
             
             for(DomNode i: iList){
                 
                     HtmlAnchor a = (HtmlAnchor)i.querySelector("a");
                     HtmlImage img = (HtmlImage)i.querySelector("img");
    
                    // 获取 a 标签的属性 href ,就是帖子详情的地址啦!!
                    String href = a.getAttribute("href");
                    String src = img.getAttribute("src");
                    String title = i.asText();
                 
                 
                    System.out.println(title);
                    System.out.println(href);
                    System.out.println(src);
                 
                 
             }//end for
            
        }
    
    }

    第二步:怎么处理获得的数据?

    就是UI的问题,这个暂时没有设计好- -

    就是网上的图片获取之后弄成bitmap,然后在handleMessage里面设置到ImageView里面

    还有就是涉及网络的任务必须新开一个线程,不能在主线程执行

    代码:

    public class MainActivity extends AppCompatActivity {
    
        WebView webView;
        ImageView imageView;
        Bitmap bitmap;
    
        Handler handler;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
            handler = new Handler(){
    
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    Log.d("TAG","getMessage");
    
                    imageView.setImageBitmap(bitmap);
    
                }
            };
    
            /*
            webView = (WebView)findViewById(R.id.webView);
    
            webView.loadUrl("http://daily.zhihu.com/story/8746558");
            */
    
            imageView = (ImageView)findViewById(R.id.imageview1);
    
    
    
            new Thread(new Runnable() {
                @Override
                public void run() {
    
                    try {
                        getImageViewInputStream();
    
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                        Message message = new Message();
                        handler.sendMessage(message);
    
    
    
                }
            }).start();
    
    
    
    
            }
    
        public void getImageViewInputStream() throws IOException {
                    InputStream inputStream = null;
                     URL url = new URL("http://pic1.zhimg.com/96b31814276e24e991064920567ed9e4.jpg");                    //服务器地址
                     if (url != null) {
                             //打开连接
                             HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                             //httpURLConnection.setConnectTimeout(3000);//设置网络连接超时的时间为3秒
                             httpURLConnection.setRequestMethod("GET");        //设置请求方法为GET
                             httpURLConnection.setDoInput(true);                //打开输入流
                             httpURLConnection.connect();
                         int responseCode = httpURLConnection.getResponseCode();    // 获取服务器响应值
                             if (responseCode == HttpURLConnection.HTTP_OK) {        //正常连接
                                     inputStream = httpURLConnection.getInputStream();        //获取输入流
                                     bitmap = BitmapFactory.decodeStream(inputStream);
                                    inputStream.close();
                                 Log.d("TAG","getOK");
                                 }
    
    
                         }
    
                 }
    
    }

    第三步:怎么处理文章?

    当时还在纠结一堆html格式的怎么解析,后来想到可以用WebView偷懒。直接把文章的网址放在WebView里面就好了

  • 相关阅读:
    xml模塊
    xlrd,xlwt模塊
    logging模塊
    正則補充
    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
    安卓--子线程和主线程之间的交互实例(时钟)
    Android--全局获取Context的技巧
    Android 广播机制
    android编写Service入门
    Android的Looper,Handler以及线程间的通信
  • 原文地址:https://www.cnblogs.com/wzben/p/5853660.html
Copyright © 2020-2023  润新知