当前位置:  编程技术>移动开发
本页文章导读:
    ▪圆球旋转Anim(主要学习点Matrix知识)        球体旋转Anim(主要学习点Matrix知识) 这点Code主要对View重写进行球体旋转: 知识点: 1.重写View 2.将Drawable资源转化为Bitmap 直接上代码(便于以后查看使用): Java代码  class MyView extends View {       .........
    ▪ EditText输入事件缴获与监听        EditText输入事件截获与监听   本节介绍一下EditText中进行文字截获和事件监听。  预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容    1.第.........
    ▪ 远路下载安装apk文件到手机或模拟器       远程下载安装apk文件到手机或模拟器 废话少说,直接上代码,会加上详细注释: 测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk Java代码    package cn.com;     import android.app.Activity;   impo.........

[1]圆球旋转Anim(主要学习点Matrix知识)
    来源: 互联网  发布时间: 2014-02-18
球体旋转Anim(主要学习点Matrix知识)
这点Code主要对View重写进行球体旋转:
知识点:
1.重写View
2.将Drawable资源转化为Bitmap

直接上代码(便于以后查看使用):
Java代码 
class MyView extends View {  
        private Bitmap bitmap1;  
        private Bitmap bitmap2;  
        private int digree1 = 0;  
        private int digree2 = 360;  
 
        public MyView(Context context) {  
            super(context);  
            setBackgroundColor(Color.WHITE);  
            InputStream is = getResources().openRawResource(R.drawable.cross);  
            bitmap1 = BitmapFactory.decodeStream(is);  
            is = getResources().openRawResource(R.drawable.ball);  
            bitmap2 = BitmapFactory.decodeStream(is);  
        }  
 
        @Override 
        protected void onDraw(Canvas canvas) {  
            Matrix matrix = new Matrix();  
            if (digree1 > 360)  
                digree1 = 0;  
            if (digree2 < 0)  
                digree2 = 360;  
            matrix.setRotate(digree1++, 160, 240);  
            canvas.setMatrix(matrix);  
            canvas.drawBitmap(bitmap1, 88, 169, null);  
            matrix.setRotate(digree2--, 160, 240);  
            canvas.setMatrix(matrix);  
            canvas.drawBitmap(bitmap2, 35, 115, null);  
            invalidate();  
        }  
 
    } 

    
[2] EditText输入事件缴获与监听
    来源: 互联网  发布时间: 2014-02-18
EditText输入事件截获与监听
  本节介绍一下EditText中进行文字截获和事件监听。
  预期目标:如下图,输入框中每输入一个字符,下面的TextView可以迅速的显示出来输入框中的内容 


  1.第一种实现方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件
 edittext.setOnKeyListener(new View.OnKeyListener() {			
			@Override
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				textview.setText(edittext.getText());
				return false;
			}
		});


2.使用TextWatcher类,这种方式是可以监听软键盘和硬键盘的,我们只需要实现onTextChanged方法即可,另外TextWatcher还提供了beforeTextChanged和afterTextChanged方法,用于更加详细的输入监听处理

edittext.addTextChangedListener(new TextWatcher() {			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				textview.setText(edittext.getText());
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {				
			}
			
			@Override
			public void afterTextChanged(Editable s) {								
			}
		});


3、代码片段:实现当输入到最大值时则不允许再输入了,另外,由于EditText并没有提供给我们EditText的禁止输入功能,以下方法也实现了此功能。
private void setEditable(EditText mEdit, int maxLength, boolean value) {
		if (value) {
			mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
			mEdit.setCursorVisible(true);
			mEdit.setFocusableInTouchMode(true);
			mEdit.requestFocus();
		} else {
			mEdit.setFilters(new InputFilter[] { new InputFilter() {
				@Override
				public CharSequence filter(CharSequence source, int start,
						int end, Spanned dest, int dstart, int dend) {
					return source.length() < 1 ? dest.subSequence(dstart, dend)
							: "";
				}
			} });
			mEdit.setCursorVisible(false);
			mEdit.setFocusableInTouchMode(false);
			mEdit.clearFocus();
		}
	}



    
[3] 远路下载安装apk文件到手机或模拟器
    来源: 互联网  发布时间: 2014-02-18
