当前位置:文档之家› android二级列表(带图片)

android二级列表(带图片)

android二级列表(带图片)
android二级列表(带图片)

效果图

自定义的适配器

package com.wyq;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import android.content.Context;

import android.graphics.drawable.Drawable; import android.util.Log;

import https://www.doczj.com/doc/f78334611.html,youtInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;

public class MyExpandableAdapter extends BaseExpandableListAdapter {

private ImageAndText imageAndText;

private Context context;

List> groups;

private List imgUrls;

private Holder holder;

private LayoutInflater inflater;

private List> childs;

private AsyncImageLoader imageLoader = new AsyncImageLoader();

public MyExpandableAdapter(Context context,

List> groups,

List> childs) {

this.groups = groups;

this.childs = childs;

this.context = context;

}

@Override

public Object getChild(int groupPosition, int childPosition) {

return childs.get(groupPosition).get(childPosition);

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public int getChildrenCount(int groupPosition) {

if(childs.size()-1 < groupPosition){

return 0;

}else{

return childs.get(groupPosition).size();

}

}

@Override

public Object getGroup(int groupPosition) {

return groups.get(groupPosition);

}

@Override

public int getGroupCount() {

return groups.size();

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View convertView, ViewGroup parent) {

if(convertView==null){

LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(https://www.doczj.com/doc/f78334611.html,YOUT_INFLATER_SERVICE);

LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate(https://www.doczj.com/doc/f78334611.html,yout.child, null);

convertView = linearLayout;

holder = new Holder();

holder.imageView = (ImageView) convertView.findViewById(R.id.imageView01);

holder.textView = (TextView) convertView.findViewById(R.id.childTo);

convertView.setTag(holder);

}else{

holder = (Holder) convertView.getTag();

}

// 获得组下对应的第几条model实体

ImageAndText imageAndText = (ImageAndText) getChild(groupPosition,

childPosition);

//加载图片,并实例化在列表中

String imageUrl = imageAndText.getImageUrl();

holder.imageView.setTag(imageUrl);

Drawable cachedImage = imageLoader.loadDrawable(context, imageUrl, new com.wyq.AsyncImageLoader.ImageCallback() {

public void imageLoaded(Drawable imageDrawable, String imageUrl) {

holder.imageView.setImageDrawable(imageDrawable);

}

});

if(cachedImage == null) {

holder.imageView.setImageResource(R.drawable.ic_launcher);

}else {

holder.imageView.setImageDrawable(cachedImage);

}

holder.textView.setText(imageAndText.getText());

return convertView;

}

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

String text = groups.get(groupPosition).get("group");

LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(https://www.doczj.com/doc/f78334611.html,YOUT_INFLATER_SERVICE);

//获取一级列表布局文件,设置相应元素属性

LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate(https://www.doczj.com/doc/f78334611.html,yout.group, null);

TextView textView = (TextView)linearLayout.findViewById(R.id.textView01);

textView.setText(text);

return linearLayout;

}

@Override

public boolean hasStableIds() {

return true;

}

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) {

return true;

}

public boolean isEmpty(){

return false;

}

public void onGroupExpanded (int groupPosition){

int a = getChildrenCount(groupPosition);

if(a==0){

Toast.makeText(context, "该组下没有数据!", Toast.LENGTH_LONG).show();

}

}

public void onGroupCollapsed (int groupPosition){

Log.i("GFEDCBA","我被折叠了!");

}

static class Holder {

ImageView imageView;

TextView textView;

}

}

异步加载图片

package com.wyq;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import https://www.doczj.com/doc/f78334611.html,ng.ref.SoftReference;

import https://www.doczj.com/doc/f78334611.html,.URL;

import java.util.HashMap;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.LinkedBlockingQueue;

import java.util.concurrent.ThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

import android.content.Context;

import android.graphics.drawable.Drawable;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

public class AsyncImageLoader {

private static final String TAG = "AsyncImageLoader";

private HashMap> imageCache;

private BlockingQueue queue;//阻塞队列

private ThreadPoolExecutor executor;//线程??

public AsyncImageLoader() {

imageCache = new HashMap>();

queue = new LinkedBlockingQueue();

// 线程??????50条,每次执行:1??空闲线程结束的超时时??180??

executor = new ThreadPoolExecutor(1, 50, 180, TimeUnit.SECONDS, queue);

}

public Drawable loadDrawable(final Context context, final String imageUrl,

final ImageCallback imageCallback) {

if (imageCache.containsKey(imageUrl)) {

SoftReference softReference = imageCache.get(imageUrl);

Drawable drawable = softReference.get();

if (drawable != null) {

return drawable;

}

}

final Handler handler = new Handler() {

public void handleMessage(Message message) {

imageCallback.imageLoaded((Drawable) message.obj, imageUrl);

}

};

// 用线程池来做下载图片的任??

executor.execute(new Runnable() {

@Override

public void run() {

Drawable drawable = loadImageFromUrl(context, imageUrl);

imageCache.put(imageUrl, new SoftReference(drawable));

Message message = handler.obtainMessage(0, drawable);

handler.sendMessage(message);

}

});

return null;

}

/**

* 网络图片先下载到本地cache目录保存,以imagUrl的图片文件名保存?? *

* 如果有同名文件在cache目录就从本地加载

* */

public static Drawable loadImageFromUrl(Context context, String imageUrl) { Drawable drawable = null;

if (imageUrl == null)

return null;

String imagePath = "";

String fileName = "";

// 获取url中图片的文件名与后缀

if (imageUrl != null && imageUrl.length() != 0) {

fileName = imageUrl.substring(https://www.doczj.com/doc/f78334611.html,stIndexOf("/") + 1);

}

// 图片在手机本地的存放路径,注意:fileName为空的情??

imagePath = context.getCacheDir() + "/" + fileName;

File file = new File(context.getCacheDir(), fileName);

if (!file.exists() && !file.isDirectory()) {

try {

// 可以在这里??过文件名来判断,是否本地有此图片

FileOutputStream fos = new FileOutputStream(file);

InputStream is = new URL(imageUrl).openStream();

int data = is.read();

while (data != -1) {

fos.write(data);

data = is.read();

;

}

fos.close();

is.close();

drawable = Drawable.createFromPath(file.toString());

} catch (IOException e) {

Log.e(TAG, e.toString() + "");

}

} else {

drawable = Drawable.createFromPath(file.toString());

}

return drawable;

}

public interface ImageCallback {

public void imageLoaded(Drawable imageDrawable, String imageUrl);

}

}

主界面

package com.wyq;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.ExpandableListView;

import android.widget.ExpandableListView.OnChildClickListener;

import android.widget.ExpandableListView.OnGroupClickListener;

import android.widget.Toast;

public class TestExpandActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/f78334611.html,yout.main);

ExpandableListView elv = (ExpandableListView) findViewById(R.id.expand);

//准备一级列表中显示的数据:2个一级列表,分别显示"group1"和"group2"

List> groups = new ArrayList>();

Map group1 = new HashMap();

group1.put("group", "group1");

Map group2 = new HashMap();

group2.put("group", "group2");

Map group3 = new HashMap();

group3.put("group","group3");

groups.add(group1);

groups.add(group2);

groups.add(group3);

//准备第一个一级列表中的二级列表数据:两个二级列表,分别显示"childData1"和"childData2"

List child1 = new ArrayList();

ImageAndText s1 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/logo-zhidao.gif","哈1哈");

ImageAndText s2 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/logo-news.gif","哈2哈");

ImageAndText s3 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/tb/style/common/logo.gif?v=1315184890","哈3哈");

ImageAndText s4 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/logo-zhidao.gif","哈4哈");

ImageAndText s5 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/mp3-jg.gif","哈5哈");

ImageAndText s6 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/image/ilogob.gif","哈6哈");

ImageAndText s7 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/img/shipin-jg.gif","哈7哈");

ImageAndText s8 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

ImageAndText s10 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

ImageAndText s11 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

ImageAndText s12 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

ImageAndText s13 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

ImageAndText s14 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/images/logo_193.png","哈8哈");

child1.add(s1);

child1.add(s2);

child1.add(s3);

child1.add(s4);

child1.add(s5);

child1.add(s6);

child1.add(s7);

child1.add(s11);

child1.add(s12);

child1.add(s13);

child1.add(s14);

child1.add(s10);

child1.add(s8);

List child2 = new ArrayList();

ImageAndText s9 = new ImageAndText("https://www.doczj.com/doc/f78334611.html,/media/id=n1DLrHnsnHD&gp=402&time=nHnkPjT4n 1n1n6.jpg","哈9哈");

child2.add(s9);

//用一个list对象保存所有的二级列表数据

List> childs = new ArrayList>();

childs.add(child1);

childs.add(child2);

final MyExpandableAdapter viewAdapter = new MyExpandableAdapter(this,groups,childs);

/**

* @param false 可以打开列表

* @param true 打不开列表

*/

elv.setOnGroupClickListener(new OnGroupClickListener() {

@Override

public boolean onGroupClick(ExpandableListView parent, View v,

int groupPosition, long id) {

Map object = (Map) viewAdapter.getGroup(groupPosition);

String name = (String) object.get("group");

if(object.toString().equals("{group=group1}")){

return false;

}else if(object.toString().equals("{group=group2}")){

return false;

}else{

Toast.makeText(TestExpandActivity.this, "请先登录!"+name, Toast.LENGTH_LONG).show();

return true;

}

}

});

elv.setOnChildClickListener(new OnChildClickListener() {

@Override

public boolean onChildClick(ExpandableListView parent, View v,

int groupPosition, int childPosition, long id) {

ImageAndText object =(ImageAndText)viewAdapter.getChild(groupPosition, childPosition);

Toast.makeText(TestExpandActivity.this, "点击了"+object.getText().toString(), Toast.LENGTH_LONG).show();

return false;

}

});

elv.setAdapter(viewAdapter);

}}

实体类

package com.wyq;

public class ImageAndText {

private String imageUrl;

private String text;

public ImageAndText(String imageUrl,String text){

this.imageUrl = imageUrl;

this.text = text;

}

public String getImageUrl(){

return imageUrl;

}

public String getText(){

return text;

}

}

作者QQ243567952

android毕业设计(论文)开题报告

毕业设计(论文) 开题报告 题目___________________________ 学院___________________________ 专业及班级___________________________ 姓名___________________________ 学号___________________________ 指导教师 ___________________________ 日期 ___________________________

西安科技大学毕业设计(论文)开题报告

二、主要研究(设计)内容、研究(设计)思路及工作方法或工作流程 设计内容:基于Android平台下实现理货员的功能:精耕拜访,销售机会,拜访效果,门店销量查询,待办事项,数据维护:队列信息,基础信息,地图下载。 设计思路及工作方法: 1.精耕拜访: (1)初始进入该页面,系统会自动获取该理货员的本日拜访的门店及路线。 (2)下方地图会自动定位目前理货员的位置。 (3)点击门店的具体门店名称,在右边会显示该门店的联系人,电话,及地址,并且地图 会自动切换定位以该门店为中心。 (4)点击地图上的+可实现地图局部放大。-可实现地图的放小。 (5)如已拜访的门店,点击进入可以调去历史拜访数据。如未拜访的门店,点击进入可以新增该拜访记录。 (6)如理货员在拜访期间,发现门店已经有卖而目前系统中无记录的情况,则可以通过扫 描SKU的条形码,系统会自动匹配该SKU的信息给理货员。 匹配顺序:连锁总店—区域管理—基本SKU信息 补充说明: (1)公司动态内容,为了显示保乐力加集团的整体形象,有必要对公司的动态进行展示。 要包括集团的光辉历程,门店信息,集团的促销信息等。 (2)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员 需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且 分发。 (3)陈列报告,为显示每次理货员必须处理的门店信息记录及图片等。 (4)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (5)价格显示,系统会自动带出竞品信息。罗列在下半部。理货员在进行拜访期间,可以对本身的SKU及竞品的价格进行登记。主要登记内容:零售价格,促销价格及促销期间。信息采集完毕,可以供后台进行统计分析。 (7)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (7)库存信息,主要记录SKU的库存数量。 (8)上半部为助销申请内容,主要是对一些礼品的申请。 (9)订单处理,为新增订单,退货内容及换货内容的跟踪。 2.销售机会: (1)打开销售机会界面,会自动定位目前的门店列表。 (2)用户可以输入门店名称查询具体的门店信息及地图位置。

Android图片处理工具类(圆角,压缩)

Android图片处理工具类(圆角,压缩) 工作中用到的图片处理工具类,简单写下来,以便备用! public class BitmapUtils { /** * 图像背景圆角处理 * bitmap要处理的图片 roundPx 图片弯角的圆度一般是5到10之间 */ public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) { // 创建与原图大小一样的bitmap文件,Config.ARGB_8888根据情况可以改用其它的 Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); // 实例画布,绘制的bitmap将保存至output中 Canvas canvas = new Canvas(output); final int color = 0xff424242;//写自己需要的颜色值 final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); bitmap.recycle(); bitmap = null; return output; } /** * bitmap缩放 * width要缩放的宽度 height要缩放的高度 */ public static Bitmap getBitmapDeflation(Bitmap bitmap, int width, int height, boolean recycle) { if (null == bitmap) { return null;

如何在android程序中显示图片

我们做Android 程序的时候,有时候需要显示图片在界面上,这里我们将实现一个将图片展示到手机屏幕,并让其不停的浮动的效果! 首先我们要先准备一张图片,在这里我准备了一张图片,如下: 将此图片放到文件夹"res->drawable-*dpi"下,记得,三个文件夹都要放,因为系统会根据不同的分辨率去取不同的图片,如果有的没放,在某些分辨率下,会找不到资源。将此图片重命名为“pic.png”,在R.java里的drawable 类里会生成一个pic的常量。 图片要显示,就是要容器可以让其显示,因为所有的Android的UI组件都是继承自View,View也实现了Drawable接口,所以在此,我们也重新定义一个View让其用来显示我们的这张图片,并让这张图片浮动。我们创建一个在包“org.leo.bitmap”下的,类名为“MovingPictureView”的类,该类继承自android.view.View。此类目前代码大致如下: public class MovingPictureView extends View { public MovingPictureView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } } 我们要重载他的“onDraw”方法,这个方法就是Android框架展现View的时候用来绘制显示内容那个的方法。在此我们将他的所有方法体都删除掉(上面代码红色部分删掉),完全将其重写。首先我们要创建一个图片对象,在Android里,所有位图图片都是使用Bitmap类来封装的,我们就先声明一个代表我们刚才图片的一个Bitmap对象,可通过以下方式声明: Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic); 其中的“getResources()”方法,是有View提供的,可以根据此方法获得我们所有的资源,将来有机会再细说!

