当前位置:  编程技术>移动开发
本页文章导读:
    ▪gallery加载大量图片时内存溢出的解决办法(三)        gallery加载大量图片时内存溢出的解决方法(三) 6、ImageAdapter public class ImageAdapter extends BaseAdapter {         private Context mContext;// 上下文         public ImageAdapter(Context c) {           .........
    ▪ 范例4-拼单词游戏        实例4---拼单词游戏   这个第四个实例,我只是单纯的把j2me的代码换成android的,所以屏幕的大小的适应性和好不好看,我都没有考虑。 下面给出第四个实例的MainView的代码 效果图:     packag.........
    ▪ SharedPreferences读写引见       SharedPreferences读写介绍 在Android中有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvider。SharedPreferences作为操作简单最简单的一种方式,被广泛用于保存应用的.........

[1]gallery加载大量图片时内存溢出的解决办法(三)
    来源: 互联网  发布时间: 2014-02-18
gallery加载大量图片时内存溢出的解决方法(三)

6、ImageAdapter

public class ImageAdapter extends BaseAdapter {

        private Context mContext;// 上下文

        public ImageAdapter(Context c) {

            this.mContext = c;

        }

        @Override

        public int getCount() {

            if (imageList != null) {

                return imageList.size();

            } else {

                return 0;

            }

        }

        @Override

        public Object getItem(int position) {

            if (imageList != null) {

                return imageList.get(position);

            }

            return position;// 获取图片在库中的位置

        }

        @Override

        public long getItemId(int position) {

            return position;// 获取图片在库中的位置

        }

        @Override

        public View getView(int position, View convertView, ViewGroup parent) {

            Log.i("Tag", position + "");

            ImageView imageView = new ImageView(mContext);

            imageView.setScaleType(ImageView.ScaleType.FIT_XY);

            imageView.setLayoutParams(new Gallery.LayoutParams(220, 247));

            if (imageList.get(position).getIsNull().equals(ISTRUE)) {

                imageView.setImageResource(R.drawable.scene_ic_loading_invert);

            } else {

                imageView.setImageBitmap(imageList.get(position).getImage());

            }

            return imageView;

        }

        public float getScale(boolean focused, int offset) {

            return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));

        }

    }

   

   

 

    7、查找图片是加载的进度条

    @Override

    protected Dialog onCreateDialog(int id) {

        if (id == 0) {

            ProgressDialog loadingDialog = new ProgressDialog(this);

            loadingDialog.setMessage("正在扫描中...,请稍候!");

            loadingDialog.setIndeterminate(true);

            loadingDialog.setCancelable(true);

            return loadingDialog;

        }

        return null;

    }

   

8、5、从sd卡里获取图片

    public  void getSD(String dir) {

        File f = new File(dir);

        File[] files = f.listFiles();

        if (files != null) {

            for (int i = 0; i < files.length; i++) {

                String[] s = new String[2];

                File file = files[i];

                if (file.isFile()) {

                    if (ImageManager.getImageFile(file.getPath())) {

                        System.out.println("file   " + String.valueOf(file));

                        s[0] = file.getPath();

                        s[1] = file.getName();

                        pathList.add(s);

                    }

                } else if(file.isDirectory()){

                    getSD(String.valueOf(file.getAbsolutePath()));

                }

            }

        }

    }


    
[2] 范例4-拼单词游戏
    来源: 互联网  发布时间: 2014-02-18
实例4---拼单词游戏

  这个第四个实例,我只是单纯的把j2me的代码换成android的,所以屏幕的大小的适应性和好不好看,我都没有考虑。

下面给出第四个实例的MainView的代码

效果图:



 

 

package com.wjh.demon_4;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;