远程下载安装apk文件到手机或模拟器
废话少说,直接上代码,会加上详细注释:
测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
Java代码 
 
package cn.com;  
 
import android.app.Activity;  
import android.content.Intent;  
import android.net.Uri;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.View;  
import android.webkit.URLUtil;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.TextView;   
 
/*必须引用java.io与java.net*/ 
 
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.net.URL;  
import java.net.URLConnection;  
 
 
public class InstallUrlApk extends Activity  
{  
  private TextView mTextView01;  
  private EditText mEditText01;  
 
//点击下载的按钮  
 
  private Button mButton01;  
  private static final String TAG = "DOWNLOADAPK";  
  private String currentFilePath = "";  
  private String currentTempFilePath = "";  
  private String strURL = "";  
  private String fileEx = "";  
  private String fileNa = "";  
 
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState)  
  {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
 
    mTextView01 = (TextView) findViewById(R.id.myTextView1);  
    mButton01 = (Button) findViewById(R.id.myButton1);  
    mEditText01 = (EditText) findViewById(R.id.myEditText1);  
 
    mButton01.setOnClickListener(new Button.OnClickListener()  
    {  
      public void onClick(View v)  
      {  
        /* 文件会下载至local端 */ 
        mTextView01.setText("下载中...");  
        strURL = mEditText01.getText().toString();  
        /取得欲安装程序之文件名称(后缀名)  
        fileEx = strURL.substring(strURL.lastIndexOf(".") + 1, strURL.length())  
            .toLowerCase();  
 
        System.out.println("***************fileEx =" + fileEx);  
 
        fileNa = strURL.substring(strURL.lastIndexOf("/") + 1, strURL  
            .lastIndexOf("."));  
 
        System.out.println("***************fileNa =" + fileNa);  
 
        //开启一个子线程进行文件的下载  
        getFile(strURL);  
      }  
    });  
 
    mEditText01.setOnClickListener(new EditText.OnClickListener()  
    {  
      @Override 
      public void onClick(View arg0)  
      {  
        // TODO Auto-generated method stub  
        mEditText01.setText("");  
        mTextView01.setText("远程安装程序(请输入URL)");  
      }  
    });  
  }  
 
  /* 处理下载URL文件自定义函数 */ 
  private void getFile(final String strPath)  
  {  
    try 
    {  
      if (strPath.equals(currentFilePath))  
      {  
        getDataSource(strPath);  
      }  
      currentFilePath = strPath;  
      Runnable r = new Runnable()  
      {  
        public void run()  
        {  
          try 
          {  
            // 开启一个线程进行远程文件下载  
            getDataSource(strPath);  
          } catch (Exception e)  
          {  
            Log.e(TAG, e.getMessage(), e);  
          }  
        }  
      };  
      new Thread(r).start();  
    } catch (Exception e)  
    {  
      e.printStackTrace();  
    }  
  }  
 
  /* 取得远程文件 */ 
  private void getDataSource(String strPath) throws Exception  
  {  
//如果是一个正确的网址,就返回true  
    if (!URLUtil.isNetworkUrl(/blog_article/strPath/index.html))  
    {  
      mTextView01.setText("错误的URL");  
    } else 
    {  
      /* 取得URL */ 
      URL myURL = new URL(strPath);  
      /* 创建连接 */ 
      URLConnection conn = myURL.openConnection();  
      conn.connect();  
      /* InputStream 下载文件 */ 
      InputStream is = conn.getInputStream();  
      if (is == null)  
      {  
        throw new RuntimeException("stream is null");  
      }  
      // 创建临时文件   
      // 两个参数分别为前缀和后缀  
      File myTempFile = File.createTempFile(fileNa, "." + fileEx);  
 
      /* 取得站存盘案路径 */ 
      currentTempFilePath = myTempFile.getAbsolutePath();  
      /* 将文件写入暂存盘 */ 
      FileOutputStream fos = new FileOutputStream(myTempFile);  
      byte buf[] = new byte[128];  
      do 
      {  
        int numread = is.read(buf);  
        if (numread <= 0)  
        {  
          break;  
        }  
        fos.write(buf, 0, numread);  
      } while (true);  
 
      // 打开文件进行安装(下载完成后执行的操作)  
      openFile(myTempFile);  
      try 
      {  
        is.close();  
      } catch (Exception ex)  
      {  
        Log.e(TAG, "error: " + ex.getMessage(), ex);  
      }  
    }  
  }  
 
  // 在手机上打开文件的method  
  private void openFile(File f)  
  {  
    Intent intent = new Intent();  
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    intent.setAction(android.content.Intent.ACTION_VIEW);  
 
    /* 调用getMIMEType()来取得MimeType */ 
    String type = getMIMEType(f);  
    /* 设置intent的file与MimeType */ 
    intent.setDataAndType(Uri.fromFile(f), type);  
    startActivity(intent);  
  }  
 
  /* 判断文件MimeType的method */ 
  private String getMIMEType(File f)  
  {  
    String type = "";  
    String fName = f.getName();  
    /* 取得扩展名 */ 
    String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length())  
        .toLowerCase();  
 
    /* 依扩展名的类型决定MimeType */ 
    if (end.equals("m4a") || end.equals("mp3") || end.equals("mid")  
        || end.equals("xmf") || end.equals("ogg") || end.equals("wav"))  
    {  
      type = "audio";  
    } else if (end.equals("3gp") || end.equals("mp4"))  
    {  
      type = "video";  
    } else if (end.equals("jpg") || end.equals("gif") || end.equals("png")  
        || end.equals("jpeg") || end.equals("bmp"))  
    {  
      type = "image";  
    } else if (end.equals("apk"))  
    {  
      /* android.permission.INSTALL_PACKAGES */ 
      type = "application/vnd.android.package-archive";  
    } else 
    {  
      type = "*";  
    }  
    /* 如果无法直接打开,就跳出软件列表给用户选择 */ 
    if (end.equals("apk"))  
    {  
    } else 
    {  
      type += "/*";  
    }  
    return type;  
  }  
 
  /* 自定义删除文件方法 */  
  private void delFile(String strFileName)  
  {  
    File myFile = new File(strFileName);  
    if (myFile.exists())  
    {  
      myFile.delete();  
    }  
  }  
 
  /* 当Activity处于onPause状态时,更改TextView文字状态 */ 
  @Override 
  protected void onPause()  
  {  
    mTextView01 = (TextView) findViewById(R.id.myTextView1);  
    mTextView01.setText("下载成功");  
    super.onPause();  
  }  
 
  /* 当Activity处于onResume状态时,删除临时文件 */ 
  @Override 
  protected void onResume()  
  {  
    // TODO Auto-generated method stub  
    /* 删除临时文件 */ 
    delFile(currentTempFilePath);  
    super.onResume();  
  }  