Android权限清单

允许读写访问"properties"表在checkin数据库中,改值可以修改上传 允许一个程序访问CellID或WiFi热点来获取粗略的位置 允许一个程序访问精良位置(如GPS) < uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" > 允许应用程序访问额外的位置提供命令 允许程序创建模拟位置提供用于测试 允许程序访问有关GSM网络信息 允许程序使用SurfaceFlinger底层特性 允许程序访问Wi-Fi网络状态信息 允许程序发布系统级服务 允许程序更新手机电池统计信息 允许程序连接到已配对的蓝牙设备 允许程序发现和配对蓝牙设备 请求能够禁用设备 允许程序广播一个提示消息在一个应用程序包已经移除后 允许一个程序广播常用intents

android中selector背景选择器(全部属性)

浅谈android的selector背景选择器 ---------------------------------------------------- Item顺序是有讲究的,条件限定越细致,则应该放到前面。比如这儿如果把1,2行和3,4行的item交换,那么pressed的就永远无法触发了,因为有item已经满足条件返回了。可以理解为代码中的if语句。 ---------------------------------------------------- 关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。 首先android的selector是在drawable/xxx.xml中配置的。 先看一下listview中的状态: 把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。 drawable/list_item_bg.xml

如何用Android用ImageView显示本地和网上的图片说明

