仿抖音短视频APP源码,实现简单的换头像并保存

简介: 仿抖音短视频APP源码,实现简单的换头像并保存
public class My_info extends AppCompatActivity implements View.OnClickListener {
private static final int CHOOSE_PHOTO=2;
private CircleImageView image;//一种用于图片圆形化的控件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_info);
    image=(CircleImageView)findViewById(R.id.p_pic);
       if(readPac()!=null){        
              image.setImageBitmap(readPac());//如果头像修改过了,内存中已经新的头像图片。
        }
    @Override
    public void onClick(View v){
        switch (v.getId()){
             case R.id.alter:        //点击修改头像事件
             /
                if(ContextCompat.checkSelfPermission(My_info.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.
                PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(My_info.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
                    //以上是访问图库的运行时权限/
                }else
                {
                    open();//打开图库
                }
                break;
            default: break;
        }
    }
    @Override
     //这里是对用户是否同意访问图库的处理
    public void onRequestPermissionsResult(int requestCode,String[] permissions,int [] grantResults){              
        switch (requestCode){
            case 1:
                if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    open();
                }else{
                    Toast.makeText(My_info.this,"您拒绝了权限",Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }
    //打开图库
    private void open(){
        Intent intent=new Intent("android.intent.action.GET_CONTENT");
        intent.setType("image/*");
        startActivityForResult(intent,CHOOSE_PHOTO);
    }

//
    @Override
    protected void onActivityResult(int requestCode,int reultCode,Intent data){
        switch (requestCode){
            case CHOOSE_PHOTO:
                if(reultCode==RESULT_OK){
                    handle(data);
                }
                break;
        }
    }
    private void handle(Intent data){
        String imagePath=null;
        Uri uri=data.getData();
        if(DocumentsContract.isDocumentUri(this,uri)){
            String docId=DocumentsContract.getDocumentId(uri);
       /     if("com.android.providers.media.documents".equals(uri.getAuthority())){
                String id=docId.split(":")[1];
                String selection= MediaStore.Images.Media._ID+"="+id;
                imagePath=getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selection);

            }else if("com.android.providers.dowmloads.documents".equals(uri.getAuthority())){
                Uri contentUri= ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),Long.valueOf(docId));
                imagePath=getImagePath(contentUri,null);

            }else if("content".equalsIgnoreCase(uri.getScheme())){
                imagePath=getImagePath(uri,null);
            }else if("file".equalsIgnoreCase(uri.getScheme())){
                imagePath=uri.getPath();
           }
            displayImage(imagePath);

        }

    }
    private String getImagePath(Uri uri,String selection){
        String path=null;
        Cursor cursor=getContentResolver().query(uri,null,selection,null,null);
        if(cursor!=null){
            if(cursor.moveToFirst()){
                path=cursor.getString(cursor.getColumnIndex(MediaStore.Ima//ges.Media.DATA));
            }
            cursor.close();
        }
        return path;
    }

    private void displayImage(Str/ing imagePath){
        if(imagePath!=null){
            Bitmap bitmap= BitmapFactory.decodeFile(imagePath);
            image.setImageBitmap(bitmap);
            Toast.makeText(My_info.this,"获取图片成功",Toast.LENGTH_SHORT).show();
            savePac(bitmap);

        }else {
            Toast.makeText(My_info.this,"获取图片失败",Toast.LENGTH_SHORT).show();
        }
    }

//以上获取图片的绝对路径再获取bitmap实例过程来自《第一行代码 第2版》P299//
//
//
//
    private void savePac(Bitmap bitmap){//保存图片
        String TargetPath=My_info.this.getFilesDir().toString()+File.separator+"imagic";//getFilesDir()方法用于获取/data/data//files目录
      File file=new File(TargetPath,"pac.jpg");
      file.delete();
      if(!file.exists()){
          file.getParentFile().mkdirs();
      }
      try{
          FileOutputStream fileOutputStrea=new FileOutputStream(file);
          bitmap.compress(Bitmap.CompressFormat.JPEG,80,fileOutputStream);
          fileOutputStream.flush();
          fileOutputStream.close();
      }catch (Exception e){
          Log.d("cnm", e.toString());
      }
    }
    private Bitmap readPac(){//读取图片
       String  savePath=My_info.this.getFilesDir().toString()+File.separator+"imagic"+File.separator+"pac.jpg";
        Bitmap bitmap = null;
        try{
                bitmap = BitmapFactory.decodeFile(savePath);
        } catch (Exception e) {}
        return bitmap;

    }
}
目录
相关文章
|
1月前
|
JSON 搜索推荐 机器人
直播间自动发言机器人,抖音快手小红书哔哩哔哩机器人, 自动评论app机器人打字弹幕脚本
多平台支持:整合抖音、哔哩哔哩等平台的自动化操作 智能评论生成:结合视频内容动态生成个性化评论
|
12天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
1月前
|
Android开发 Python
自动养手机权重脚本,抖音看广告刷金币脚本插件, 抖音自动养号脚本app
采用uiautomator2实现Android设备控制,比纯ADB命令更稳定 随机化操作参数包括:观看时长
|
2月前
|
自然语言处理 API
tiktok养号脚本, 抖音自动养号脚本app,批量起号插件脚本
该养号系统包含三大核心模块:主控程序实现自动化操作流程,内容生成器创建自然语言内容
|
1月前
|
存储 Java PHP
轻量化短视频电商直播带货APP源码全解析:核心功能与设计流程​
在电商直播热潮下,开发专属直播带货APP成为抢占市场关键。本文详解原生开发轻量化APP的核心功能与全流程设计,涵盖用户登录、商品浏览、直播互动、购物车、订单及售后功能,并介绍安卓端Java、苹果端Object-C、后台PHP的技术实现,助力打造高效优质的直播电商平台。
|
2月前
|
网络协议 JavaScript Linux
抖音改ip归属地软件APP有吗?
1. 网络代理技术原理 # 示例:Python requests库通
|
2月前
|
定位技术 Android开发 数据安全/隐私保护
抖音虚拟位置软件, 修改定位位置app,抖音虚拟位置修改
这些代码展示了如何模拟GPS位置变化和Android设备上的虚拟定位功能。第一个模块模拟了城市间的移动轨迹
|
2月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录
|
2月前
|
小程序 Java 关系型数据库
圈子系统公众号app小程序系统源码圈子系统带即时通讯 多级圈子系统源码 兴趣小组系统开源 私密圈子系统代码 会员制社区系统
本圈子系统解决方案提供即时通讯、多级圈子、兴趣小组、私密社区及会员制管理功能。支持开源与商业方案,推荐ThinkSNS+、EasyClub及OpenFire等系统,并提供前后端技术选型建议,助力快速搭建社交平台。
135 0
不封号的外卖抢单神器,美团抢单辅助器app,autojs版本源码
这个代码提供了基础框架,包含主循环、订单检测和点击功能。实际使用时需要根据美团骑手AP