Android 学习笔记之 个人认为最简单的查看Android源码方案

硕鼠 分享 时间: 收藏本文

【简介】感谢网友“硕鼠”参与投稿,以下是小编整理的Android 学习笔记之 个人认为最简单的查看Android源码方案(共4篇),欢迎阅读分享,希望对您有所帮助。

篇1:Android 学习笔记之 个人认为最简单的查看Android源码方案

相信很多人都会疑惑如何使用Eclipse ADT查看源码?

下面我们将介绍 如何查看Android源码,

Android 学习笔记之 个人认为最简单的查看Android源码方案

本文有如下优点:

1.不用费心去找Android源码地址:一个字烦,网上的东西杂七杂八的。。。

2.不用担心过程难,这个就三步。。

工具:ADT

第一步:找到你ADT根目录,打开SDK Manager.exe

篇2:Android学习笔记之Theme主题的修改设置

(1)布局文件

(2)在values中新建xml文件

<?xml version=“1.0” encoding=“utf-8”?>fill_parentwrap_contentmonospace#00FF0020sp#00FF00wrap_contentwrap_content48dp148dp#ACBDEC#b0b0ff@color/custom_theme_color@color/custom_theme_color

(3)如果要修改Android默认的主题需要在清单文件中修改,下图圈出的位置就是需要修改的地方

(4)其他问阿金都可以默认无需修改!

篇3:Android学习笔记之:对Android图像色调饱和度亮度处

首先也简单介绍下图像的RGBA模型,R指红色(Red),G指绿色(Green),B指蓝色(Blue)及A指透明度(Alpha),由这四种元素搭配组合成了各种各样的颜色,

处理工具类及方法:

public class ImageTools {

/**

* 对图片进行处理

* @description:

* @date -8-12 下午8:45:05

*/

public static Bitmap getColorImage(Bitmap bitmap, float sx, float bhd, float ld) {// 参数分别是色相,饱和度和亮度

Bitmap bmp = bitmap.createBitmap(bitmap.getWidth, bitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bmp);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

ColorMatrix sxMatrix = new ColorMatrix();// 设置色调

sxMatrix.setRotate(0, sx);

sxMatrix.setRotate(1, sx);

sxMatrix.setRotate(2, sx);

ColorMatrix bhdMatrix = new ColorMatrix();// 设置饱和度

bhdMatrix.setSaturation(bhd);

ColorMatrix ldMatrix = new ColorMatrix();// 设置亮度

ldMatrix.setScale(ld, ld, ld, 1);

ColorMatrix mixMatrix = new ColorMatrix();// 设置整体效果

mixMatrix.postConcat(sxMatrix);

mixMatrix.postConcat(bhdMatrix);

mixMatrix.postConcat(ldMatrix);

paint.setColorFilter(new ColorMatrixColorFilter(mixMatrix));// 用颜色过滤器过滤

canvas.drawBitmap(bmp, 0, 0, paint);// 重新画图

return bmp;

}

}

在Activity中选择要处理的ImageView及对应的Bitmap,调用工具类中方法即可:

private ImageView colorIv;

private SeekBar sxBar, bhdBar, ldBar;

private static int MIN_COLOR = 100;

private static int MAX_COLOR = 255;

private float sx, bhd, ld;

private Bitmap bmp;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.color_main);

initViews();

}

