自定义控件
- 一分钟实现贴纸功能
- 一分钟实现TextView高亮
- 一分钟实现新手引导页
- 一分钟实现ViewPager卡片
- 一分钟实现加载对话框
- 一分钟实现轮播图
- 一分钟实现GridView拖拽
- 一分钟实现底部导航栏
- 一分钟实现底部FragmentTabhost
- 一分钟实现多张图片选择
- 一分钟实现仿美拍直播的点赞动画
- 一分钟实现高仿今日头条视频列表
- 一分钟实现购物车加减控件
- 一分钟实现省市县三级联动
- 一分钟实现二维码生成和扫描
- 一分钟实现沉浸式状态栏
- 一分钟实现图片裁剪
- 一分钟实现视频弹幕
- 一分钟实现图片缩放
- 一分钟实现旋转选择器
- 一分钟实现ofo小黄车的引导界面
- 一分钟实现自定义ImageView外貌
- 一分钟实现向左拖拽跳转详情页
- 一分钟实现QQ首页动画特效
- 一分钟实现ViewPager上下滑动
联网
工具
数据库
源码分析相关面试题
Activity相关面试题
- 保存Activity的状态
- 深刻剖析activity启动模式(一)
- 深刻剖析activity启动模式(二)
- 深刻剖析activity启动模式(三)
- Activity Task和Process之间的关系
- 源码分析service开启Activity抛异常?activity不会抛异常
- Activity优雅退出
- onCreate源码分析
Service相关面试题
与XMPP相关面试题
与性能优化相关面试题
与登录相关面试题
与开发相关面试题
- 迭代开发的时候如何向前兼容新旧接口
- 手把手教你如何解决as jar包冲突
- context的原理分析
- 解决ViewPager.setCurrentItem中间很多页面切换方案
- 字体适配
- 软键盘适配
- 机型适配,例如三星、小米、华为、魅族等
- CardView 设置水波纹效果
与人事相关面试题
开源项目:https://github.com/open-android/PhotoImageView
1.Gradle添加依赖 (推荐)
dependencies {
compile 'com.github.open-android:PhotoImageView:0.1.0'
}
2.xml添加
<com.itheima.library.PhotoView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:src="@drawable/bitmap1" />
3.java代码
PhotoView photoView = (PhotoView) findViewById(R.id.img);
// 启用图片缩放功能
photoView.enable();
// 禁用图片缩放功能 (默认为禁用,会跟普通的ImageView一样,缩放功能需手动调用enable()启用)
photoView.disenable();
// 获取图片信息
Info info = photoView.getInfo();
// 从普通的ImageView中获取Info
Info info = PhotoView.getImageViewInfo(ImageView);
高级用法
复制如下内容到java代码中
public class PhotoBrowse extends Activity {
int[] imgs = new int[]{R.mipmap.aaa, R.mipmap.bbb, R.mipmap.ccc, R.mipmap.ddd, R.mipmap.ic_launcher, R.mipmap.image003};
GridView gv;
View mParent;
View mBg;
PhotoView mPhotoView;
Info mInfo;
AlphaAnimation in = new AlphaAnimation(0, 1);
AlphaAnimation out = new AlphaAnimation(1, 0);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_photo_browse);
in.setDuration(300);
out.setDuration(300);
out.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mBg.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mParent = findViewById(R.id.parent);
mBg = findViewById(R.id.bg);
mPhotoView = (PhotoView) findViewById(R.id.img);
mPhotoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
gv = (GridView) findViewById(R.id.gv);
gv.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return imgs.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PhotoView p = new PhotoView(PhotoBrowse.this);
p.setLayoutParams(new AbsListView.LayoutParams((int) (getResources().getDisplayMetrics().density * 100), (int) (getResources().getDisplayMetrics().density * 100)));
p.setScaleType(ImageView.ScaleType.CENTER_CROP);
p.setImageResource(imgs[position]);
// 把PhotoView当普通的控件把触摸功能关掉
p.disenable();
return p;
}
});
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PhotoView p = (PhotoView) view;
mInfo = p.getInfo();
mPhotoView.setImageResource(imgs[position]);
mBg.startAnimation(in);
mBg.setVisibility(View.VISIBLE);
mParent.setVisibility(View.VISIBLE);;
mPhotoView.animaFrom(mInfo);
}
});
mPhotoView.enable();
mPhotoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBg.startAnimation(out);
mPhotoView.animaTo(mInfo, new Runnable() {
@Override
public void run() {
mParent.setVisibility(View.GONE);
}
});
}
});
}
@Override
public void onBackPressed() {
if (mParent.getVisibility() == View.VISIBLE) {
mBg.startAnimation(out);
mPhotoView.animaTo(mInfo, new Runnable() {
@Override
public void run() {
mParent.setVisibility(View.GONE);
}
});
} else {
super.onBackPressed();
}
}
}
欢迎关注微信公众号
微信公众号名称:Android干货程序员
网友评论