package cn.com;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/*必须引用java.io与java.net*/

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;


public class InstallUrlApk extends Activity
{
  private TextView mTextView01;
  private EditText mEditText01;

//点击下载的按钮

  private Button mButton01;
  private static final String TAG = "DOWNLOADAPK";
  private String currentFilePath = "";
  private String currentTempFilePath = "";
  private String strURL = "";
  private String fileEx = "";
  private String fileNa = "";

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mTextView01 = (TextView) findViewById(R.id.myTextView1);
    mButton01 = (Button) findViewById(R.id.myButton1);
    mEditText01 = (EditText) findViewById(R.id.myEditText1);

    mButton01.setOnClickListener(new Button.OnClickListener()
    {
      public void onClick(View v)
      {
        /* 文件会下载至local端 */
        mTextView01.setText("下载中...");
        strURL = mEditText01.getText().toString();
        /取得欲安装程序之文件名称(后缀名)
        fileEx = strURL.substring(strURL.lastIndexOf(".") + 1, strURL.length())
            .toLowerCase();

        System.out.println("***************fileEx =" + fileEx);

        fileNa = strURL.substring(strURL.lastIndexOf("/") + 1, strURL
            .lastIndexOf("."));

        System.out.println("***************fileNa =" + fileNa);

        //开启一个子线程进行文件的下载
        getFile(strURL);
      }
    });

