1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" >    <com.loopj.android.image.SmartImageView android:id="@+id/iv_beauty" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="100" />    <EditText android:id="@+id/et_path" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:text="http://a.hiphotos.baidu.com/album/w%3D2048/sign=0a938b00d53f8794d3ff4f2ee6230cf4/faedab64034f78f06fe0f24b78310a55b2191c9a.jpg" />    <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="watch" android:text="浏览" /></LinearLayout>public class MainActivity extends Activity { private EditText et_path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.et_path = (EditText) this.findViewById(R.id.et_path); } public void watch(View view) { String url = this.et_path.getText().toString().trim(); SmartImageView siv = (SmartImageView) this.findViewById(R.id.iv_beauty); siv.setImageUrl(url, R.drawable.ic_launcher, R.drawable.ic_launcher); } } <uses-permission android:name="android.permission.INTERNET"/>2.android多线程下载 public class MainActivity extends Activity { protected static final int SERVER_ERROR = 1; protected static final int DOWN_LOAD_ERROR = 2; protected static final int DOWN_LOAD_SUCCESS = 3; protected static final int UPDATE_TEXT = 4; private EditText et_path; private ProgressBar pb_download; private TextView tv_process; private static int threadCount = 3; private static int runningThread = threadCount; private static int currentProgress = 0; private static String resource = "/mnt/sdcard/oracle.pptx"; private static String path = "http://110.65.99.66:8080/oracle.pptx"; private static String mode = "rwd"; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case SERVER_ERROR: Toast.makeText(MainActivity.this, "服务器错误,错误码:" + (String) msg.obj, 0).show(); break; case DOWN_LOAD_ERROR: Toast.makeText(MainActivity.this, "下载失败", 0).show(); break; case DOWN_LOAD_SUCCESS: Toast.makeText(MainActivity.this, "文件下载完毕,临时文件被删除!", 0).show(); break; case UPDATE_TEXT: tv_process.setText("当前进度:" + pb_download.getProgress() * 100                        / pb_download.getMax()); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.et_path = (EditText) this.findViewById(R.id.et_path); this.pb_download = (ProgressBar) this.findViewById(R.id.pb_download); this.tv_process = (TextView) this.findViewById(R.id.tv_process); } public void download(View view) { new Thread() { public void run() { try { // 连接服务器获取一个文件,在本地创建一个和它相同大小的临时文件                    URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url .openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); int code = conn.getResponseCode(); if (code == 200) { // 服务器返回的数据长度,实际上就是文件的长度                        int length = conn.getContentLength(); System.out.println("文件的长度 :" + length); // 设置进度条的最大值                        pb_download.setMax(length - 1); // 在本地创建一个大小跟服务器文件一样大小的临时文件                        RandomAccessFile raf = new RandomAccessFile(resource, mode); // 指定文件的长度 raf.setLength(length); raf.close(); // 假设是3个线程去下载资源 // 计算平均每个线程下载的文件大小                        int blockSize = length / threadCount; // 标记正在运行子线程的个数                        runningThread = threadCount; // 下载进度归零                        currentProgress = 0; // 下载进度条归零                        pb_download.setProgress(0); System.out.println("blockSize = " + blockSize); for (int threadId = 1; threadId <= threadCount; threadId++) { // 线程的开始和结束位置                            int startIndex = (threadId - 1) * blockSize; int endIndex = threadId * blockSize - 1; if (threadId == threadCount) { endIndex = length - 1; } System.out.println("线程:" + threadId + "下载:"                                    + startIndex + "--->" + endIndex); new DownLoadThread(threadId, startIndex, endIndex, path).start(); } } else { Message msg = new Message(); msg.what = SERVER_ERROR; msg.obj = code + ""; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); msg.what = DOWN_LOAD_ERROR; handler.sendMessage(msg); } }; }.start(); } public class DownLoadThread extends Thread { private int threadId; private int startIndex; private int endIndex; private String path; private String tempFileUrl; public DownLoadThread(int threadId, int startIndex, int endIndex, String path) { this.threadId = threadId; this.startIndex = startIndex; this.endIndex = endIndex; this.path = path; tempFileUrl = "/mnt/sdcard/" + threadId + ".txt"; } @Override public void run() { try { // 检查是否存在记录下载长度的文件,如果存在读取这个文件的数据                File tempFile = new File(tempFileUrl); if (tempFile.exists() && tempFile.length() > 0) { FileInputStream fis = new FileInputStream(tempFile); byte[] buffer = new byte[1024]; int length = fis.read(buffer); String downloadLength = new String(buffer, 0, length); int downloadLenInt = Integer.parseInt(downloadLength); int alreayDownloadInt = downloadLenInt - startIndex; currentProgress += alreayDownloadInt;// 计算上次断点下载到的进度 // 修改下载的真实开始位置                    startIndex = downloadLenInt; fis.close(); } System.out.println("线程真正开始的位置 :" + threadId + "下载:"                        + startIndex + "--->" + endIndex); URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url .openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); // 请求服务器下载部分文件,指定文件的位置                conn.setRequestProperty("Range", "bytes=" + startIndex + "-"                        + endIndex); conn.setConnectTimeout(60000); // 200表示从服务器请求全部资源,206表示从服务器请求部分资源                int code = conn.getResponseCode(); if (code == 206) { // 已经设置了请求的位置,返回的是当前文件位置对应的文件的输入流                    InputStream is = conn.getInputStream(); // 此类的实例支持对随机访问文件的读取和写入                    RandomAccessFile raf = new RandomAccessFile(resource, mode); // 定位文件 raf.seek(startIndex); int length = 0; byte[] buffer = new byte[1024]; int total = 0;// 实时记录已经下载的长度 // 一阵狂读                    while ((length = is.read(buffer)) != -1) { RandomAccessFile file = new RandomAccessFile( tempFileUrl, mode); raf.write(buffer, 0, length); total += length; // 记录当前线程下载的数据位置                        file.write((total + startIndex - 1 + "").getBytes()); file.close(); synchronized (MainActivity.this) { // 获取所有线程下载的总进度                            currentProgress += length; // 更改界面上progressbar的进度(progressbar和progressdialog可以在子线程里修改UI) pb_download.setProgress(currentProgress); Message msg = Message.obtain(); msg.what = UPDATE_TEXT; handler.sendMessage(msg); } } raf.close(); is.close(); System.out.println("线程 : " + threadId + "下载完毕。。。。。"); runningThread--; } else { System.out.println("线程 : " + threadId + "下载失败。。。。。"); } } catch (Exception e) { e.printStackTrace(); System.out.println("线程 : " + threadId + "  抛出异常!"); runningThread = threadCount; } finally { System.out.println("runningThread = " + runningThread); if (runningThread == 0) { for (int i = 1; i <= threadCount; i++) { File deleteFile = new File("/mnt/sdcard/" + i + ".txt"); deleteFile.delete(); } Message msg = new Message(); msg.what = DOWN_LOAD_SUCCESS; handler.sendMessage(msg); } } } } } 3.显式意图激活另外一个activity,检查网络是否可用定位到网络的位置 <intent-filter>    <action android:name="android.intent.action.MAIN" />    <category android:name="android.intent.category.LAUNCHER" /></intent-filter> 这段代码的作用是告诉系统在桌面创建一个快捷图标 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" >    <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:onClick="click1" android:text="跳转到第二个界面1" />    <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="24dp" android:onClick="click2" android:text="跳转到第二个界面2" />    <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button2" android:layout_below="@+id/button2" android:layout_marginLeft="44dp" android:layout_marginTop="27dp" android:onClick="click3" android:text="检查手机网络状态" />    <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button2" android:layout_below="@+id/button3" android:layout_marginLeft="16dp" android:layout_marginTop="37dp" android:onClick="click4" android:text="跳转到图库" /></RelativeLayout>public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click1(View view) { Intent intent = new Intent(); intent.setClassName(this, "com.itheima.explicitintent.SecondActivity"); this.startActivity(intent); } public void click2(View view) { Intent intent = new Intent(this, SecondActivity.class); this.startActivity(intent); } public void click3(View view) { ConnectivityManager manager = (ConnectivityManager) this .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info != null && info.isAvailable()) { Toast.makeText(this, "网络可用", 0).show(); } else { Toast.makeText(this, "网络不可用", 0).show(); Intent intent = new Intent(); intent.setClassName("com.android.phone", "com.android.phone.MiuiSettings"); this.startActivity(intent); } } public void click4(View view) { Intent intent = new Intent(); intent.setClassName("com.miui.gallery", "com.miui.gallery.app.Gallery"); this.startActivity(intent); } } <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>4.隐式意图激活另外一个activity,即打开另外一个app的activity public void click(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); this.startActivity(intent); } public void send(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SENDTO); intent.setData(Uri.parse("sms:10086")); intent.addCategory("android.intent.category.DEFAULT"); this.startActivity(intent); } 5.隐式意图的配置,自定义隐式意图 第一个activity启动第二个activity 第一个Activity public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View view) { Intent intent = new Intent(); intent.setAction("com.itheima.secondActivity"); // 额外信息,提供一些执行的环境参数        intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(Uri.parse("itheima:jerry"), "vnd.android.cursor.item/mp3"); this.startActivity(intent); } } 第二个Activity public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent = this.getIntent(); Uri uri = intent.getData(); String data = uri.toString(); String type = intent.getType(); Toast.makeText(this, "data = " + data + " , type = " + type, 0).show(); } } <activity android:name=".SecondActivity" android:label="@string/app_name" >    <intent-filter>        <action android:name="com.itheima.secondActivity"/>        <category android:name="android.intent.category.DEFAULT"/>        <data android:scheme="itheima" android:mimeType="vnd.android.cursor.item/mp3"/>    </intent-filter></activity>6.隐式意图和显示意图的使用场景 同一个应用程序里面,自己激活自己的东西,推荐使用显示意图,效率高 不同的应用程序里面,激活别人的应用,或者是让自己的某一个界面希望被别人激活,推荐使用隐式意图。 7.在不同activity之间数据传递 public void click(View view) { String name = this.et_name.getText().toString().trim(); if (TextUtils.isEmpty(name)) { Toast.makeText(this, "姓名不能为空", 0).show(); return; } Intent intent = new Intent(this, ResultActivity.class); intent.putExtra("name", name); this.startActivity(intent); } 接收数据 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); TextView tv_result = (TextView) this.findViewById(R.id.tv_result); Intent intent = this.getIntent(); String name = intent.getStringExtra("name"); Random random = new Random(); int rp = random.nextInt(101); tv_result.setText(name + "的人品为:" + rp); }

更多相关文章

  1. Android之Manifest文件
  2. 自定义SeekBarPreference控件(老外出品,直接在preferences文件中
  3. Android中UI主线程与子线程
  4. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
  5. Android如何使用so文件和Android studio中导入so
  6. android读取plist文件
  7. 在Android中把SQLite的数据库文件存储在SD卡中【转】
  8. 使用Android自带的DownloadManager下载文件

随机推荐

  1. Android 广播接收者(具体例子)
  2. android 消息机制(2)
  3. Android(安卓)Toast 详解
  4. android IPC 机制
  5. Android系统下的动态Dex加载
  6. Android Framework解析
  7. Android(安卓)画图 之 Matrix(一)
  8. Android init进程——源码分析
  9. Android 根文件系统启动过程。
  10. android模拟器命令详解