zoukankan      html  css  js  c++  java
  • 开始Android的一点心得

      开始学习android的开发,最开始想想,应该和MFC差不多。他们都是用现成的框架,用系统API,然后是面向对象,这样想倒是觉得蛮简单,所以信誓旦旦的答应老师自己可以做的很好,很快上手。还有就是以前看过一篇文章,说的是做php的直接因为公司需要,开始做android,从零开始,到产品发布,所花费的时间是一个月!我觉得嘛,他可以我也可以!然后就匆匆上路,去图书馆借了两本书,自己买了一本!

         第一周,什么都没做,到周三才去老师那里,搭配环境,了解了几个基本控件,而且他让我先看关于解析XML文件的东西。因为以前自己在windows和ubuntu上面都有过搭配的经历,所以一个下午就搞定了。后面就是各种看书,学习怎么用java(其实是套着C#的思路),当时就遇到了一点麻烦,什么extends、super、implements,看看继承多态封装以及package方面的东西,因为以为是一样的,没怎么看,后来还真是挺麻烦的啊!不过就这么磕磕绊绊的快走过第一周,直到周五下午,谭哥给我布置了个任务,就是下个程序,下载网络图片,然后把它显示出来。在这个过程,实现不是很顺利,周五一个下午没有做出来,虽然看了很多网上的例子,但是我写了却实现不了,又因为周六要全天去工作室做事,周日白天也是,只剩一个周日下午了!心里还是想是有点压力的啊,做不好多尴尬嘛!

        现在从周五开始说说细节。

      周五的晚上,一直在工作室调android,因为工作室的任务完成了。从网上找了几个实例,但是在本地实现不了,各种错误,然后自己每个都看了,归纳了下大致过程,然后自己试着去完成,一直没有成功。刚写完的时候,一直纠结调试不方便,然后想着弹个AlertWindow,让他报告程序中各变量的值,但是因为是在后台程序,下载tools包里面的,结果不成功,找了很多原因,没解决!后来补了下android 上debug 的方式,又借来个android手机,慢慢就学了点!

      到了周六晚上,从晚上十一点开始调,高了半天Toast函数,放在其他包里没用,只好放在主Activity里面让它实现,然后写了个tools函数,用来从指定的URL里面下载图片,各种不成功,但是没用认真看错误信息(瓜的吧,嘻嘻),然后就各种不知道问题!后面折腾了半天,慢慢开始看错误信息,终于发现没用给网络访问的权限,然后加上了。但是接着调,还是不行,结果是网络访问不了,很纠结啊!然后到凌晨两点,受不了了,睡觉。

      周日哦,在工作室,本来6点左右下班,但是因为今天天气不错,大家吵着去打球,所以去耍了,直到下午六点半,回寝室准备去洗澡!脱了衣服,在电脑前犹豫了一下,接着开始调程序,然后就仔细看错误信息。发现错误里面说Fatal error,Main,然后bing了一下,就发现时xml文件配置有问题,然后就改了,后来还是有好多问题,觉得纠结,就把tools里面的代码放到Activity函数里面,然后一调就ok饿。安心去洗澡了。最后的程序啊是这样的

    package pictureyou.main;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.Toast;
    import android.widget.Button;
    
    
    public class PictureYouActivity extends Activity {
    	private ImageView imgView;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            imgView = (ImageView)findViewById(R.id.imageView1);
            Toast.makeText(getBaseContext(), "好像可以用", Toast.LENGTH_SHORT).show();
            try
            {
                URL url = new URL("http://bbs.qshpan.com/images/newind/logo.gif");
                try
                {
                	Bitmap bit = null;
                	HttpURLConnection conn = (HttpURLConnection)url.openConnection();
                	//Bitmap bit = getImage(url);
    				conn.setDoInput(true);
    				conn.connect();
    				InputStream is = conn.getInputStream();
    				bit = BitmapFactory.decodeStream(is);
                    if(bit != null)
                    {
                        imgView.setImageBitmap(bit);
                    }
                    else
                    {
                    	Bitmap bitt1 = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                        imgView.setImageBitmap(bitt1);
                    }
                }
                catch(IOException e)
                {
                	e.printStackTrace();
                }
            }
            catch(MalformedURLException err)
            {
            	err.printStackTrace();
            }
            Button bu = (Button)findViewById(R.id.button1);
            bu.setOnClickListener(new Button.OnClickListener(){
        		public void onClick(View arg0) {
    			// TODO Auto-generated method stub
            	Bitmap bitt1 = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                imgView.setImageBitmap(bitt1);
    			}
            });
        }
        
    	public Bitmap getImage(URL url) throws IOException
    	{
    		Bitmap bit = null;
    		try{
    			HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    			int ints = conn.getResponseCode();
    			if(ints == HttpURLConnection.HTTP_OK){
    				conn.setDoInput(true);
    				conn.connect();
    				InputStream is = conn.getInputStream();
    				int length = (int)conn.getContentLength();
    				if(length != -1){
    //					byte[] imageContent = new byte[length];
    //					byte[] buff = new byte[512];
    //					int readLength = 0,desPos = 0;
    //					while((readLength = is.read(buff))>0){
    //						System.arraycopy(buff,0,imageContent,desPos,readLength);
    					bit = BitmapFactory.decodeStream(is);
    				}
    					//bit = BitmapFactory.decodeByteArray(imageContent, 0, imageContent.length);
    			}
    			else
    			{
    				bit = BitmapFactory.decodeResource(getResources(), R.drawable.a123);
    			}
    		}
    		catch(IOException e)
    		{
    			e.printStackTrace();
    		}
    		return bit;
    	}
    }
    

      

     xml文件这样

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.24"
            android:text="Button" />
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/vv1"
            android:layout_weight="0.24"
            android:src="@drawable/a123" />
    

      

     其中tools里面是这样,虽然没有用,可以参考我移动的代码

    package pictureyou.tools;
    
    import pictureyou.main.*;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import android.R;
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.util.Log;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.view.LayoutInflater;
    
    import pictureyou.main.*;
    
    public class LoadRemoteImage {
    	public static Bitmap getImage(URL url,Object obj) throws IOException
    	{
    		Bitmap bit = null;
    		try{
    			HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    			conn.setDoInput(true);
    			conn.connect();
    			InputStream is = conn.getInputStream();
    			int length = (int)conn.getContentLength();
    			if(length != -1){
    				byte[] imageContent = new byte[length];
    				byte[] buff = new byte[512];
    				int readLength = 0,desPos = 0;
    				while((readLength = is.read(buff))>0){
    					System.arraycopy(buff,0,imageContent,desPos,readLength);
    				}
    				bit = BitmapFactory.decodeByteArray(imageContent, 0, imageContent.length);
    			}
    		}
    		catch(IOException e)
    		{
    			e.printStackTrace();
    		}
    		return bit;
    	}
    }
    

      androidmanifest.xml里面的权限添加

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="pictureyou.main"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk android:minSdkVersion="9" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />   
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
        <uses-permission android:name="android.permission.WAKE_LOCK" /> 
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".PictureYouActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    

      总结下嘛,就是以后认真看错误日志,没有错误日志,靠自己臆测,对于刚接触的方面还是不靠谱啊!

      学从难处学,用从易处用。不要一开始把问题搞得那么复杂,实现了基本的需求才是根本。这个我在面向对象的编程实践里面看到过,虽然原话不是这么说的,但差不多这个意思(学习不够深入),以后得注意了!比如什么AlertWindows,Toast都是无关紧要的东西,不该弄啊。

      还有吧,这种速成的东西,看例子很重要啊!学习速度可以很快的!

  • 相关阅读:
    实验12——java取整、猜数和猜拳
    实验11——java线程模拟卖票
    实验10—— java读取歌词文件内容动画输出
    实验09——java基于TCP实现客户端与服务端通信
    JavaSE第十四天
    javaSE第十一天
    JavaSE第十天
    JavaSE第十天
    JavaSE第九天
    JavaSE第八天
  • 原文地址:https://www.cnblogs.com/imhurley/p/2417243.html
Copyright © 2011-2022 走看看