• android 图片查看器


    android实现的图片查看器

        public class MainActivity extends AppCompatActivity {
    
        private EditText et_new_path;
        private ImageView iv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            et_new_path =(EditText)findViewById(R.id.et_new_path);
            iv = (ImageView) findViewById(R.id.iv);
        }
    
         public void click(View view)
        {
            new Thread(){//在android中一般获取一个子线程来实现一个费时的操作。如果不明白,下面有解释
                public void run(){
                    try
                    {
                        String path = et_new_path.getText().toString().trim()//获取输入框中的路径
            
                        URL url = new URL (path);
    
                        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    
                        conn.setRequestMethod("GET");
    
                        conn.setConnectTimeout(5000);
    
                        int code = conn.getResponseCode();
    
                        if(code == 200)
                        {
                            InputStream in = conn.getInputStream();
    
                            final Bitmap bitmap = BitmapFactory.decodeStream(in);
    
                            runOnUiThread(new Runnable(){
                            public void run(){
                                iv.setImageBitmap(bitmap);
                            }
                            });
                        }
                    }
                    catch(Exception e)//这里为为了方便这样写
                    {
                       e.printlStackTrace();
                    }
                }
            }.start();
        }
    }
    

    1.为什么要创建一个子线程呢?


    ####我个人最开始也是不明白其中的原因,于是从网上找一找解释。在android中的主线程的作用是负责控制UI Thread界面的显示、更新和控件交互。UI Thread所执行的内容花费的时间最好越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等)都应该交給子线程执行,以免堵塞主线程。
    ####2.runOnUiThread的用法: 在开发文档中的写法是: Runs the specified action on the UI thread. If the current thread is the UI thread, then the action is executed immediately. If the current thread is not the UI thread, the action is posted to the event queue of the UI thread. ####上面的英文的大致含义是:运行一个指定的动作,若果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,行动是发布到UI线程的事件队列。

    3.使用Handler 与 使用runOnUiThread的区别:

    [1] 如果仅仅是更新一个UI则可以使用runOnUiThread来代替Handler

    [2] 但是需要携带多条数据的时候还是需要使用handler与Message

    最后别忘了加用户权限

    <uses-permission android:name="android.permission.INTERNET"/>
    
  • 相关阅读:
    C#项目间循环引用的解决办法,有图有真相
    打破关注自己的门
    引用AForge.video.ffmpeg,打开时会报错:找不到指定的模块,需要把发行包第三方文件externalsffmpegin里的dll文件拷到windows的system32文件夹下。
    Gs_Class.Gs_DataFunction数据操作类库20160225
    Gs_Class._BaseQueryWeb查询页面基类(aspx.net)
    关于开钱箱(不是用螺丝刀子开)
    处理模糊查询时读取url地址参数变化的情况
    jeecg单步调试
    jeecg安装——mysql数据库创建+手动执行初始化脚本
    小程序动画效果
  • 原文地址:https://www.cnblogs.com/gxcstyle/p/6807663.html
Copyright © 2020-2023  润新知