kotlin开发android例子-股票查询

来源:互联网 发布:淘宝外卖网址 编辑:程序博客网 时间:2024/05/16 17:59

kotlin不错,用来做android程序,还是非常方便的,这个股票查询的程序,用到了多线程,网络查询,之后,我会在教育频道发布上讲解视频;



package gupiao.dvd.com.gupiaoimport android.app.AlertDialogimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport android.content.Intentimport android.widget.TextViewimport android.graphics.Bitmapimport android.graphics.Matriximport android.graphics.PointFimport android.view.Viewimport android.widget.ImageViewimport kotlinx.android.synthetic.main.activity_main.*import android.graphics.BitmapFactoryimport android.os.Handlerimport android.os.Messageimport java.io.IOExceptionimport java.net.HttpURLConnectionimport java.net.MalformedURLExceptionimport java.net.URLimport android.view.MotionEventclass MainActivity : AppCompatActivity() {    private var handler: android.os.Handler? = null  //主线程处理消息的hander    var url_image: String = ""                       //用于存放获取网络股票行情图偏文件的url地址;    var bmp: Bitmap? = null                  //网络图片的bitmap数据    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        mainDo_after_mythread_query_net_image()//启动主线程值守处理函数        on_btn_query_click(Button_query);    }    fun on_btn_query_click(v: View) {        val gupiao_code = EditText_gupiao_code.text.toString()        // AlertDialog.Builder(this).setTitle("提醒").setMessage(gupiao_code).show();        textview_msg?.text = "正在查询......"        url_image = "http://image.sinajs.cn/newchart/daily/n/sh" + gupiao_code + ".gif"        Thread(mythread_query_net_image()).start() //启动子线程查询网络图片    }    //begin 后台子线程,访问网络,获取图片数据    internal inner class mythread_query_net_image : Runnable {        override fun run() {            bmp = get_url_bitmap(url_image)            val message = Message.obtain()   //创建Message对象,返回信息            //message.obj = json_info;            message.what = 1            handler?.sendMessage(message)        }    }    //end 后台子线程,访问网络,获取图片数据    //begin 主线程值守处理函数    fun mainDo_after_mythread_query_net_image(): Boolean {        handler = object : Handler() {            override fun handleMessage(msg: Message) {                if (msg.what == 1) {                    imageView_stock.setImageBitmap(bmp)                    textview_msg.text = "查询成功"                }            }        }        return true    }    //end主线程值守处理函数    //访问网络,获取图片    fun get_url_bitmap(url_image: String): Bitmap? {        if (url_image.trim() == "") {            return null        }        var myFileUrl: URL? = null        var bitmap: Bitmap? = null        try {            myFileUrl = URL(url_image)        } catch (e: MalformedURLException) {            e.printStackTrace()        }        try {            val conn = myFileUrl!!                    .openConnection() as HttpURLConnection            conn.setDoInput(true)            conn.connect()            var inputStream = conn.getInputStream()            bitmap = BitmapFactory.decodeStream(inputStream)            inputStream.close()        } catch (e: IOException) {            e.printStackTrace()            return null        }        //imageView.setImageBitmap(bitmap)        //com.dvd.util.message_box()        return bitmap    }    private fun spacing(event: MotionEvent): Float {        val x = event.getX(0) - event.getX(1)        val y = event.getY(0) - event.getY(1)        var z = Math.sqrt((x * x + y * y).toDouble());        return z.toFloat();    }    private fun midPoint(point: PointF, event: MotionEvent) {        val x = event.getX(0) + event.getX(1)        val y = event.getY(0) + event.getY(1)        point.set(x / 2, y / 2)    }    val ZOOM_IN_SCALE:Float = 1.25f    val ZOOM_OUT_SCALE:Float = 0.8f    var zoomedBMP: Bitmap? = null    var scaleWidth: Float = 1f    var scaleHeight: Float = 1f    fun to_small(view: View) {        var bmpWidth: Int = bmp!!.getWidth()        var bmpHeight: Int = bmp!!.getHeight()        scaleWidth = scaleWidth * ZOOM_OUT_SCALE        scaleHeight = scaleHeight * ZOOM_OUT_SCALE        val matrix = Matrix()        matrix.postScale(scaleWidth.toFloat(), scaleHeight.toFloat())        zoomedBMP = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix,                true)        imageView_stock.setImageBitmap(zoomedBMP)    }    fun to_enlarge(view: View) {        try {            val bmpWidth: Int = bmp!!.getWidth()    //获取现有的图片的宽度            val bmpHeight: Int = bmp!!.getHeight()  //获取现有的图片的高度            scaleWidth = scaleWidth * ZOOM_IN_SCALE            scaleHeight = scaleHeight * ZOOM_IN_SCALE            val matrix = Matrix()            matrix.postScale(scaleWidth, scaleHeight)            zoomedBMP = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true)            imageView_stock.setImageBitmap(zoomedBMP)        } catch (e: Exception) {             AlertDialog.Builder(this).setMessage(e.toString()).show();        }    }}