如何用Android用ImageView显示本地和网上 的图片说明 Android:ImageView如何显示网络图片 本文地址:https://www.doczj.com/doc/f78334611.html,/programmar/blog/item/79483ecb2ac75cf552664fd3.html在 Android中显示一张网络图片其实是超级简单的,下面就一个非常简单的例子: Step1: 1、创建你的Activity,本例中以ViewWebImageActivity说明; 2、ViewWebImageActivity中的代码如下: String imageUrl = "https://www.doczj.com/doc/f78334611.html,/baidu/pic/item/7d8aebfebf3f9e125c6008d8.jpg"; //这就是你需要显示的网络图片---网上随便找的 Bitmap bmImg; ImageView imView; Button button1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/f78334611.html,yout.main); imView = (ImageView) findViewById(R.id.imview); imView.setImageBitmap(returnBitMap(imageUrl)); } public Bitmap returnBitMap(String url) { URL myFileUrl = null; Bitmap bitmap = null; try { myFileUrl = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); conn.setDoInput(true); conn.connect();

Android用户权限列表

我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android的权限非常多。我们在开发软件的时候,也需要声明相应的权限,比如希望软件能发短信,需要声明软件调用短信的权限,否则软件运行的时候就会报错。 Android的权限在AndroidManifest.xml文件里配置。AndroidManifest文件中有四个标签与permission有关,它们分别是 。其中最常用的是 ,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明 。 [html]view plain copy 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... 11. 12. 的作用相似,两者之间的不同之处, 是android预定义的权限,是自己定义的权 限。 用的相对较少, 这两个标签就更少见了,简单说 就是声明一个标签,该标签代 表了一组permissions,而是为一组permissions声明了一个namespace。后面三个标签具体使用方法见后续文章。 定义方法如下:

android消除Preference黑色背景

话不多说,直接切入正题 一、Android中消除preference拖拉时黑色背景方法: 首先建立一个preference_list.xml 代码如下: 注释:android:divider="@drawable/divider" android:cacheColorHint="#00000000" 重点是这两句话:第一句是设置preferece之间的分割线; 第二句就是消除preference拖拽时产生的黑色背景啦!(“#00000000”就是将其设为透明,你也可以把它设为其他颜色) 二、代码中调用方法: 随便写个PreActivity.java import android.content.Context; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; public class PreActivity extends PreferenceActivity { @Override

android 图片剪裁

1. Canvas类用来实现绘制.通过组合使用Canva s类的成员函数可以实现随心随欲地绘制图片的任何部分. Canvas.clipRect:设置显示区域 Canvas.drawBitmap:绘制 例子: Bitmap b=Bitma pFactory.decodeStream("图片编号", null);//读取图片 ... Canvas c = null;//实例Canvas c.save();//记录原来的ca nvas状态 c.clipRect(100,100,200,300);//显示从(100,100)到(200,300)的区域(单位:象素) c.drawBitmap(b,10,0,null); //将阉割过的图片画到(10,0)位置 c.restore();//恢复canva s状态 2. android 从sdcard 读取图片剪切粘贴 文章分类:移动开发 android 图片编辑时需要从外界(sdcard ,res/.png...,xml)读取图片到画布,其中从sdcard读取图片到画布的过程如下: public void drawBitMapFromSDcard(String dir) { if(dir ==null || dir.equals("")){ return ; } bitMap = BitmapFactory.decodeFile(dir); int width = bitMap.getWidth(); int height = bitMap.getHeight(); 如果图片像素太大超过手机屏幕大小可以按照手机屏比例进行缩放 if (width > 320 && height > 480) { int newWidth = 320; int newHeight = 480; float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; float minScale = Math.min(scaleWidth, scaleHeight); matrix = new Matrix();

Android permission 访问权限说明手册

Android permission 访问权限说明手册 tech.er 2011年2月12日 android平台上的权限许可分得很细,如果软件无法正常执行时,首先要检查是不是缺少相关的permission声明,以下就把permission 访问权限列举出来供大家参考。 程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCATION 允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location) android.permission.ACCESS_FINE_LOCATION 允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location) android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands) android.permission.ACCESS_MOCK_LOCATION 允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing) android.permission.ACCESS_NETWORK_STATE 允许程序访问有关GSM网络信息(Allows applications to access information about networks) android.permission.ACCESS_SURFACE_FLINGER 允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger’s low level features) android.permission.ACCESS_WIFI_STATE 允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks) android.permission.ADD_SYSTEM_SERVICE 允许程序发布系统级服务(Allows an application to publish system-level services). android.permission.BATTERY_STATS 允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics) android.permission.BLUETOOTH

