在原有的基础上添加可选择手机任意一张图片。

1、在MainActivity.java代码中添加多了一个按钮可实现选择手机照片确认返回。在onActivityResult里面添加

 gamePintuLayout.bitmap = bitmap;gamePintuLayout.initBitmap();gamePintuLayout.initItem();

否则,选择后将不会出现图片。

完整代码:

package wind.com.puzzle;import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.hardware.display.DisplayManager;
import android.net.Uri;
import android.os.Handler;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {private GamePintuLayout gamePintuLayout;private TextView textView;private Button button;static Bitmap bitmap;static Bitmap bitmap1;static boolean flag2 = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);gamePintuLayout = (GamePintuLayout) findViewById(R.id.id_gameview);textView = (TextView)findViewById(R.id.text);button = (Button)findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();/* 开启Pictures画面Type设定为image */intent.setType("image/*");/* 使用Intent.ACTION_GET_CONTENT这个Action */intent.setAction(Intent.ACTION_GET_CONTENT);/* 取得相片后返回本画面 */startActivityForResult(intent, 1);}});//每1000毫秒更新一次步数handler.removeCallbacks(runnable);handler.postDelayed(runnable, 1000);}private Handler handler = new Handler();private Runnable runnable = new Runnable() {public void run () {//ImageView image = (ImageView) findViewById(R.id.image);/* 将Bitmap设定到ImageView *///image.setImageBitmap(bitmap);textView.setText("第"+ GamePintuLayout.numguan+"关,您用了 "+GamePintuLayout.number + " 步");handler.postDelayed(this, 1000);}};@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == RESULT_OK) {Uri uri = data.getData();ContentResolver cr = this.getContentResolver();try {// bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));bitmap = MediaStore.Images.Media.getBitmap(cr, uri);gamePintuLayout.bitmap = bitmap;gamePintuLayout.initBitmap();gamePintuLayout.initItem();/* 将Bitmap设定到ImageView */} catch (Exception e) {Log.e("Exception", e.getMessage(), e);}}super.onActivityResult(requestCode, resultCode, data);}
}

2、在GamePintuLayout.java 中的initBitmap中注释掉

// if (bitmap == null){//      bitmap = MainActivity.bitmap;//      bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ac);// }

3、在onMeasure中将

if (!flag){Log.d("nsc", "bitmap");numguan = 1;initBitmap();initItem();}

修改成:

        if (!flag && bitmap!=null){Log.d("nsc", "bitmap");numguan = 1;initBitmap();initItem();}

否则将会报空指针错误。

4、在权限文件中添加,否则会报oom内存溢出。

android:largeHeap="true"

其他跟之前的基本一样,详细可看上一篇(android 拼图游戏)。

代码下载地址:点击打开链接

android 拼图游戏2(可从手机选择任意一张图片)相关推荐

  1. Android拼图游戏设计(包括游戏算法及数据库设计)

    拼图游戏的设计可以分为如下几个部分:① UI设计:② 事件监听,事件处理:③ 游戏逻辑. 用户首先进入登陆注册界面,在登录注册模块可以实现注册登录功能,同时实现修改密码和注销用户的功能,这一功能模块需 ...

  2. 基于Java实现的Android拼图游戏设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/85638665 基于Java实现的Android拼图游戏设计 游戏效果 一.Android ...

  3. Android 拼图游戏知识点小结

    前几天在 慕课网 学习了 Android 拼图游戏小项目.对于我这种初学者来说,想完全搞懂,还是有不少困难的,但通过此项目还是学到了挺多东西.http://blog.csdn.net/lmj62356 ...

  4. Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!

    Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 ...

  5. Android拼图游戏

    效果如下 游戏的设计 首先我们分析下如何设计这款游戏: 1.我们需要一个容器,可以放这些图片的块块,为了方便,我们准备使用RelativeLayout配合addRule实现 2.每个图片的块块,我们准 ...

  6. android移动拼图小游戏的图片,利用ViewDragHelper轻松实现Android拼图游戏

    前言 最近一段时间看了一些介绍ViewDragHelper的博客,感觉这是一个处理手势滑动的神器,看完以后就想做点东西练练手,于是就做了这个Android拼图小游戏. 先上个效果图 demo.gif ...

  7. android拼图游戏报告,拼图游戏报告分析报告.doc

    南京邮电大学计算机学院 2014/2015学年第1学期 <JAVA语言>课程报告 课题代号(单选)□课题1 □课题2 □课题3 课题名称: 拼图游戏 小组成员人数(单选)□1人 □2人 □ ...

  8. android 拼图游戏

    1.首先,我们准备实现能够把一张图片,切成n*n份,放在指定的位置: 我们只需要设置n这个数字,然后根据布局的宽或者高其中的小值,除以n,减去一些边距就可以得到我们ImageView的宽和高了~~ p ...

  9. android 拼图游戏无线分裂版

    1. 2. //使用回调接口,首先初始化pintuview并绑定,实现回调接口的方法mPintuLayout = (PintuLayout) findViewById(R.id.mpintu);mPi ...

最新文章

  1. 如何利用OpenCV寻找轮廓的中心?
  2. Docker file 搭建 Nginx镜像
  3. mysql事务未提交读_mysql事务之未提交读Read uncommitted(仅学习)
  4. Linux内核链表的移植与使用
  5. IOS-网络(大文件下载)
  6. javaone_JavaOne 2015 –又一年,又向前迈进了一步
  7. 左右滑动实现activity之间的跳转
  8. Android studio JNI jni实例
  9. 深挖Kubernetes存储为何如此难及其解决方案
  10. MFC开发IM-第二十八篇、acl 的编译与使用
  11. 微信Mac版可以发朋友圈了 还能浏览相册
  12. EditText焦点自动带出软键盘问题
  13. mysql source导入_读取MySQL数据库中的数据【Python数据分析百例连载】
  14. 登陆模板_曝北京国安克星将登陆中超,3年进84球,可成中超新政引援模板
  15. BlockingQueue使用详解以及测试代码
  16. MySqlNav(可视化工具)的安装
  17. java 压缩二进制流_在java中压缩二进制数据
  18. json的各种格式的转换
  19. delphi微信云支付,D7~XE10可用
  20. FreeBase介绍

热门文章

  1. UHF RFID 读卡实验
  2. 区块链为什么叫区块链_什么是区块链?
  3. 职高计算机应用项目教程教案,项目教学法在中职计算机教学中的具体应用
  4. 网站建设制作需要多少钱呢?费用是多少?
  5. tensorflow代码翻译成pytorch代码 -详细教程+案例
  6. 疫情之下春运人口回流“硬核”预测:往返这些超级网络节点城市有更大感染风险
  7. Greenplum 分布键 distribute hash分布和随机分布
  8. 华为p4支持鸿蒙功能吗_华为鸿蒙2.0系统支持的手机型号 华为鸿蒙2.0系统详解[多图]...
  9. iOS app图标和相关尺寸
  10. SpringBoot安全登录验证