public class MainView extends SurfaceView implements Callback,Runnable{
	int keyCode = 0;
	String keyAction = "";
	Thread gameThread = null;
	boolean isGame = true;
	SurfaceHolder holder = null;
	public char m_achWords[][] = 				//存储原始字符矩阵
		{	{'H',	'R',	'T',	'W',	'T'},
			{'E',	'I',	'H',	'O',	'H'},
			{'L',	'G',	'I',	'R',	'R'},
			{'L',	'H',	'N',	'L',	'E'},
			{'O',	'T',	'G',	'D',	'E'} 	};
	public int m_nCurLine	= 0;				//记录当前行
	public int m_anDis[] 	= { 0,1,2,3,4 };
	public boolean m_bGameOK = false;			//组合成功的标志
	public MainView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		setFocusable(true);
		getHolder().addCallback(this);
		holder = this.getHolder();
		
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(isGame)
		{
			input();
			logic();
			doDraw();
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
		}
		
	}
	//开始游戏主线程
	public void start()
	{
		if(gameThread == null)
		{
		gameThread = new Thread(this);
		gameThread.start();
		}
	}
	//停止游戏主线程
	public void stop()
	{
		isGame = false;
		if(gameThread != null)
		{
			try {
				gameThread.join();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	//输入判断
	public void input()
	{
		
	}
	//逻辑判断
	public void logic()
	{
		if( m_bGameOK )
			return;
		m_bGameOK = true;
		for( int n = 0; n < 5; n ++ ){
			if( m_anDis[n] != 0 ){
				m_bGameOK = false;
				break;
			}
		}
	}
	public void doDraw()
	{
		Canvas c = null;
		try
		{
		c = holder.lockCanvas();
		synchronized (holder) {
			paint(c);
		}
		}finally{
			if(c != null)
			{
			holder.unlockCanvasAndPost(c);
			}
		}
	}
	//画图
	public void paint(Canvas canvas)
	{
		Paint backGround = new Paint();
		backGround.setColor(Color.BLACK);
		//清屏
		canvas.drawRect(0, 0, getWidth(), getHeight(), backGround);
		//设置画笔颜色
		Paint cPaint = new Paint();

		
		//显示字符
		//realCol为所显示的字符在原始矩阵中的列数
		int realCol = 0;
		//row为行数,col为列数
		for( int row = 0; row < 5; row ++ ){
			if( row == m_nCurLine )		//当前行的字符用黄色显示
				cPaint.setColor(Color.YELLOW);
			else
				cPaint.setColor(Color.WHITE); //非当前行的字符用白色显示
			for( int col = 0; col < 5; col ++ ){
				//利用偏位数得到与当前位置对应的原始矩阵中的位置
				realCol = m_anDis[row] + col; 
				if( realCol > 4 )
					realCol = realCol - 5;
				canvas.drawText(""+m_achWords[row][realCol], 30 + col * 15, 30+row * 15, cPaint);
			}
		}
		cPaint.setColor(Color.WHITE);
		if( m_bGameOK )
			canvas.drawText("真棒,完全正确", 50, 120, cPaint);
		else
			canvas.drawText("左右移动字符,使纵向拼写正确", 40, 120, cPaint);
	}
	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		start();
		
	}
	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		stop();
		
	}
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if( m_bGameOK )
			return true;		//得到当前按键状态
		//如果按下方向键的上键,则调整当前行的位置
		if( keyCode == KeyEvent.KEYCODE_DPAD_UP )
			m_nCurLine --; 
		//如果按下方向键的下键,则调整当前行的位置
		if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN)
			m_nCurLine ++;
		//调整当前行的值,使它在0到4之间
		if( m_nCurLine < 0 )
			m_nCurLine += 5;
		if( m_nCurLine > 4) 
			m_nCurLine -= 5;
		//如果按下方向键的左键,则当前行的字符左移
		if( keyCode == KeyEvent.KEYCODE_DPAD_LEFT)
			m_anDis[m_nCurLine] ++;
		//如果按下方向键的右键,则当前行的字符右移
        if( keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)
        	m_anDis[m_nCurLine] --;
        
        if( m_anDis[m_nCurLine] < 0 )
        	m_anDis[m_nCurLine] += 5;
        if( m_anDis[m_nCurLine] > 4 )
        	m_anDis[m_nCurLine] -= 5;
        
		return super.onKeyDown(keyCode, event);
	}
}

 

 apk文件(将后缀改为apk):Demon_4.zip

源代码文件:Demon_4.rar


    
[3] SharedPreferences读写引见
    来源: 互联网  发布时间: 2014-02-18
SharedPreferences读写介绍

在Android中有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvider。SharedPreferences作为操作简单最简单的一种方式,被广泛用于保存应用的配置信息,这里介绍下SharedPreferences


SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型。一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用。 实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。


向SharedPreferences中写入数据

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
editor.commit(); //一定要记得提交

 

从SharedPreferences中读取数据

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
//或者使用 SharedPreferences settings = getPreferences(0);
boolean silent = settings.getBoolean("silentMode", false);

 

函数介绍:

1、android.content.Context.getSharedPreferences (String name, int mode)

返回preferences file 'name'的内容。对于一个name只有一个SharedPreferences,所以任何修改可以理解生效。
name为preferences file名
mode默认为0(MODE_PRIVATE)表示preferences file为应用私有,只有此应用可以访问
MODE_WORLD_READABLE表示所有其他程序有读权限
MODE_WORLD_WRITEABLE表示所有其他程序有写权限

2、android.app.Activity.getPreferences (int mode)
返回当前activity私有的SharedPreferences。相当于上面的getSharedPreferences(String, int) 方法name传入参数为当前activity的类名

 

 

3、android.preference.Preference.getSharedPreferences()

返回当前Preference可以访问的SharedPreferences

 

下篇文章介绍对于SharedPreferences如何在不同的activity中访问,以及如何直接访问任何可以访问的SharedPreferences。比如对于上面方法3存储的SharedPreferences如何在Activity中进行访问

 

参考:

http://www.cnblogs.com/jerrychoi/archive/2010/04/14/1712151.html

http://www.eoeandroid.com/sdk/api/reference/android/preference/Preference.html#getSharedPreferences()

http://www.eoeandroid.com/sdk/api/reference/android/content/Context.html#getSharedPreferences(java.lang.String, int)

http://www.eoeandroid.com/sdk/api/reference/android/app/Activity.html#getPreferences(int)

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3