Android 标题栏添加控件及Button控件背景颜色的设置

Android 标题栏添加控件及Button控件背景颜色的设置 一、Android中标题栏添加按 现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图: 下面通过实例来看一下如何实现。 1、在layout下创建一个titlebtn.xml文件,内容如下:

android图片3d旋转

看到很多人在问如何实现三维的翻转效果,所以今天在这里简单的给大家分析一下,其实在APIDemo中就有这样一个例子,那么我们就以其为例来学习Android中的翻转动画效果的实现,首先看一下运行效果如下图所示。 Android中并没有提供直接做3D翻转的动画,所以关于3D翻转的动画效果需要我们自己实现,那么我们首先来分析一下Animation 和Transformation。 Animation动画的主要接口,其中主要定义了动画的一些属性比如开始时间,持续时间,是否重复播放等等。而Transformation中则包含一个矩阵和alpha值,矩阵是用来做平移,旋转和缩放动画的,而alpha值是用来做alpha动画的,要实现3D旋转动画我们需要继承自Animation类来实现,我们需要重载getTransformation和applyTransformation,在getTransformation中Animation会根据动画的属性来产生一系列的差值点,然后将这些差值点传给applyTransformation,这个函数将根据这些点来生成不同的Transformation。下面是具体实现: 1.public class Rotate3dAnimation extends Animation { 2.//开始角度 3. private final float mFromDegrees; 4.//结束角度 5. private final float mToDegrees; 6.//中心点

7. private final float mCenterX; 8. private final float mCenterY; 9. private final float mDepthZ; 10.//是否需要扭曲 11. private final boolean mReverse; 12.//摄像头 13. private Camera mCamera; 14. public Rotate3dAnimation(float fromDegrees, float toDegrees, 15. float centerX, float centerY, float depthZ, boolean reverse) { 16. mFromDegrees = fromDegrees; 17. mToDegrees = toDegrees; 18. mCenterX = centerX; 19. mCenterY = centerY; 20. mDepthZ = depthZ; 21. mReverse = reverse; 22. } 23. 24. @Override 25. public void initialize(int width, int height, int parentWidth, int par entHeight) { 26. super.initialize(width, height, parentWidth, parentHeight); 27. mCamera = new Camera(); 28. } 29.//生成Transformation 30. @Override 31. protected void applyTransformation(float interpolatedTime, Transformat ion t) { 32. final float fromDegrees = mFromDegrees; 33.//生成中间角度 34. float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interp olatedTime); 35. 36. final float centerX = mCenterX; 37. final float centerY = mCenterY; 38. final Camera camera = mCamera; 39. 40. final Matrix matrix = t.getMatrix(); 41. 42. camera.save(); 43. if (mReverse) { 44. camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime); 45. } else {

安卓图片批量处理软件 (12页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 安卓图片批量处理软件 篇一:Android_解决图片大量下载:软引用 Android 解决图片大量下载:软引用 1.对象的强、软、弱和虚引用 为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为:强引用、软引用、弱引用和虚引用 备注:这四种的区别: ⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ⑵软引用(SoftReference) 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存(下文给出示例)。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。 ⑶弱引用(WeakReference) 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

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权限大全 允许程序写入外部存储,如SD卡上写文件 录音 允许编写短信 允许读写系统设置项 允许程序读写系统安全敏感的设置项 允许程序写入Google Map服务数据 写入联系人,但不可读取 写入日程,但不可读取 写入网络GPRS接入点设置 允许程序在手机屏幕关闭后后台进程仍然运行 允许振动 允许程序使用SIP视频服务 允许程序请求验证从AccountManager 更新设备状态 显示系统窗口 入或修改订阅内容的数据库 访问订阅信息的数据库

Android 中的ListView选中项的背景颜色怎么设置

Android 中的ListView选中项的背景颜色怎么设置? android中ListView获得焦点的项默认是黄色的(模拟器上)现在因为需求想要自己定义被选中项的背景能实现吗? 最佳答案 完全可以实现,这用到了Android的Selector(根据组件的状态显示该状态对应的图片,并以此图片作为背景显示)。把下面的XML文件保存成你自己命名的.xml文件(比如list_bg.xml),注意,这个文件相当于一个背景图片选择器,在系统使用时根据 ListView中的列表项的状态来使用相应的背景图片,什么情况使用什么图片我在下面都进行了说明。还有,你可以把它看成是一个图片来使用,放于 drawable目录下,配置背景属性 android:background="@drawable/list_bg"就能达到你需要的目的了。 --------------------------------------------------------------------------------------------------------------- 在values下新建一个color.xml #808080FF #FFFFFFFF #00ffffff

相关主题
文本预览
相关文档 最新文档