android 仿微信朋友圈中怎么实现仿手机QQ发表说说添加照片的功能

"说说图片发表工具"的糗事
你可能感兴趣:
糗事百科为大家收集了很多的说说图片发表工具的糗事,各种关于说说图片发表工具的爆笑经历、尴尬时刻和开心视频,想持续关注说说图片发表工具的糗事就收藏本页吧.Android仿微信选择图片和拍照功能_网页漂亮网
您的位置: >
Android仿微信选择图片和拍照功能
字号:[ & & & & & &
本文实例为大家分享了 Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下
1.Android6.0系统,对于权限的使用都是需要申请,选择图片和拍照需要申请Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE这两个权限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) this,
new String[] { Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_STORAGE_READ_ACCESS_PERMISSION);
2.通过图片选择器MultiImageSelector来管理: 选择模式、最大选择数量、是否启动相机等功能。
3.点击图片选择按钮跳转到MultiImageSelectorActivity类,其布局如下:(一个Toobar + 一个FrameLayout)
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
xmlns:app=&/apk/res-auto&
android:orientation=&vertical&
android:background=&#181819&
android:layout_width=&match_parent&
android:layout_height=&match_parent&&
&android.support.v7.widget.Toolbar
android:id=&@+id/toolbar&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:background=&@color/mis_actionbar_color&
app:theme=&@style/ThemeOverlay.AppCompat.Dark.ActionBar&
android:minHeight=&?android:attr/actionBarSize&&
android:id=&@+id/commit&
android:background=&@drawable/mis_action_btn&
android:minHeight=&1dp&
android:minWidth=&1dp&
android:layout_marginRight=&16dp&
android:paddingLeft=&10dp&
android:paddingRight=&10dp&
android:paddingTop=&5dp&
android:paddingBottom=&5dp&
android:textColor=&@color/mis_default_text_color&
android:textSize=&14sp&
android:layout_gravity=&right&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content& /&
&/android.support.v7.widget.Toolbar&
&FrameLayout
android:id=&@+id/image_grid&
android:layout_width=&match_parent&
android:layout_height=&match_parent& /&
&/LinearLayout&
4.调用如下方法填充展示图片的fragment(MultiImageSelectorFragment)。
getSupportFragmentManager().beginTransaction()
.add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))
.commit();
5.MultiImageSelectorFragment布局用gridview显示从相册获取的图片
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:background=&@android:color/black&
android:layout_width=&match_parent&
android:layout_height=&match_parent&&
android:id=&@+id/grid&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:horizontalSpacing=&@dimen/mis_space_size&
android:verticalSpacing=&@dimen/mis_space_size&
android:paddingBottom=&?android:attr/actionBarSize&
android:clipToPadding=&false&
android:numColumns=&3&/&
&RelativeLayout
android:clickable=&true&
android:id=&@+id/footer&
android:background=&#cc000000&
android:layout_alignParentBottom=&true&
android:layout_width=&match_parent&
android:layout_height=&?android:attr/actionBarSize&&
android:id=&@+id/category_btn&
android:paddingLeft=&16dp&
android:paddingRight=&16dp&
android:layout_centerVertical=&true&
android:textColor=&@color/mis_folder_text_color&
tools:text=&所有图片&
android:textSize=&16sp&
android:gravity=&center_vertical&
android:drawableRight=&@drawable/mis_text_indicator&
android:drawablePadding=&5dp&
android:background=&@null&
android:singleLine=&true&
android:ellipsize=&end&
android:layout_width=&wrap_content&
android:layout_height=&match_parent& /&
&/RelativeLayout&
&/RelativeLayout&
6调用android.support.v4.app.LoaderManager.class类里面的LoaderCallbacks方法,等加载完成后给mImageAdapter设置数据。
mImageAdapter.setData(images);
7.当允许拍照的时候,显示拍照按钮,调用系统相机功能。
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView&?& adapterView, View view, int i, long l) {
if (mImageAdapter.isShowCamera()) {
if (i == 0) {
showCameraAction();
Image image = (Image) adapterView.getAdapter().getItem(i);
selectImageFromGrid(image, mode);
Image image = (Image) adapterView.getAdapter().getItem(i);
selectImageFromGrid(image, mode);
调用相机功能
* Open camera
private void showCameraAction() {
if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
getString(R.string.mis_permission_rationale_write_storage),
REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
mTmpFile = FileUtils.createTmpFile(getActivity());
} catch (IOException e) {
e.printStackTrace();
if (mTmpFile != null && mTmpFile.exists()) {
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));
startActivityForResult(intent, REQUEST_CAMERA);
Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), R.string.mis_msg_no_camera, Toast.LENGTH_SHORT).show();
* notify callback
* @param image image data
private void selectImageFromGrid(Image image, int mode) {
if(image != null) {
if(mode == MODE_MULTI) {
if (resultList.contains(image.path)) {
resultList.remove(image.path);
if (mCallback != null) {
mCallback.onImageUnselected(image.path);
if(selectImageCount() == resultList.size()){
Toast.makeText(getActivity(), R.string.mis_msg_amount_limit, Toast.LENGTH_SHORT).show();
resultList.add(image.path);
if (mCallback != null) {
mCallback.onImageSelected(image.path);
mImageAdapter.select(image);
}else if(mode == MODE_SINGLE){
if(mCallback != null){
mCallback.onSingleImageSelected(image.path);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持网页漂亮网。
本文移动端链接:
相关阅读:
本站已经安全运行:
创建百年品牌Android 如何实现分享图片功能
对于图片,如何实现分享功能,请参阅下面的代码:
// 分享照片&
public void SharePhoto(String photoUri,final Activity activity) {&
&&& Intent shareIntent = new Intent(Intent.ACTION_SEND);&
&&& File file = new File(photoUri);&
&&& shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));&
&&& shareIntent.setType(&image/jpeg&);&
&&& StartActivity(Intent.createChooser(shareIntent, activity.getTitle()));&
摘自 心灵净土2020人阅读
Android开发(46)
代码很简单,主要就是几个动画而已,图标什么的就随便找了几个,效果图:
1.点击右上角按钮,菜单从顶部下拉弹出,同时背景变暗;
2.再次点击右上角按钮,点击返回键,或者点击空白区域(也就是变暗的部分),菜单向上收回;
3.点击菜单上的按钮响应事件,同时菜单收回(效果同2)
重要说明:动画结束后必须clearAnimation,否则隐藏状态的view依然能响应点击事件
public class MainActivity extends Activity {
//添加数据按钮
private ImageView addDataIv;
//下拉功能菜单
private LinearLayout dropDownV
private View bgV
//当前下拉菜单是否为显示状态
private boolean showItems =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addDataIv = (ImageView) findViewById(R.id.main_newData);
dropDownView = (LinearLayout) findViewById(R.id.dropDownView);
bgView = findViewById(R.id.main_bg);
addDataIv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!showItems) {
showView();
dismissView();
//点击空白隐藏弹出框
bgView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (showItems) {
dismissView();
//下拉功能菜单上按钮的点击事件
View.OnClickListener l = new OnClickImpl();
findViewById(R.id.dropDown_item1).setOnClickListener(l);
findViewById(R.id.dropDown_item2).setOnClickListener(l);
findViewById(R.id.dropDown_item3).setOnClickListener(l);
findViewById(R.id.dropDown_item4).setOnClickListener(l);
//显示下拉菜单
private void showView() {
showItems =
addDataIv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate_open));
dropDownView.startAnimation(AnimationUtils.loadAnimation(this, R.anim.drop_down));
dropDownView.setVisibility(View.VISIBLE);
bgView.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_dark));
bgView.setVisibility(View.VISIBLE);
//隐藏下拉菜单
private void dismissView() {
showItems =
addDataIv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate_close));
Animation dropUpAnim = AnimationUtils.loadAnimation(this, R.anim.drop_up);
dropUpAnim.setAnimationListener(new AnimListenerImpl(dropDownView));
dropDownView.startAnimation(dropUpAnim);
dropDownView.setVisibility(View.INVISIBLE);
Animation fadeLightAnim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_light);
fadeLightAnim.setAnimationListener(new AnimListenerImpl(bgView));
bgView.startAnimation(fadeLightAnim);
bgView.setVisibility(View.INVISIBLE);
//点击返回键时,如果下拉菜单是显示状态,则隐藏它
public void onBackPressed() {
if (showItems) {
dismissView();
super.onBackPressed();
private class OnClickImpl implements View.OnClickListener {
public void onClick(View v) {
if (!showItems) {
int id = v.getId();
switch (id) {
case R.id.dropDown_item1:
Toast.makeText(MainActivity.this, &item1 onClick&, Toast.LENGTH_SHORT).show();
dismissView();
case R.id.dropDown_item2:
Toast.makeText(MainActivity.this, &item2 onClick&, Toast.LENGTH_SHORT).show();
dismissView();
case R.id.dropDown_item3:
Toast.makeText(MainActivity.this, &item3 onClick&, Toast.LENGTH_SHORT).show();
dismissView();
case R.id.dropDown_item4:
Toast.makeText(MainActivity.this, &item4 onClick&, Toast.LENGTH_SHORT).show();
dismissView();
//动画结束后必须clearAnimation,否则隐藏状态的view依然能响应点击事件
private class AnimListenerImpl implements Animation.AnimationListener {
public AnimListenerImpl(View view) {
this.view =
public void onAnimationStart(Animation animation) {
public void onAnimationEnd(Animation animation) {
view.clearAnimation();
public void onAnimationRepeat(Animation animation) {
====== ======
源码下载(免积分):
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:235717次
积分:3593
积分:3593
排名:第9157名
原创:115篇
评论:118条
(1)(2)(4)(2)(1)(1)(2)(1)(13)(6)(1)(5)(12)(7)(9)(24)(6)(6)(6)(3)(2)(1)

我要回帖

更多关于 android 仿qq发表说说 的文章

 

随机推荐