private void initViews() {

bmp=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

colorIv = (ImageView) findViewById(R.id.color_iv);

colorIv.setImageBitmap(bmp);

sxBar = (SeekBar) findViewById(R.id.sx_seekbar);

bhdBar = (SeekBar) findViewById(R.id.bhd_seekbar);

ldBar = (SeekBar) findViewById(R.id.ld_seekbar);

sxBar.setOnSeekBarChangeListener(this);

sxBar.setMax(MAX_COLOR);// 设置最大值

sxBar.setProgress(MIN_COLOR);// 设置初始值(当前值)

bhdBar.setOnSeekBarChangeListener(this);

bhdBar.setMax(MAX_COLOR);

bhdBar.setProgress(MIN_COLOR);

ldBar.setOnSeekBarChangeListener(this);

ldBar.setMax(MAX_COLOR);

ldBar.setProgress(MIN_COLOR);

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

switch (seekBar.getId()) {

case R.id.sx_seekbar:

sx = (progress - MIN_COLOR) * 1.0f / MIN_COLOR * 180;

break;

case R.id.bhd_seekbar:

bhd = progress * 1.0f / MIN_COLOR;

break;

case R.id.ld_seekbar:

ld = progress * 1.0f / MIN_COLOR;

break;

}

colorIv.setImageBitmap(ImageTools.getColorImage(bmp, sx, bhd, ld));

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

xml布局文件:

xmlns:tools=schemas.android.com/tools

android:layout_width=match_parent

android:layout_height=match_parent >

android:id=@+id/color_iv

android:layout_width=300dp

android:layout_height=300dp

android:layout_centerHorizontal=true

android:layout_marginBottom=15dp

android:layout_marginTop=15dp />

android:id=@+id/sx_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/color_iv

/>

android:id=@+id/bhd_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/sx_seekbar

android:layout_marginTop=10dp />

android:id=@+id/ld_seekbar

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/bhd_seekbar

android:layout_marginTop=10dp />

篇4:Android异步加载学习笔记之四:利用缓存优化网络加载

如果不做任何处理,直接用网络加载图片在网速快的情况下可能没什么不好的感觉,但是如果使用移动流量或是网络不好的时候,问题就来了,要么用户会抱怨流量使用太多,要么抱怨图片加载太慢,如论从哪个角度出发,都不是好的体验!要提高用户体验,我们就要使用缓存,今天学习是是Lru缓存。

Lru(Least Recently Used)近期最少使用算法,即是在一定条件下LRU缓存是把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高应用的效率及用户体验度。Andorid本身提供了LruCache类来实现这个缓存算法 。

在ImageLoader中利用LruCache缓存:

public class ImageLoader {

private LruCachemCaches;// 创建LruCache对象

private ImageView mImageView;

private ListView listView;

private SetmTask;

@SuppressLint(NewApi)

public ImageLoader(ListView listView) {

this.listView = listView;

mTask = new HashSet();

int maxMemory = (int) Runtime.getRuntime().maxMemory();// 获取最大可用内存

int cacheSize = maxMemory / 8;// 设置缓存数据的最大占用内存量为最大值1/8

mCaches = new LruCache(cacheSize) {

@Override

protected int sizeOf(String key, Bitmap value) {

return value.getByteCount();// 每次存入缓存的时候调用,返回bitmap的大小

}

};

}

@SuppressLint(NewApi)

/**

* 增加缓存数据,增加前判断数据是否存在

* @description:

* @author ldm

* @date 2015-8-11 下午7:51:04

*/

public void setLruCaches(String url, Bitmap bitmap) {

if (getLruCaches(url) == null) {// 如果缓存中不存在url对应的Bitmap,则把bitmap加入mCaches

mCaches.put(url, bitmap);

}

}

/**

* 从缓存中获取数据

* @description:

* @author ldm

* @date 2015-8-11 下午7:51:22

*/

@SuppressLint(NewApi)

public Bitmap getLruCaches(String url) {

return mCaches.get(url);// 通过url获取缓存中对应的bitmap

}

/**

*从url中获取到Bitmap

* @description:

* @author ldm

* @date 2015-8-11 下午1:55:12

*/

public Bitmap getBitmapByUrl(String urlStr) {

Bitmap bitmap = null;

InputStream is = null;

try {

URL url = new URL(urlStr);

HttpURLConnection con = (HttpURLConnection) url.openConnection();

is = new BufferedInputStream(con.getInputStream());

bitmap = BitmapFactory.decodeStream(is);

con.disconnect();

return bitmap;

}

catch (Exception e) {

e.printStackTrace();

}

finally {

try {

is.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

return null;

}

public void loadImgByAsyncTask(ImageView img, String url) {

mImageView = img;

// 从缓存中取出图片

Bitmap bitmap = getLruCaches(url);

if (bitmap == null) {// 如果能在中无图片,则就从网络下载

mImageView.setImageResource(R.drawable.ic_launcher);//设置默认图片

new ImageAsyncTask(url).execute(url);

}

else {// 缓存中有图片,则直接显示出来

mImageView.setImageBitmap(bitmap);

}

}

private class ImageAsyncTask extends AsyncTask{

private ImageView imageView;

private String mUrl;

public ImageAsyncTask(String mUrl) {

this.mUrl = mUrl;

}

@Override

protected Bitmap doInBackground(String... params) {

Bitmap bitmap = getBitmapByUrl(params[0]);// 获取图片

if (bitmap != null) {

setLruCaches(params[0], bitmap);

}

return getBitmapByUrl(params[0]);

}

@Override

protected void onPostExecute(Bitmap result) {

ImageView img = (ImageView) listView.findViewWithTag(mUrl);

if (img != null && result != null) {

imageView.setImageBitmap(result);

}

mTask.remove(this);

}

}

public void setImageView(int start, int end) {

for (int i = start; i < end; i++) {

String url = DataAdapter.URLS[i];

Bitmap bitmap = getLruCaches(url);

if (bitmap == null) {// 如果能在中无图片,则就从网络下载

ImageAsyncTask task = new ImageAsyncTask(url);

task.execute(url);

mTask.add(task);

}

else {// 缓存中有图片,则直接显示出来

ImageView img = (ImageView) listView.findViewWithTag(url);

img.setImageBitmap(bitmap);

}

}

}

public void stopAllTask(){

if(mTask.size()>0){

for (ImageAsyncTask task : mTask) {

task.cancel(false);

}

}

}

}

对应ListView的数据适配器DataAdapter:

public class DataAdapter extends BaseAdapter implements OnScrollListener {

private Context mContext;

private Listlist;

private ImageLoader mImageLoader;

private int mSart;

private int mEnd;

public static String[] URLS;

private ListView listView;

private boolean isFirst;//是否是第一次进入

public DataAdapter(Context mContext, Listlist, ListView listView) {

this.listView = listView;

this.mContext = mContext;

this.list = list;

mImageLoader = new ImageLoader(listView);

URLS = new String[list.size()];

for (int i = 0; i < list.size(); i++) {

URLS[i] = list.get(i).getImgUrl();

}

isFirst=true;

listView.setOnScrollListener(this);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size();

}

@Override

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return list.get(arg0);

}

@Override

public long getItemId(int arg0) {

// TODO Auto-generated method stub

return arg0;

}

@Override

public View getView(int arg0, View view, ViewGroup arg2) {

ViewHolder holder = null;

if (view == null) {

holder = new ViewHolder();

view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);

holder.iv = (ImageView) view.findViewById(R.id.item_iv);

holder.titleTv = (TextView) view.findViewById(R.id.item_title);

holder.contentTv = (TextView) view.findViewById(R.id.item_content);

view.setTag(holder);

}

else {

holder = (ViewHolder) view.getTag();

}

holder.titleTv.setText(list.get(arg0).getTitle());

holder.contentTv.setText(list.get(arg0).getContent());

holder.iv.setTag(list.get(arg0).getImgUrl());// 为ImageView设置tag

// new ImageLoader().loaderImageThread(holder.iv, list.get(arg0).getImgUrl());//用线程加载图片

mImageLoader.loadImgByAsyncTask(holder.iv, list.get(arg0).getImgUrl());

return view;

}

/***

* ListView在流动过程中调用

*/

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

mSart = firstVisibleItem;// 可见第一个item

mEnd = firstVisibleItem + visibleItemCount;// 可见的最后一个item

if(isFirst&&visibleItemCount>0){//第一次加载数据时数据处理

mImageLoader.setImageView(mSart, mEnd);

isFirst=false;

}

}

/***

* ListView在流动状态变化时调用

*/

@Overridewww.2cto.com

public void onScrollStateChanged(AbsListView view, int scrollState) {

if (scrollState == SCROLL_STATE_IDLE) {// 流动停止,此时加载可见项数据

mImageLoader.setImageView(mSart, mEnd);

}

else {// 停止加载数据

mImageLoader.stopAllTask();

}

}

class ViewHolder {

TextView titleTv;

TextView contentTv;

ImageView iv;

}

}

相关专题 最简单学习笔记