android 拼图游戏2(可从手机选择任意一张图片)
在原有的基础上添加可选择手机任意一张图片。
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(可从手机选择任意一张图片)相关推荐
- Android拼图游戏设计(包括游戏算法及数据库设计)
拼图游戏的设计可以分为如下几个部分:① UI设计:② 事件监听,事件处理:③ 游戏逻辑. 用户首先进入登陆注册界面,在登录注册模块可以实现注册登录功能,同时实现修改密码和注销用户的功能,这一功能模块需 ...
- 基于Java实现的Android拼图游戏设计
资源下载地址:https://download.csdn.net/download/sheziqiong/85638665 基于Java实现的Android拼图游戏设计 游戏效果 一.Android ...
- Android 拼图游戏知识点小结
前几天在 慕课网 学习了 Android 拼图游戏小项目.对于我这种初学者来说,想完全搞懂,还是有不少困难的,但通过此项目还是学到了挺多东西.http://blog.csdn.net/lmj62356 ...
- Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!
Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 ...
- Android拼图游戏
效果如下 游戏的设计 首先我们分析下如何设计这款游戏: 1.我们需要一个容器,可以放这些图片的块块,为了方便,我们准备使用RelativeLayout配合addRule实现 2.每个图片的块块,我们准 ...
- android移动拼图小游戏的图片,利用ViewDragHelper轻松实现Android拼图游戏
前言 最近一段时间看了一些介绍ViewDragHelper的博客,感觉这是一个处理手势滑动的神器,看完以后就想做点东西练练手,于是就做了这个Android拼图小游戏. 先上个效果图 demo.gif ...
- android拼图游戏报告,拼图游戏报告分析报告.doc
南京邮电大学计算机学院 2014/2015学年第1学期 <JAVA语言>课程报告 课题代号(单选)□课题1 □课题2 □课题3 课题名称: 拼图游戏 小组成员人数(单选)□1人 □2人 □ ...
- android 拼图游戏
1.首先,我们准备实现能够把一张图片,切成n*n份,放在指定的位置: 我们只需要设置n这个数字,然后根据布局的宽或者高其中的小值,除以n,减去一些边距就可以得到我们ImageView的宽和高了~~ p ...
- android 拼图游戏无线分裂版
1. 2. //使用回调接口,首先初始化pintuview并绑定,实现回调接口的方法mPintuLayout = (PintuLayout) findViewById(R.id.mpintu);mPi ...
最新文章
- 如何利用OpenCV寻找轮廓的中心?
- Docker file 搭建 Nginx镜像
- mysql事务未提交读_mysql事务之未提交读Read uncommitted(仅学习)
- Linux内核链表的移植与使用
- IOS-网络(大文件下载)
- javaone_JavaOne 2015 –又一年,又向前迈进了一步
- 左右滑动实现activity之间的跳转
- Android studio JNI jni实例
- 深挖Kubernetes存储为何如此难及其解决方案
- MFC开发IM-第二十八篇、acl 的编译与使用
- 微信Mac版可以发朋友圈了 还能浏览相册
- EditText焦点自动带出软键盘问题
- mysql source导入_读取MySQL数据库中的数据【Python数据分析百例连载】
- 登陆模板_曝北京国安克星将登陆中超,3年进84球,可成中超新政引援模板
- BlockingQueue使用详解以及测试代码
- MySqlNav(可视化工具)的安装
- java 压缩二进制流_在java中压缩二进制数据
- json的各种格式的转换
- delphi微信云支付,D7~XE10可用
- FreeBase介绍
热门文章
- UHF RFID 读卡实验
- 区块链为什么叫区块链_什么是区块链?
- 职高计算机应用项目教程教案,项目教学法在中职计算机教学中的具体应用
- 网站建设制作需要多少钱呢?费用是多少?
- tensorflow代码翻译成pytorch代码 -详细教程+案例
- 疫情之下春运人口回流“硬核”预测:往返这些超级网络节点城市有更大感染风险
- Greenplum 分布键 distribute hash分布和随机分布
- 华为p4支持鸿蒙功能吗_华为鸿蒙2.0系统支持的手机型号 华为鸿蒙2.0系统详解[多图]...
- iOS app图标和相关尺寸
- SpringBoot安全登录验证