android手把手开发一个图片浏览器
Android图片加载利器之Picasso基本用法
Android图⽚加载利器之Picasso基本⽤法今天开始我们来学习⼀下Picasso,计划包括以下⼏⽅⾯的内容:⽬前市场上⽐较流⾏的图⽚加载框架主要有UniversalImageLoader,Picasso,Glide,Fresco。
下⾯简单介绍⼀下这⼏个框架:UniversalImageLoader:这个可以说是⾮常⾮常经典的⼀个了,相信每个app的开发⼈员都使⽤过,只可惜作者已经停⽌该项⽬的维护了,所以不太推荐使⽤。
Picasso:是Square公司出品的图⽚加载框架,Square出品必出精品,主要特点就是使⽤简单,扩展性强,⽀持各种来源的图⽚,包括⽹络、Resources、assets、files、content providers等。
内部集成了OkHttp的⽹络框架,所以如果你的项⽬中使⽤了Square公司的其他框架,那么推荐使⽤Picasso,兼容性会好⼀些。
⽬前在Github上的Star已经达到12758个。
Glide:是Google员⼯的开源项⽬,基于Picasso的⼀个框架,代码风格与Picasso⾮常相似,增加了更多的功能,⾮常重要的就是⽀持gif,当然它的包会⼤⼀些。
如果你的项⽬对图⽚的使⽤场景⾮常多,并且需要⽀持gif,则推荐使⽤。
⽬前在Github 上的Star已经达到13636个。
Fresco:是FB出品的开源框架,⽐较新,最⼤的优点就是在内存占⽤上的优化,极⼤的减少了OOM,功能上也包含了以上三种框架的功能,但是也带来了⼀个⽐较明显的缺点就是太⼤了,所以推荐使⽤在完全是做图⽚相关的app上,否则Picasso和Glide就完全够⽤了。
⽬前在Github上的Star已经达到11983个。
上⾯主要对各种框架做个简单的介绍,既然是讲解Picasso的,那么接下来看看Picasso都有哪些功能。
1 提供内存和磁盘缓存,默认开启,可以设置不进⾏缓存2 图⽚加载过程中默认显⽰的图⽚3 图⽚加载失败或出错后显⽰的图⽚4 图⽚加载成功或失败的回调5 ⾃定义图⽚⼤⼩、⾃动测量ImageView⼤⼩、裁剪、旋转图⽚等6 对图⽚进⾏转换7 标签管理,暂停和恢复图⽚加载8 请求优先级管理9 可以从不同来源加载图⽚,⽹络、Resources、assets、files、content providers10 更加丰富的扩展功能以上这些功能将会在下⾯的⽂章中进⾏详细讲解。
黑马程序员安卓教程:案例-网络图片查看器
案例-网络图片查看器通过该案例可以学习如何将网络图片显示在到用户界面。
需求如图1-3,在编辑框输入图片的url地址,然后点击右侧的确定按钮。
然后app就开始访问网络,将网络上的图片显示在界面。
图1-3 网络图片查看器编写布局【文件1-5】activity_main.xml1.<LinearLayout xmlns:android="/apk/res/android"2.xmlns:tools="/tools"3.android:layout_width="match_parent"4.android:layout_height="match_parent"5.android:orientation="vertical">6.7.<LinearLayout8. android:layout_width="match_parent"9. android:layout_height="wrap_content"10. android:orientation="horizontal" >11.12. <EditText13. android:id="@+id/et_url"14. android:layout_width="0dp"15. android:layout_height="wrap_content"16. android:layout_weight="1"17. android:text="/data/attachment/forum18. /201511/04/121947sci9qd732yyyyyh4.jpg"19. android:hint=" 请输入url 地址" />20.21. <Button22. android:layout_gravity="center_vertical"23. android:layout_width="wrap_content"24. android:layout_height="wrap_content"25. android:onClick="load"26. android:text=" 确定" />27. </LinearLayout>28.29.<ImageView30. android:layout_gravity="center_horizontal"31. android:id="@+id/iv"32. android:layout_width="wrap_content"33. android:layout_height="wrap_content" />34.35.</LinearLayout>注意:上面第17行布局代码中我将一个网络图片的地址“写死”了,因为图片地址的url太长了,因此仅仅为了方便演示才这么做的。
Android图片浏览器
长沙学院课程设计说明书题目Android图片浏览器系(部) 计算机科学与技术专业(班级) 软件工程(10软件6班) 姓名彭成辉学号2010022504指导教师杨凤年起止日期2013.05.27~2013.06.21课程设计任务书课程名称:综合实训Ⅱ题目:Android图片浏览器已知技术参数和设计要求:设计基于Android平台的图片浏览器程序,具体要求如下:1.图片文件的管理功能。
在配置文件中配置访问SD卡文件的权限,使用File类访问SD卡上的图片文件。
2.用户浏览图片的功能。
用户通过触摸屏操作选择图片进行浏览,使用事件响应函数响应用户的操作,可以使用ImageView在屏幕中显示图片。
3.用户编辑图片的功能。
用户可以放大、缩小、旋转和裁剪图片。
4.设置壁纸功能。
将选择的图片设置为壁纸,可以使用WallPaper类来完成该功能。
5.图片文件的排序功能和查找功能。
根据文件的名称、日期或者其他属性进行排序,根据文件的名称、日期或者其他属性进行查找。
6.使用多种视图展示图片的功能。
可以使用ListView、GridView或者Gallery类来展示图片。
各阶段具体要求:(1)开发前的准备:Android开发环境的搭建。
(2)系统分析与设计:包括程序需求分析、UI设计、业务逻辑设计等。
(3)系统编码实现:根据以上六点要求,对Android图片浏览器进行编码实现。
(4)测试:编写测试用例对程序进行测试。
设计工作量:(1)软件设计:完成问题陈述中所提到的软件以及工作量要求。
(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。
工作计划:安排4周时间进行综合实训。
第一周----Android开发环境的搭建,软件需求分析。
第二周----UI设计、业务逻辑设计。
第三、四周----Android图片浏览器的代码实现与软件测试。
注意事项⏹提交文档长沙学院课程设计任务书(每学生1份)长沙学院课程设计论文(每学生1份)长沙学院课程设计鉴定表(每学生1份)指导教师签名:日期:2013-5-26教研室主任签名:日期:系主任签名:日期:长沙学院课程设计鉴定表摘要本文档描述了基于Android平台如何开发图片浏览器应用软件,并附带介绍了Android开发环境的搭建方法。
android图片加载库Glide的使用介绍
//sd卡上的一张图片 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp.jpg" ; File file = new File( path ) ; Uri uri = Uri.fromFile( file ) ; Glide.with( this ).load( uri ).into( imageView ) ;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(yout.activity_main); imageView = (ImageView) findViewById( R.id.image ); Glide.with( this ).load( url ).asBitmap().into( target ) ; } private SimpleTarget target = new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {
/** * 清除内存缓存 * @param context */ public void clearMemoryCache( Context context ){
Glide.get( context ).clearMemory(); }
最近做一个相册浏览器
最近做一个相册浏览器,类似于Android系统自带的那种,可以实现缩放。
找了很多帖子,没有想要的那种结果,要么只能拖动,要么只能缩放,要综合两种效果的却没有。
经过自己的钻研,重写了ImageViewTouchBase,并实现自己的类来继承Gallery,在该类里边实现缩放事件,然后在xml文件里边加载这个类。
终于出来了自己想要的结果,下面与大家分享一下。
先看几张截图:图一:原图图二:两张图片切换的动画图三:通过手指实现图片放大布局文件代码:<?xml version="1.0" encoding="UTF-8"?><FrameLayout xmlns:android="/apk/res/android" android:layout_height="fill_parent"android:layout_width="fill_parent"android:orientation="vertical" ><com.lyc.pic.MyGallery android:layout_height="fill_parent"android:layout_width="fill_parent"android:spacing="20px"android:id="@+id/mygallery"/></FrameLayout>两个主要的java类:Gallery代码package com.lyc.pic;import android.content.Context;import android.graphics.Matrix;import android.graphics.Rect;import android.util.AttributeSet;import android.util.Log;import android.view.GestureDetector;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.SimpleOnGestureListener; import android.widget.Gallery;public class MyGallery extends Gallery {private GestureDetector gestureScanner;private MyImageView imageView;public MyGallery(Context context) {super(context);}public MyGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle);}public MyGallery(Context context, AttributeSet attrs) {super(context, attrs);gestureScanner = new GestureDetector(new MySimpleGesture());this.setOnTouchListener(new OnTouchListener() {float baseValue;float originalScale;//重写onTouch方法实现缩放@Overridepublic boolean onTouch(View v, MotionEvent event) {View view = MyGallery.this.getSelectedView();if (view instanceof MyImageView) {imageView = (MyImageView) view;if (event.getAction() == MotionEvent.ACTION_DOWN) {baseValue = 0;originalScale = imageView.getScale();}if (event.getAction() == MotionEvent.ACTION_MOVE) {//处理拖动if (event.getPointerCount() == 2) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);float value = (float) Math.sqrt(x * x + y * y);// 计算两点的距离// System.out.println("value:" + value);if (baseValue == 0) {baseValue = value;} else {float scale = value / baseValue;// 当前两点间的距离除以手指落下时两点间的距离就是需要缩放的比例。
自己动手制作一款简洁实用的图片浏览器
自己动手整理一款简洁实用的图片浏览器软件DIY,说白了就是利用现有的类库、组件,快速构造出自己的程序出来。
就象你找来各种电脑配件,然后把它们装配成整机一样;但也有不一样的地方,电脑配件即使是旧的二手配件,怎么说也得花一点钱,而软件的类库、组件,你有时侯可以免费得到。
我想要DIY的,是一款简洁实用的图片浏览器。
众所周知,ACDSee是最流行的图片浏览器,确实很不错。
但作为一名程序员,我想,要是我也能整理出一款简洁实用的图片浏览器,可以在我开发的软件中有图片浏览功能,那该多好。
而我确实DIY出了这么一个图片浏览器,她简洁实用,小巧玲珑,取名为:SimpleBrowse。
现将整理过程介绍如下,与大家分享,并期望能起到抛砖引玉的作用。
第一步:定规格1.样子要象ACDSee一样,左边是目录树,右边是文件列表,显示图片文件的缩图。
2.缩图要好看,浏览速度要快,能浏览的图片格式要多。
3.简洁实用,整理难度不要太大。
4.在Win98,WinNT下都能用。
第二步:选材料由于界面主要分为两大部分,即左边的目录树和右边的文件列表,故材料也就主要是这两大件。
1.左边目录树从bbb://aaacodejockeysaaa/kstowell/上,我们可以得到一个免费的MFC扩展类库CJ60Lib.dll,这个类库包含有许多用于界面设计的类,其中有一个CShellTree类,可以显示和Windows Explorer左边目录树一样的效果,正好符合我想要的,选定了它。
2.右边文件列表这是关键的部分,它要求能创建、显示、管理图片文件的缩图,要求能浏览多种格式的图片文件,要求有较精美的缩图显示效果和较快的浏览速度,要求易于使用难度不大。
泰来影像科技XXX在图像处理应用软件开发方面有较深的造诣,推出了一个MFC扩展类库thl.dll,其中有一个CThumbListCtrl类,正是用来创建、显示图片缩图用的,选定了它,从bbb://aaathaliaaaabbb/上获取之。
android实战之实现图片滚动控件,自动播放
Android图片滚动,加入自动播放功能,使用自定义属性实现,霸气十足!大家好,记得上次我带着大家一起实现了一个类似与淘宝客户端中带有的图片滚动播放器的效果,但是在做完了之后,发现忘了加入图片自动播放的功能(或许是我有意忘记加的.....),结果图片只能通过手指滑动来播放。
于是今天我将再次带领大家,添加上之前遗漏的功能,让我们的图片播放器更加完善。
这次的程序开发将完全基于上一次的代码,如果有朋友还未看过上篇文章,请先阅读Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来。
既然是要加入自动播放的功能,那么就有一个非常重要的问题需要考虑。
如果当前已经滚动到了最后一张图片,应该怎么办?由于我们目前的实现方案是,所有的图片都按照布局文件里面定义的顺序横向排列,然后通过偏移第一个图片的leftMargin,来决定显示哪一张图片。
因此当图片滚动在最后一张时,我们可以让程序迅速地回滚到第一张图片,然后从头开始滚动。
这种效果和淘宝客户端是有一定差异的(淘宝并没有回滚机制,而是很自然地由最后一张图片滚动到第一张图片),我也研究过淘宝图片滚动器的实现方法,并不难实现。
但是由于我们是基于上次的代码进行开发的,方案上无法实现和淘宝客户端一样的效果,因此这里也就不追求和它完全一致了,各有风格也挺好的。
好了,现在开始实现功能,首先是打开SlidingSwitcherView,在里面加入一个新的AsyncTask,专门用于回滚到第一张图片:[java]view plaincopy1.class ScrollToFirstItemTask extends AsyncTask<Integer, Integer, Integer> {2.3.@Override4.protected Integer doInBackground(Integer... speed) {5.int leftMargin = firstItemParams.leftMargin;6.while (true) {7. leftMargin = leftMargin + speed[0];8.// 当leftMargin大于0时,说明已经滚动到了第一个元素,跳出循环9.if (leftMargin > 0) {10. leftMargin = 0;11.break;12. }13. publishProgress(leftMargin);14. sleep(20);15. }16.return leftMargin;17. }18.19.@Override20.protected void onProgressUpdate(Integer... leftMargin) {21. firstItemParams.leftMargin = leftMargin[0];22. firstItem.setLayoutParams(firstItemParams);23. }24.25.@Override26.protected void onPostExecute(Integer leftMargin) {27. firstItemParams.leftMargin = leftMargin;28. firstItem.setLayoutParams(firstItemParams);29. }30.31.}然后在SlidingSwitcherView里面加入一个新的方法:[java]view plaincopy1./**2. * 滚动到第一个元素。
Android超大图长图浏览库SubsamplingScaleImageView源码解析
Android超⼤图长图浏览库SubsamplingScaleImageView源码解析⼀开始没打算分析 SubsamplingScaleImageView 这个开源的图⽚浏览器的,因为这个库在我们 App 中使⽤了,觉得⾃⼰对这个库还是⽐较熟悉的,结果某天再看看到源码介绍的时候,才发现⾃⼰对其了解并不够深⼊,所以这才打算再细细看看源码的实现,同时记录⽅便以后回顾。
那么 SubsamplingScaleImageView 有啥优点呢?1. 采⽤ GestureDetector 进⾏⼿势控制,⽀持图⽚的点击,双击,滑动等来控制的放⼤缩⼩;2. 使⽤了 BitmapRegionDecoder,具有分块加载功能;3. ⽀持查看长图,超⼤图上⾯的优点简直就是⾮常实⽤,基本上拿来就可以直接⽤,简单省⼒。
下⾯就是要来分析,它是如何满⾜这些优点的。
源码分析⾸先附上源码地址:使⽤说明如果可以拿到图⽚的资源id,assert或者⽂件路径,直接使⽤下⾯⽅式进⾏使⽤:SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);imageView.setImage(ImageSource.resource(R.drawable.monkey));// ... or ...imageView.setImage(ImageSource.asset("map.png"))// ... or ...imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));如果可以拿到 bitmap 就可以这么使⽤:SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);imageView.setImage(ImageSource.bitmap(bitmap));可以看到使⽤是⾮常简单的。
Android图片浏览器报告.docx
洛阳理工学院手机软件开发实训报告专业计算机应用技术________________ 班级Z120551 ___________________ 学号Z12055131 _________________ 姓名杨鹏________________________完成日期—2015-01-04 ___________________成绩:指导教师:________________年月日第一章:程序设计的意义与目的1.1设计的意义随着时代的发展,社会的进步,移动开发应用越来越普及,其中An droid 移动开发应用因为方便、价格低廉等优势在市场中占有很大份额。
而图片浏览器作为计算机使用者浏览各种格式图片的载体而存在,作为人们日常生活中的任何格式的图片文件都必须通过图片浏览器才能浏览。
随着各种类型图片浏览器的不断更新换代,其功能也日益强大和完善,逐渐成为计算机使用者生活中不可或缺的一部分。
1.2设计的目的图片浏览器支持流行格式图象,包括:BMP,JPEG,JPEG2000,GIF,PNG,PCX,TIFF,WMF,ICOa ndT界面漂亮,使用特别方便。
晶莹剔透的放大镜可以把图片的每个细节优美的表达出来。
批量图片转换和更名允许您对图片进行大批量的转换,尺寸调整,其它特性还包括全屏幕浏览,拖拉放大,旋转,等等。
图片浏览器一般具有打开图片文件并对图片文件夹中的图片进行顺序浏览的功能。
为方便人们更好地浏览图片,为人们的生活带来便利,特设计实现了一个图片浏览器。
本次图片浏览器的设计实现可以浏览.pn g .jpg 等格式的图片,不仅可以浏览本地文件、SCDCAR和USBHOS存储的图片还可以浏览手机设备里的其他图片,确实为使用者带来了很大的便利。
第二章:程序设计与开发2.1程序简单介绍本次图片浏览器的设计可以读取本地文件、SCDCAF和USBHOS以及手机设备里的其他图片,其中可以对图片进行幻灯片播放、图片缩放、旋转照片(顺时针90度旋转、逆时针90度旋转、180度旋转)、图片详细信息、返回预览和删除图片等功能。
Android入门第十三篇之Gallery + ImageSwitcher
Android入门第十三篇之Gallery + ImageSwitcher上次讲了如何使用Gallery控件,这次就讲Gallery 与ImageSwitcher的结合使用,本文实现一个简单的浏览图片的功能。
先贴出程序运行截图:除了Gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setOnTouchListener事件实现,使得ImageSwitcher也可以在拖拉中切换图片。
本例子依然使用JA V A的反射机制来自动读取资源中的图片。
main.xml的源码如下:view plainprint?android:layout_width="match_parent"android:layout_height="match_parent">android:layout_width="match_parent" android:layout_height="match_parent"/>android:background="#55000000"android:layout_width="match_parent"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:gravity="center_vertical"android:spacing="16dp" android:layout_height="100dp"/>程序的源码如下:view plainprint?package com.testImageView;import ng.reflect.Field;import java.util.ArrayList;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.ViewGroup;import android.view.animation.AnimationUtils;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.AdapterView.OnItemSelectedListener;import youtParams;import android.widget.ViewSwitcher.ViewFactory;public class testImageView extends Activity implements ViewFactory {private ImageSwitcher is;private Gallery gallery;private int downX,upX;private ArrayList imgList=new ArrayList();//图像ID@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(yout.main);//用反射机制来获取资源中的图片IDField[] fields = R.drawable.class.getDeclaredFields();for (Field field : fields){if (!"icon".equals(field.getName()))//除了icon之外的图片{int index = 0;try {index = field.getInt(R.drawable.class);} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}//保存图片IDimgList.add(index);}}//设置ImageSwitcher控件is = (ImageSwitcher) findViewById(R.id.switcher);is.setFactory(this);is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));is.setOnTouchListener(new OnTouchListener(){/** 在ImageSwitcher控件上滑动可以切换图片*/@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction()==MotionEvent.ACTION_DOWN) {downX=(int) event.getX();//取得按下时的坐标return true;}else if(event.getAction()==MotionEvent.ACTION_UP){upX=(int) event.getX();//取得松开时的坐标int index=0;if(upX-downX>100)//从左拖到右,即看前一张{//如果是第一,则去到尾部if(gallery.getSelectedItemPosition()==0)index=gallery.getCount()-1;elseindex=gallery.getSelectedItemPosition()-1;}else if(downX-upX>100)//从右拖到左,即看后一张{//如果是最后,则去到第一if(gallery.getSelectedItemPosition()==(gallery.getCount()-1))index=0;elseindex=gallery.getSelectedItemPosition()+1;}//改变gallery图片所选,自动触发ImageSwitcher的setOnItemSelectedListener gallery.setSelection(index, true);return true;}return false;}});//设置gallery控件gallery = (Gallery) findViewById(R.id.gallery);gallery.setAdapter(new ImageAdapter(this));gallery.setOnItemSelectedListener(new OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView arg0, View arg1,int position, long arg3) {is.setImageResource(imgList.get(position));}@Overridepublic void onNothingSelected(AdapterView arg0) {// TODO Auto-generated method stub}});}//设置ImgaeSwitcher@Overridepublic View makeView() {ImageView i = new ImageView(this);i.setBackgroundColor(0xFF000000);i.setScaleType(ImageView.ScaleType.CENTER);//居中i.setLayoutParams(new youtParams(//自适应图片大小LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));return i;}public class ImageAdapter extends BaseAdapter {public ImageAdapter(Context c) {mContext = c;}public int getCount() {return imgList.size();}public Object getItem(int position) {return position;}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext);i.setImageResource(imgList.get(position));i.setAdjustViewBounds(true);i.setLayoutParams(new youtParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return i;}private Context mContext;}}。
android手把手开发一个图片浏览器
android手把手开发一个图片浏览器这次我给大家讲解一个Android图片浏览器的应用。
AndroidAndroid是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance)开发。
它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。
Android在未公开之前常被传闻为Google电话或gPhone。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。
到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。
目前最新版本为Android2.1。
下图是它的结构:简单来讲,Android就是一个开源的手机软件开发工具。
我主要给大家讲应用方面,大家如果有兴趣,可以了解相关基本知识。
要开发一个Android应用,首先得搭建Android开发环境:下载并安装Android sdk(Software Development Kit, 即软件开发工具包)。
由于Android 开发是集成在Eclipse中,需下载并安装ADT (Eclipse集成Android sdk插件)。
搭建环境会用一个专门的章节为大家详细讲解,这里我就不再赘述。
Android开发环境搭好后,我们先启动Eclipse创建一个Android的应用程序,然后在左上角单击File,New,Android Project,如下图所示:如果在图中Java Project找不到Android Project:在左上角单击File,New,Other:在弹出框中Android文件件中选中Android Project,然后单击Next进入下一步:弹出一个列表框:下面对这个列表的一些重要属性进行讲解:1.应用程序名称以及内容栏:2.工具栏:采用的编译工具即Android模拟器:3.属性栏:即应用程序中的相关属性:Android 这就是我们刚才创建的一个Android应用程序如下图:在这里面,我们最关心的是界面(main.xml)与后台(Test1.java):单击main.xml:我们先看看中间视图:这是一个页面编辑器模式:在左下角点击main.xml切换到界面编码模式:这就是刚才页面视图的源码:下面让我们看看后台(Test1.java)源码:单击Test1.java:以下将此类程序称之为activity(活动),该activity运行时会自动调用onCreate方法:而上图中onCreate方法是启动res文件夹下的layout下的main.xml界面。
基于安卓的图片浏览器的设计与实现
编号:审定成绩:重庆邮电大学毕业设计(论文)设计(论文)题目:基于安卓的图片浏览器的设计与实现学院名称:软件学院****:***专业:软件工程班级:学号:指导教师:答辩组负责人:填表时间:2012年5月摘要Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前,最新版本为Android 4.0 Ice Cream Sandwich。
Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。
底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。
Android 作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。
全球为数众多的移动电话用户正在使用各种基于Android 的电话。
谷歌的目标是让(移动通讯)不依赖于设备甚至平台。
出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
Android的主要竞争对手是苹果公司的iOS以及RIM 的Blackberry OS[2]。
简单手机程序--图片浏览器(可拖动)
imageWidth;
private int
imageHeight;
private int
windowWidth;
private int
windowHeight;
private int
left;
private int
top;
private int
step;
private int private int
image = Image.createImage("/1.jpg"); //加载图片 imageWidth = image.getWidth(); imageHeight = image.getHeight(); windowWidth = screenWidth < imageWidth? screenWidth:imageWidth; windowHeight = screenHeight < imageHeight? screenHeight:imageHeight; }catch(IOException e){ System.err.println("无法装入图像!"); } } public void paint(Graphics g){ if(image != null){ g.drawImage(Image.createImage(image,
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import java.io.IOException; import javax.microedition.lcdui.game.Sprite;
简易Android浏览器的开发
Android开发简易浏览器1.创建android项目[长信浏览器]2.修改value\string.xml<?xml version="1.0"encoding="utf-8"?><resources><string name="app_name">长信浏览器--作者:孙丰伟</string> <string name="action_settings">Settings</string><string name="hint">请输入网址</string></resources>3.修改布局文件activity_main.xml<EditTextandroid:id="@+id/editURL"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_toLeftOf="@+id/btnGo"android:ems="10"><requestFocus/></EditText><Buttonandroid:id="@+id/btnGo"style="?android:attr/buttonStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@+id/editURL"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:text="GO"/><WebViewandroid:id="@+id/webView1"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignLeft="@+id/editURL"android:layout_below="@+id/btnGo"/>4.修改MainActivity.java,实现浏览器4.1 导入包import .http.SslError;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.webkit.SslErrorHandler; import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;4.2 声明数据成员private WebView webView;private Button btnGo;private EditText editURL;private String url;4.3 修改onCreate()webView=(WebView)this.findViewById(R.id.webView1);btnGo=(Button)this.findViewById(R.id.btnGo);editURL=(EditText)this.findViewById(R.id.editURL);//识别javascriptwebView.getSettings().setJavaScriptEnabled(true);//支持缩放webView.getSettings().setSupportZoom(true);//滚动效果webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);//设置初始页webView.loadUrl("");//设置浏览网页时的事件处理类webView.setWebViewClient(new MyWebViewClient());btnGo.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stuburl=editURL.getText().toString();String url_head="http://";if(!url.contains("http://")){url=url_head.concat(url);}webView.loadUrl(url);}});4.4 实现浏览器处理类class MyWebViewClient extends WebViewClient{@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler,SslError error) {// TODO Auto-generated method stubsuper.onReceivedSslError(view, handler, error);handler.proceed();}@Overridepublic void onLoadResource(WebView view, String url) {// TODO Auto-generated method stubsuper.onLoadResource(view, url);}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {// TODO Auto-generated method stubsuper.onPageStarted(view, url, favicon);}@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubsuper.onPageFinished(view, url);}}4.5 实现MainActivity的KeyDown事件,实现按下return按钮查看历史网页@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(webView.canGoBack()&&event.getKeyCode()==KeyEvent.KEYCODE_BACK&&e vent.getRepeatCount()==0){webView.goBack();return true;}return super.onKeyDown(keyCode, event);}全部源代码:package cn.changxin.webview;import .http.SslError;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.webkit.SslErrorHandler;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {private WebView webView;private Button btnGo;private EditText editURL;private String url;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);webView=(WebView)this.findViewById(R.id.webView1);btnGo=(Button)this.findViewById(R.id.btnGo);editURL=(EditText)this.findViewById(R.id.editURL);//识别javascriptwebView.getSettings().setJavaScriptEnabled(true);//支持缩放webView.getSettings().setSupportZoom(true);//滚动效果webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);//设置初始页webView.loadUrl("");//设置浏览网页时的事件处理类webView.setWebViewClient(new MyWebViewClient());btnGo.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stuburl=editURL.getText().toString();String url_head="http://";if(!url.contains("http://")){url=url_head.concat(url);}webView.loadUrl(url);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}class MyWebViewClient extends WebViewClient{@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler,SslError error) {// TODO Auto-generated method stubsuper.onReceivedSslError(view, handler, error);handler.proceed();}@Overridepublic void onLoadResource(WebView view, String url) {// TODO Auto-generated method stubsuper.onLoadResource(view, url);}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {// TODO Auto-generated method stubsuper.onPageStarted(view, url, favicon);}@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubsuper.onPageFinished(view, url);}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(webView.canGoBack()&&event.getKeyCode()==KeyEvent.KEYCODE_BACK&&e vent.getRepeatCount()==0){webView.goBack();return true;}return super.onKeyDown(keyCode, event);}}。
简易Android浏览器的开发
Android开发简易浏览器1.搭建Android开发环境请详见:Android开发环境搭建.doc2.创建工程选择File->New->Project->Android Project 会出现如下界面:输入工程名,点击Next进入如下界面选择Target即用于编译工程的SDK 版本。
点击NextApplication Name是显示在程序上的标题。
Package Name是包的名称。
Minimum SDK该工程支持的SDK的最低版本。
点击Finish完成创建工程。
3.界面布局此浏览器的界面布局非常简单,包括:一个文本框EditText,一个按钮Button 和一个用来显示网页的面板WebView.如图所示:其XML布局管理器程序清单为:这里采用线性布局,用LinearLayout类来表示。
其中android:id:该属性指定了该控件的唯一标示符,在Java程序中可以通过finfViewById(“id”)来获取指定的Android界面组件。
android:layout_width:指定该界面组件的宽度。
如果该属性值为fill_parent,则说明该组件与其父容器就有相同的宽度;如果该属性值为wrap_content,则表明该组件的宽度取决于它的内容。
当然,也可以自己设置具体属性值。
android:layout_heigth:指定该界面组件的高度。
属性值同样可以为fill_parent和wrap_content。
android:text:设置组件上显示的名字。
android:orientation:设置布局管理器内组件的排列方式,可以设置为horizontal(水平排列),vertical(垂直排列)之一。
定义的EditText和Button采用水平的线性布局方式,然后,EditText和Button作为一个整体和WebView之间才用垂直布局的方式。
2.浏览器的实现需要加载的包有:是一个开源的浏览器引擎。
androidx browser用法
androidx browser用法AndroidX Browser是一个支持Android设备上网浏览功能的组件库。
本文将详细介绍AndroidX Browser的用法,并提供一步一步的回答。
第一步:了解AndroidX BrowserAndroidX Browser是Google为Android设备提供的一个快速、高性能的网页浏览器。
它基于Chromium项目开发,为用户提供出色的浏览体验和安全性能。
与传统的WebView相比,AndroidX Browser具有更强大的功能和更好的性能。
第二步:导入AndroidX Browser库要使用AndroidX Browser,首先需要将其库文件导入到Android项目中。
可以通过在项目的build.gradle文件中添加以下依赖项来实现:implementation 'androidx.browser:browser:1.3.0'确保你的项目已经使用了AndroidX支持库,并且已经同步并构建了项目。
第三步:创建WebView组件在布局文件中,可以添加一个WebView组件来显示网页内容。
可以在XML布局文件中添加以下代码来定义WebView:<WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent" />然后,在相应的Activity或Fragment中,可以通过以下方式获取对WebView的引用:WebView webView = findViewById(R.id.webview);第四步:加载网页内容要加载网页内容,可以使用WebView组件的loadUrl()方法。
以下是一些示例代码:webView.loadUrl("这将加载指定URL的网页内容并显示在WebView中。