在Androidapp修改包名中app是如何通过网络来修改图片的显示啊

爱豆账号登录
请输入右侧验证码
爱豆新闻讯 演员宋仲基、金智媛、张东健 出演的 tvN 《阿斯达年代记》正式的投入制作。据悉,导演金元锡、编剧金英贤和朴尚渊和三位主演演员们将在8月26日进行全员剧本阅读。“阿斯达
根据日本唱片协会10日发表的“黄金”认证作品中,防弹少年团于5月发行的正规三辑《LOVE YOURSELF 轉“Tear”》突破了10万张以上的销售量,获得了“黄金”认证。此前,防
整整期盼了三天的新专第二支单曲来啦!《Hold me down》(中文版)在今天中午十二点全网上线啦,不断释出的海报歌词更是吊足了每个你的胃口!不知道这次的单曲会带来怎样的音乐体验
美国Billboard聚焦iKON的音乐成长。9日(当地时间),Billboard介绍“iKON凭借...
爱豆新闻讯 宋仲基酱紫啊9月1日下午4点庆熙大学和平殿堂举行出道10周年纪念FM“我们在一起的日子”...
迪丽热巴慢游塞舌尔第一集正片于日前已正式上线,远离聚光灯的迪丽热巴在海岛上过着惬意十足的度假生活,一...
近日,某杂志曝光彭昱畅最新时尚大片,少年一身潮流搭配动感帅气,纯色背景衬托清爽气质,招牌微笑配合独属...
好莱坞动作冒险巨制,经典特工系列新作《碟中谍6:全民瓦解》今日发布全新预告片“风暴来袭”。短短30秒...
门票专辑,定期大派送
还有明星见面机会呦~android中如何用广播监听网络变化,将其显示在通知栏上_百度知道
android中如何用广播监听网络变化,将其显示在通知栏上
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
知道爱好者ever
来自电脑网络类芝麻团
知道爱好者ever
采纳数:9688
获赞数:59143
参与团队:
网络状态发生变化的时候,系统会发出 android.net.conn.CONNECTIVITY_CHANGE .下面是实现的 demo :package mark.import android.app.Simport android.content.BroadcastRimport android.content.Cimport android.content.Iimport android.content.IntentFimport android.net.ConnectivityMimport android.net.NetworkIimport android.os.IBimport android.util.Lpublic class ListenNetStateService extends Service {
private ConnectivityManager connectivityM
private NetworkI
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.d(&mark&, &网络状态已经改变&);
connectivityManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
if(info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.d(&mark&, &当前网络名称:& + name);
Log.d(&mark&, &没有可用网络&);
public IBinder onBind(Intent intent) {
public void onCreate() {
super.onCreate();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, mFilter);
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。OPPO Find X慢评一:屏占比93.8%打游戏是种什么体验
游 戏 应 用
热门游戏推荐
阅读完整资讯需要收取阅读费用,收费标准如下:新游戏介绍:1元/条,游戏新手攻略:1-3元/条,热门游戏攻略:5元/条
机锋网登录页
请输入账号
请输入密码
验证码错误
没有账号,
机锋网注册页
手&&机&&号
请输入账号
验&&证&&码
验证码错误
验证码错误
密&&&&&&&码
两次密码输入错误
我已阅读并同意
您还未接受机锋网用户协议
已有账号,
机锋网找回密码
手机找回邮箱找回
手&&机&&号
请输入账号
验&&证&&码
验证码错误
验证码错误
密&&&&&&&码
请输入密码
两次密码输入错误
验证码错误
修改密码邮件已发送至您的邮箱上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示。事实上,一般是先获取Josn或sml数据,然后解释显示。我们先从网上获取xml,然后对其进行解析,最后显示在ListView上。具体步骤:
客户端发出请求,获取xml客户端异步解析xmlListView将解析完的数据显示
一、Android客户端
(1)xml布局文件
mainxml,就是一个ListView。
&?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"&
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#b5b5b5"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector" /&
&/LinearLayout&
ListView的每一行的布局,list_raw.xml,看一下结构图:
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" &
ListView最左边的缩略图 --&
&LinearLayout android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="3dip"
android:layout_alignParentLeft="true"
android:background="@drawable/image_bg"
android:layout_marginRight="5dip"&
&ImageView
android:id="@+id/list_image"
android:layout_width="50dip"
android:layout_height="50dip"
android:src="@drawable/rihanna"/&
&/LinearLayout&
&!-- 歌曲名--&
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/thumbnail"
android:layout_toRightOf="@+id/thumbnail"
android:text="Rihanna Love the way lie"
android:textColor="#040404"
android:typeface="sans"
android:textSize="15dip"
android:textStyle="bold"/&
&!-- 歌手名 --&
android:id="@+id/artist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:textColor="#343434"
android:textSize="10dip"
android:layout_marginTop="1dip"
android:layout_toRightOf="@+id/thumbnail"
android:text="Just gona stand there and ..." /&
&!-- 歌曲播放时间 --&
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/title"
android:gravity="right"
android:text="5:45"
android:layout_marginRight="5dip"
android:textSize="10dip"
android:textColor="#10bcc9"
android:textStyle="bold"/&
&!-- 进入播放 --&
&ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/&
&/RelativeLayout&
另外我们打算使用几个特效,一个是当点击列表项目的时候,项目背景色改变,其实就是一个selector;另一个就是用shape美化视觉效果,具体看xml代码:
1.list_selector.xml
&?xml version="1.0" encoding="utf-8"?&
&selector xmlns:android="http://schemas.android.com/apk/res/android"&
&!-- Selector style for listrow --&
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/gradient_bg" /&
&item android:state_pressed="true"
android:drawable="@drawable/gradient_bg_hover" /&
&item android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/gradient_bg_hover" /&
&/selector&
2.gradient_bg.xml,是默认背景梯度风格
&?xml version="1.0" encoding="utf-8"?&
&shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"&
Gradient Bg for listrow --&
android:startColor="#f1f1f2"
android:centerColor="#e7e7e8"
android:endColor="#cfcfcf"
android:angle="270" /&
3.gradient_bg_hover.xml 梯度风格在悬停状态
&?xml version="1.0" encoding="utf-8"?&
&shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"&
&!-- Gradient BgColor for listrow Selected --&
android:startColor="#18d7e5"
android:centerColor="#16cedb"
android:endColor="#09adb9"
android:angle="270" /&
4.image_bg.xml 在图片周围的白色边条
&?xml version="1.0" encoding="utf-8"?&
&layer-list xmlns:android="http://schemas.android.com/apk/res/android" &
android:shape="rectangle"&
&stroke android:width="1dp" android:color="#dbdbdc" /&
&solid android:color="#FFFFFF" /&
&/layer-list&
以上效果基本上都用到了shape,对此不了解的可以去查看相关资料。上面就是全部的xml布局文件,下面将开始写代码。
(2)主要代码
代码部分主要涉及到一下几个功能,重写ListView的适配器(BaseAdapter),从网络获取图片,图片缓存的处理,xml的解析。
①重写ListView的适配器,这部分可以参考上一篇文章,LazyAdapter.java
import java.util.ArrayL
import java.util.HashM
import android.app.A
import android.content.C
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.BaseA
import android.widget.ImageV
import android.widget.TextV
public class LazyAdapter extends BaseAdapter {
private ArrayList&HashMap&String, String&&
private static LayoutInflater inflater=
public ImageLoader imageL //用来下载图片的类,后面有介绍
public LazyAdapter(Activity a, ArrayList&HashMap&String, String&& d) {
activity =
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
public int getCount() {
return data.size();
public Object getItem(int position) {
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertV
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView)vi.findViewById(R.id.title); // 标题
TextView artist = (TextView)vi.findViewById(R.id.artist); // 歌手名
TextView duration = (TextView)vi.findViewById(R.id.duration); // 时长
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // 缩略图
HashMap&String, String& song = new HashMap&String, String&();
song = data.get(position);
// 设置ListView的相关值
title.setText(song.get(CustomizedListView.KEY_TITLE));
artist.setText(song.get(CustomizedListView.KEY_ARTIST));
duration.setText(song.get(CustomizedListView.KEY_DURATION));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
②网络获取图片的类,ImageLoader.java:
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.net.HttpURLC
import java.net.URL;
import java.util.C
import java.util.M
import java.util.WeakHashM
import java.util.concurrent.ExecutorS
import java.util.concurrent.E
import android.app.A
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.widget.ImageV
public class ImageLoader {
MemoryCache memoryCache=new MemoryCache();
FileCache fileC
private Map&ImageView, String& imageViews=Collections.synchronizedMap(new WeakHashMap&ImageView, String&());
ExecutorService executorS
public ImageLoader(Context context){
fileCache=new FileCache(context);
executorService=Executors.newFixedThreadPool(5);
final int stub_id = R.drawable.no_
public void DisplayImage(String url, ImageView imageView)
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url);
if(bitmap!=null)
imageView.setImageBitmap(bitmap);
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
private void queuePhoto(String url, ImageView imageView)
PhotoToLoad p=new PhotoToLoad(url, imageView);
executorService.submit(new PhotosLoader(p));
private Bitmap getBitmap(String url)
File f=fileCache.getFile(url);
Bitmap b = decodeFile(f);
if(b!=null)
Bitmap bitmap=
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
} catch (Exception ex){
ex.printStackTrace();
//解码图像用来减少内存消耗
private Bitmap decodeFile(File f){
//解码图像大小
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds =
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//找到正确的刻度值,它应该是2的幂。
final int REQUIRED_SIZE=70;
int width_tmp=o.outWidth, height_tmp=o.outH
int scale=1;
while(true){
if(width_tmp/2&REQUIRED_SIZE || height_tmp/2&REQUIRED_SIZE)
width_tmp/=2;
height_tmp/=2;
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {}
private class PhotoToLoad
public ImageView imageV
public PhotoToLoad(String u, ImageView i){
imageView=i;
class PhotosLoader implements Runnable {
PhotoToLoad photoToL
PhotosLoader(PhotoToLoad photoToLoad){
this.photoToLoad=photoToL
public void run() {
if(imageViewReused(photoToLoad))
Bitmap bmp=getBitmap(photoToLoad.url);
memoryCache.put(photoToLoad.url, bmp);
if(imageViewReused(photoToLoad))
BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad);
Activity a=(Activity)photoToLoad.imageView.getContext();
a.runOnUiThread(bd);
boolean imageViewReused(PhotoToLoad photoToLoad){
String tag=imageViews.get(photoToLoad.imageView);
if(tag==null || !tag.equals(photoToLoad.url))
//用于显示位图在UI线程
class BitmapDisplayer implements Runnable
PhotoToLoad photoToL
public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;}
public void run()
if(imageViewReused(photoToLoad))
if(bitmap!=null)
photoToLoad.imageView.setImageBitmap(bitmap);
photoToLoad.imageView.setImageResource(stub_id);
public void clearCache() {
memoryCache.clear();
fileCache.clear();
③xml解析,xml的解析有很多方法,这里采用进行dom方式的xml解析。
import java.io.IOE
import java.io.StringR
import java.io.UnsupportedEncodingE
import javax.xml.parsers.DocumentB
import javax.xml.parsers.DocumentBuilderF
import javax.xml.parsers.ParserConfigurationE
import org.apache.http.HttpE
import org.apache.http.HttpR
import org.apache.http.client.ClientProtocolE
import org.apache.http.client.methods.HttpP
import org.apache.http.impl.client.DefaultHttpC
import org.apache.http.util.EntityU
import org.w3c.dom.D
import org.w3c.dom.E
import org.w3c.dom.N
import org.w3c.dom.NodeL
import org.xml.sax.InputS
import org.xml.sax.SAXE
import android.util.L
public class XMLParser {
// 构造方法
public XMLParser() {
* 从URL获取XML使HTTP请求
* @param url string
public String getXmlFromUrl(String url) {
String xml =
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
* 获取XML DOM元素
* @param XML string
public Document getDomElement(String xml){
Document doc =
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
/** 获取节点值
* @param elem element
public final String getElementValue( Node elem ) {
if( elem != null){
if (elem.hasChildNodes()){
for( child = elem.getFirstChild(); child != child = child.getNextSibling() ){
if( child.getNodeType() == Node.TEXT_NODE
return child.getNodeValue();
return "";
* 获取节点值
* @param Element node
* @param key string
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
④程序缓存的处理,主要是内存缓存+文件缓存。内存缓存中网上很多是采用SoftReference来防止堆溢出:
MemoryCache.java:
import java.lang.ref.SoftR
import java.util.C
import java.util.HashM
import java.util.M
import android.graphics.B
public class MemoryCache {
private Map&String, SoftReference&Bitmap&& cache=Collections.synchronizedMap(new HashMap&String, SoftReference&Bitmap&&());//软引用
public Bitmap get(String id){
if(!cache.containsKey(id))
SoftReference&Bitmap& ref=cache.get(id);
return ref.get();
public void put(String id, Bitmap bitmap){
cache.put(id, new SoftReference&Bitmap&(bitmap));
public void clear() {
cache.clear();
FileCache.java
import java.io.F
import android.content.C
public class FileCache {
private File cacheD
public FileCache(Context context){
//找一个用来缓存图片的路径
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
cacheDir=context.getCacheDir();
if(!cacheDir.exists())
cacheDir.mkdirs();
public File getFile(String url){
String filename=String.valueOf(url.hashCode());
File f = new File(cacheDir, filename);
public void clear(){
File[] files=cacheDir.listFiles();
if(files==null)
for(File f:files)
f.delete();
⑤还有一个读取流的工具类,Utils.java:
import java.io.InputS
import java.io.OutputS
public class Utils {
public static void CopyStream(InputStream is, OutputStream os)
final int buffer_size=1024;
byte[] bytes=new byte[buffer_size];
int count=is.read(bytes, 0, buffer_size);
if(count==-1)
os.write(bytes, 0, count);
is.close();
os.close();
catch(Exception ex){}
还可以像下面这样表达,方法是一样的,就是表达形式上不同:
public static byte[] readStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while( (len=inStream.read(buffer)) != -1){
outSteam.write(buffer, 0, len);
outSteam.close();
inStream.close();
return outSteam.toByteArray();
最后就是主Activity的代码了,
package com.example.
import java.util.ArrayL
import java.util.HashM
import org.w3c.dom.D
import org.w3c.dom.E
import org.w3c.dom.NodeL
import android.app.A
import android.os.B
import android.view.V
import android.widget.AdapterV
import android.widget.AdapterView.OnItemClickL
import android.widget.ListV
public class CustomizedListView extends Activity {
// 所有的静态变量
static final String URL = "http://api.androidhive.info/music/music.xml";//xml目的地址,打开地址看一下
// XML 节点
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList&HashMap&String, String&& songsList = new ArrayList&HashMap&String, String&&();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // 从网络获取xml
Document doc = parser.getDomElement(xml); // 获取 DOM 节点
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// 循环遍历所有的歌节点 &song&
for (int i = 0; i & nl.getLength(); i++) {
// 新建一个 HashMap
HashMap&String, String& map = new HashMap&String, String&();
Element e = (Element) nl.item(i);
//每个子节点添加到HashMap关键= &值
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// HashList添加到数组列表
songsList.add(map);
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
//为单一列表行添加单击事件
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView&?& parent, View view,
int position, long id) {
//这里可以自由发挥,比如播放一首歌曲等等
最后看一下效果:
ListView加载网络图片的优化
ListView异步加载图片,完美实现图文混排
Android基础篇之在ListView中显示网络图片
Android ListView加载网络数据和图片
根据url路径获取图片并显示到ListView中
没有更多推荐了,在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目。 有时候是不是有这样的想法,做一个自己的网站、但一直未付诸行动。2012年时, 终于付诸行动了,花了三个月,现学现卖, 熬夜通宵用PHP做了一个小网站,但后续就再没有坚持下去。 直到从电信行业转行互联网行业后,做一款属于自己的应用的的想法越来越迫切,于是今年开始便投入到Android App开发的阵营中来。今年断断续续做了4款Android App应用, 一款公司应用,三款自有应用。从前期的学习, 到后续的实践,很多东西需要自己去摸索.
目前,应用资讯类型App功能核心都包括内容列表展示、内容详情展示、个人中心、 评论分享、搜索四大功能。
下面就我以我开发的一款编程学习的App[编程在线]为例, UI + Andorid客户端 + 服务器 + 内容 + 上线 都是我一个人在做, 最终做出这样一款App来花费了大量的时间和经历。先简单介绍一下[编程在线]App
编程在线介绍:
编程在线是一款包括编程语言、移动开发、WEB开发、RSS订阅功能的综合性编程学习客户端。界面简洁、操作简单。文章内容包括java、NET、C/C++、PHP、Android开发、Windows开发、iPhone开发、JavaScript开发、AngularJS、Node.js、JQuery等精彩技术文章。
编程在线功能:
1、提供编程语言、移动开发、WEB开发相关技术文章。2、提供专题文章,支持文章分类阅读。3、支持按编辑推荐、最新文章、最热文章阅读文章。4、支持页面下拉刷新页面内容。5、支持离线阅读, 已阅读的文章会在本地缓存。6、支持博客园和CSDN RSS订阅功能。7、支持最新文章消息推送功能。8、支持文章分享、收藏、笔记、评论功能。9、支持收藏、笔记数据同步到服务器。
总计设计:
1、Android客户端采用 Tab + 侧边栏的整体布局
2、服务器采用新浪SAE部署, 采用PHP + MySQL 开发 ,数据交互采用 java通过http调用php restful接口
一款android App需要考虑的问题:
1、UI设计: UI是大众的弱点,如果想开发一款不错的应用,简单的ps要会2、有无网络数据处是读缓存、还是从网络读取3、数据缓存:服务器缓存和本地数据缓存4、数据同步: 服务器和本地数据同步、UI界面数据同步5、加载loading、加载失败、失败重试6、消息通知: 客户端主动拉取或者实现服务器推送7、登陆与分享:自由账号与第三方账号打通、分享定制8、首次加载速度: 发布app前,把一部分数据打包在app中9、统计数据:用于统计用户习惯、后续功能完善和数据调整的依据10、集成第三方登陆:QQ登陆和新浪微博登陆标配11、安全性:获取请求的安全性、用户输入安全性、评论防刷问题等12、兼容性问题13、架构的可用性,便于后续项目开发
常用系统组件和开源组件:
1、Fragment 需要解决Fragment隐藏与显示重叠问题
需要解决由后台切回前台Fragment被销毁,导致显示非常慢
slidingmenu
或者 NavigationDraw
3、图片加载: imageLoader
兼容性问题,部分远程图片无法加载显示
4、HTTP异步加载android-async-http
5、上拉下拉刷新: pullrefresh
1、需要解决兼容性问题,mx3滚动有问题,会自动拉出很大一块空白
2、上拉和下拉文案共用,需要解决上拉和下拉文案的不同
6、tab控件 PagerSlidingTabStrip
1、需要Tab解决样式定制问题
2、需要解决tab缓存和惰性加载
7、SAXParser 解析 rss
1、遇到引入第三方解析jar包时, 运行时找不类, 但类其实是有的
2、遇到了解析CSDN博客文章时无法解析标题到标题的bug
8、集成QQ登陆和腾讯微博登陆
1、 登陆无法拿到QQ和账号,需要自己解决第三方账号与自由账号打通问题
2、 QQ 图像无法用imageLoader加载
9、分享组件可以调用系统的,也可以使用第三方组件ShareSDK
10、消息推送
1、自己实现推送:主动拉取 或者 socket通信
2、可以集成第三方消息推送、比如百度云推送、云之讯等
11、UI设计
1、iconpng.com
iconfinder.com
easyicon.com2、使用photoshop ps自己需要的图片3、付费让UI设计人员帮你设计
广告平台:
豌豆荚、广点通、 有米广告、 点乐积分墙、
多盟广告等等
应用市场:
应用宝、豌豆荚、百度、91、安智、安卓、360、华为(暂不允许个人提交的应用)、小米、魅族等
应用审核:
审核都要3--10天左右,需要提供身份证明或者签订协议,部分市场某些应用不允许上架。特别广告和积分墙的应用。
编程在线下载:
编程在线网站:&(最新版2.1)
编程在线移动版:
编程在线Android客户端, 已上架到豌豆荚、应用宝、91、安卓、机锋应用市场, 欢迎大家下载, &共同学习, 2.0 版本。
我的其他软件:
阅读(...) 评论()

我要回帖

更多关于 怎么修改Androidapp 的文章

 

随机推荐