    mEditText01.setOnClickListener(new EditText.OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // TODO Auto-generated method stub
        mEditText01.setText("");
        mTextView01.setText("远程安装程序(请输入URL)");
      }
    });
  }

  /* 处理下载URL文件自定义函数 */
  private void getFile(final String strPath)
  {
    try
    {
      if (strPath.equals(currentFilePath))
      {
        getDataSource(strPath);
      }
      currentFilePath = strPath;
      Runnable r = new Runnable()
      {
        public void run()
        {
          try
          {
            // 开启一个线程进行远程文件下载
            getDataSource(strPath);
          } catch (Exception e)
          {
            Log.e(TAG, e.getMessage(), e);
          }
        }
      };
      new Thread(r).start();
    } catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  /* 取得远程文件 */
  private void getDataSource(String strPath) throws Exception
  {
//如果是一个正确的网址,就返回true
    if (!URLUtil.isNetworkUrl(/blog_article/strPath/index.html))
    {
      mTextView01.setText("错误的URL");
    } else
    {
      /* 取得URL */
      URL myURL = new URL(strPath);
      /* 创建连接 */
      URLConnection conn = myURL.openConnection();
      conn.connect();
      /* InputStream 下载文件 */
      InputStream is = conn.getInputStream();
      if (is == null)
      {
        throw new RuntimeException("stream is null");
      }
      // 创建临时文件
      // 两个参数分别为前缀和后缀
      File myTempFile = File.createTempFile(fileNa, "." + fileEx);

      /* 取得站存盘案路径 */
      currentTempFilePath = myTempFile.getAbsolutePath();
      /* 将文件写入暂存盘 */
      FileOutputStream fos = new FileOutputStream(myTempFile);
      byte buf[] = new byte[128];
      do
      {
        int numread = is.read(buf);
        if (numread <= 0)
        {
          break;
        }
        fos.write(buf, 0, numread);
      } while (true);

      // 打开文件进行安装(下载完成后执行的操作)
      openFile(myTempFile);
      try
      {
        is.close();
      } catch (Exception ex)
      {
        Log.e(TAG, "error: " + ex.getMessage(), ex);
      }
    }
  }

  // 在手机上打开文件的method
  private void openFile(File f)
  {
    Intent intent = new Intent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setAction(android.content.Intent.ACTION_VIEW);

    /* 调用getMIMEType()来取得MimeType */
    String type = getMIMEType(f);
    /* 设置intent的file与MimeType */
    intent.setDataAndType(Uri.fromFile(f), type);
    startActivity(intent);
  }

  /* 判断文件MimeType的method */
  private String getMIMEType(File f)
  {
    String type = "";
    String fName = f.getName();
    /* 取得扩展名 */
    String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length())
        .toLowerCase();

    /* 依扩展名的类型决定MimeType */
    if (end.equals("m4a") || end.equals("mp3") || end.equals("mid")
        || end.equals("xmf") || end.equals("ogg") || end.equals("wav"))
    {
      type = "audio";
    } else if (end.equals("3gp") || end.equals("mp4"))
    {
      type = "video";
    } else if (end.equals("jpg") || end.equals("gif") || end.equals("png")
        || end.equals("jpeg") || end.equals("bmp"))
    {
      type = "image";
    } else if (end.equals("apk"))
    {
      /* android.permission.INSTALL_PACKAGES */
      type = "application/vnd.android.package-archive";
    } else
    {
      type = "*";
    }
    /* 如果无法直接打开,就跳出软件列表给用户选择 */
    if (end.equals("apk"))
    {
    } else
    {
      type += "/*";
    }
    return type;
  }

  /* 自定义删除文件方法 */
  private void delFile(String strFileName)
  {
    File myFile = new File(strFileName);
    if (myFile.exists())
    {
      myFile.delete();
    }
  }

  /* 当Activity处于onPause状态时,更改TextView文字状态 */
  @Override
  protected void onPause()
  {
    mTextView01 = (TextView) findViewById(R.id.myTextView1);
    mTextView01.setText("下载成功");
    super.onPause();
  }

  /* 当Activity处于onResume状态时,删除临时文件 */
  @Override
  protected void onResume()
  {
    // TODO Auto-generated method stub
    /* 删除临时文件 */
    delFile(currentTempFilePath);
    super.onResume();
  }
}
另外例子中还可以通过
Java代码 
System.out.println("conn.getContentLength() =" + conn.getContentLength()); 

System.out.println("conn.getContentLength() =" + conn.getContentLength());获取下载文件的大小,然后来实现PrgressBar的下载进度显示


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3