精华内容
下载资源
问答
  • 安卓大作业

    2018-06-15 22:56:27
    基于Android的天气预报查询软件 1.可以罗列出全国所有的省、市、县。 2.可以查看全国任意城市的天气信息。 3.可以自由地切换城市,去查看其他城市的天气 4.提供手动更新以及后台自动更新天气的功能。 可以根据当前...
  • Android大作业

    2018-06-15 17:22:35
    1.界面友好,函数功能要划分好 2.总体设计应画一流程图 3.程序要加必要的注释 4.要提供程序测试方案 5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的
  • 学期安卓大作业,用Android Studio制作,一个简单的记事本,可以记录东西并保存,详情看我发布的文章。
  • 安卓大作业,一个记账小软件
  • 安卓大作业记事本

    2019-06-24 16:11:37
    期末安卓大作业,自己做的一个熊猫记事本。有登录界面,对记事的增删改查,支持关键字模糊查询和日期查询,记事可以加锁也可以设置闹钟提醒,可以拍照记事,分享等等。每一行都有注释!!!每一行!!!不用担心看不...
  • 安卓 通讯录 作业 带联系人增删改和收藏以及打电话短信功能
  • android 大作业

    千次阅读 2019-10-07 05:44:56
    本次在第三次作业上加了动态进度条,还有点击按钮切换图片,以及动态显示对应的歌手和歌曲名 音乐播放器拥有3个界面,欢迎界面,播放界面,列表界面。 欢迎界面有延时跳转界面功能设定为3s。 播放界面有播放,...

    一、团队成员

    姓名 学号 博客地址 班级
    成凯 1600802002 http://www.cnblogs.com/ck03/ 161

    党康 1600802004 http://www.cnblogs.com/lxxxy/ 161

    赵乐 1600802034 http://www.cnblogs.com/Z-y-H/ 161

    二、apk下载地址
    https://git.coding.net/ck__/Android_finalwork.git (部分机型还是存在闪退)

    三、项目代码链接
    https://git.coding.net/ck__/Android_finalwork.git

    四、音乐播放器

    4.1项目界面截图
        1.欢迎界面

    1352717-20181230181547127-664971081.png
    2.获取权限(黑屏请稍等)
    1352717-20181230181555194-1587820285.png
    3.播放界面
    1352717-20181230181602557-325448931.png
    4.列表界面
    1352717-20181230181609267-255933557.png

    4.2项目展示

    1352717-20190103182200027-1165021721.gif

    4.3项目功能描述
          本次在第三次作业上加了动态进度条,还有点击按钮切换图片,以及动态显示对应的歌手和歌曲名
         音乐播放器拥有3个界面,欢迎界面,播放界面,列表界面。
         欢迎界面有延时跳转界面功能设定为3s。
         播放界面有播放,暂停,上一首,下一首,显示播放进度条,歌曲名称,歌手名称及跳转列表页面功能,没有MP3文件会产生空指针导致本页面闪退。(未实现显示专辑图片,进度条控制播放进度及播放模式切换功能)
         列表界面有获取本地MP3格式文件并显示在列表中,点击列表文件会切换到播放界面并播放功能。
        

    五、关键代码

    5.1 获取本地MP3格式文件

    1352717-20181230202855019-622953692.png

    5.2 延时跳转界面

    1352717-20181230203306413-727997992.png

    5.3 播放,暂停,切歌

    1352717-20181230203316680-1678684538.png

    5.4 显示歌曲信息和进度条及列表文件点击

    1352717-20181230203343697-528803663.png

    六、班级前5名评价

    1、简单校园二手交易APP(汤文涛组)
         描述:一个适宜实用的交易app。
         优点:实用,有目标人群。拥有用户需要的功能。
         缺点:没有新意,已有相似功能的软件。
         改变:想做一个校园定位,确定是校内人员。
    
    2、代码杀(沈顺文组)
         描述:一个适宜的学习app。
         优点:有明确的目标人群。
         缺点:没有新意,已有相似功能的软件。相应功能未做完。
         改变:添加一个实时交流平台。
    
    3、时刻(季轩石组)
         描述:一个制定计划的app。
         优点:实用
         缺点:手机自带类似功能软件,在运行测试时点击打卡就会闪退。
         改变:做一个强制锁屏,提醒每日打卡。
    
    4、小蜗牛取快递(马秀莲组)
         描述:一个适宜的交易app。
         优点:有新意。
         缺点:不实用,实际生活中都有交流圈专门做这方面的事。真机运行中注册时点击提交会重复刷新注册页面无法注册成功。
         改变:添加一个实时交流平台。
    
    5、校园信息获取平台(赵林杰组)
         描述:一个适宜实用的信息app。
         优点:实用,有目标人群。
         缺点:校园信息已经有获取的平台了。没有apk链接。
         改变:做一个校园动态显示地图。

    七、项目遇到的问题

    成凯 1600802002
    问题一 :MP3文件的获取及列表显示
    解决方法:使用手机自带的多媒体数据库遍历查询MP3文件的信息,然后存储在自定义的music类的列表中。
    问题二 :播放暂停按钮图片的切换
    解决方法:根据自带media类判断当前是播放状态还是暂停状态,根据状态改变按钮图片。
    
    党康 1600802004
    问题一 :圆形图片
    解决方法:导入'de.hdodenhof:circleimageview:2.1.0包,实现圆形图片
    问题二 :进度条随歌曲播放变动
    解决方法:将每首歌的时间设为seekbar的长度,将media中获取当前歌曲的播放位置赋给seekbar的当前位置。
    
    赵乐  1600802034
    问题一 :界面之间的数据传输
    解决方法:使用Intent在两个Activity之间进行传值
    问题二 :闪退问题
    解决方法:1.打开Settings然后选择Instant Run,左侧边选择Instant Run选项,选择第一个Enable取消打勾,删除两个build文件夹,最后Clean project在Rebulid。(中间几个版本还是出现闪退,没有完全解决)

    八、团队分工
    1352717-20190102121816949-716833196.png

    转载于:https://www.cnblogs.com/Z-y-H/p/10199543.html

    展开全文
  • 安卓大作业之天气预报程序,现已经更新为安卓9.0可运行版本,解压导入android studio即可直接运行。
  • 安卓大作业,自制小程序,可以随机选择你所指定的多样事物的一样。支持简单的谁是卧底逻辑结构
  • 调用百度翻译API,实现了六种语言(中文,文言文,英语,日语,法语,德语)的翻译功能。
  • 作业
  • Android大作业.zip

    2020-07-29 14:42:17
    有很多网页和动态图,使用Js和css代码,请使用火狐浏览器(firefox)查看作业演示内容,其中index.html为首页。生成apk文件
  • android大作业,简单备忘录系统的实现 实现地功能包括: 1)增、删、查、改备忘信息 2)新建、删除、修改备忘分组,将备忘信息添加到备忘分组中 3)设置提醒时间,实现闹钟提醒 4)使用了NavigationView+...
  • 课堂考勤系统 安卓大作业 实现无纸化课堂点名 插入数据的方式目前只能一条一条添加,而且添加后暂时不能修改删除 以后有时间再完善
  • Android大作业:备忘录系统

    千次阅读 多人点赞 2020-01-09 18:23:59
    Android大作业:备忘录系统 杂言: android终于结课了,最后的大作业要求做一个备忘录系统。刚拿到题目的时候意气风发立志做一个比系统自带备忘录好的APP自己用,结果做着做着发现自己实在是菜的不行,最后完成的...

    Android大作业:备忘录系统

    杂言:

    android终于结课了,最后的大作业要求做一个备忘录系统。刚拿到题目的时候意气风发立志做一个比系统自带备忘录好的APP自己用,结果做着做着发现自己实在是菜的不行,最后完成的效果离目标相差甚远。不过为了不使自己的作品不只是停留在自己的磁盘里,还是厚颜无耻地把代码和文件贴到博客上,希望能给有需要的朋友带来一点点帮助。本人水平有限(很差,非常差),代码繁琐而且没有很漂亮地注释,请谅解。

    实验要求及内容

    要求:实现一个备忘录系统,至少包括三个界面

    1.设置备忘提醒的用户界面
    
    2.显示备忘提醒的用户界面
    
    3.备忘分组用户界面
    

    详细功能描述:

    1)设置备忘提醒的用户界面

    添加备忘信息
    
    更新备忘信息
    
    删除备忘信息
    

    2)显示备忘提醒的用户界面

    获取数据库中的备忘数据
    
    如时间相符则展现提醒信息
    

    3)备忘分组用户界面

    创建新的备忘分组信息并保存到数据库
    
    添加备忘信息到分组中
    
    删除分组、并更新相应的数据库
    

    最终运行效果截图

    1)主界面侧滑菜单

    全部笔记

    2)显示全部笔记

    在这里插入图片描述

    3)删除笔记

    在这里插入图片描述

    4)删除分组

    在这里插入图片描述

    5)添加分组

    在这里插入图片描述

    文件地址

    CSDN:https://download.csdn.net/download/niudaidai233/12093016
    git:https://github.com/zza234s/AndroidSimpleMemo

    其他

    由于做完大作业就把Android Stuidio删掉了,所以没办法帮有需要的同学解决运行不了的问题(鞠躬),不过正常情况下应该能运行的。

    另外我把实验报告也传到github里了,有需要的同学可以自行下载。
    文件名是:ExperimentReport.doc

    展开全文
  • 参考网上一部分源码整合成一个简单地音乐播放器,可实现播放、切换、显示歌词等功能。开发环境:Android Studio 3.6
  • 包含计算器 页面跳转 数据库怎删改
  • 个人仿制android QQ、android大作业

    千次阅读 多人点赞 2018-02-25 16:36:48
    仿制android QQ说明 app下载地址:http://download.csdn.net/download/h18733517027/10258434 服务器下载:http://download.csdn.net/download/h18733517027/10258435 说明下载:...

    仿制android QQ说明

    app下载地址:http://download.csdn.net/download/h18733517027/10258434

    服务器下载:http://download.csdn.net/download/h18733517027/10258435

    说明下载:http://download.csdn.net/download/h18733517027/10258480

    1、概要

    这个作品有五个界面:首页、登录、注册、好友、聊天。实现了一些简易的功能,连接服务器进行登录和注册功能,显示了好友列表,借鉴别人的聊天页面。

    试运行用户:

    用户名:123

    密码:     123

    2、首页界面、

    在这个页面进行应用打开缓冲,根据登录状态信息判断进行页面跳转,未登录-》登录界面、登录-》好友界面。

    3、 登录界面

    在这个界面进行登录信息输入,连接服务器验证信息,正确跳转到好友界面,并存储登录信息和状态,下次打开应用不必登录,错误进行提醒。如果无账号,点击新用户,进入注册页面

    4、注册界面

    该页面进行注册功能,连接服务器,进行注册,注册成功进入登录界面,也可以点击返回,返回登录界面

    5、好友界面

    显示好友消息,好友消息,如果不退出登录,下次打开应用进入此界面。点击退出登录,会清除登录信息,点击好友进入聊天页面。

     

     

    6、聊天界面(参考网上教程)

    该页面进行聊天,可发送字符和表情,未连接服务器。点击返回键返回好友界面。

     

    7、代码简述

    app应用

    MainActivity

    publicclass MainActivity extends Activity {

     

        @Override

        protectedvoid onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

           

            //登录信息检测

            String flag=user();

           /*flag="1";*/

           

            if(flag.equals("0")){

             

            Intent intent=new Intent(this,Login.class);

            startActivity(intent);

           

            }else {

           

            Intent intent=new Intent(this,Index.class);

           

            Bundle bundle=new Bundle();

            //传递name参数为tinyphp

            bundle.putString("username", flag);

            intent.putExtras(bundle);

     

           

            startActivity(intent);

           

          }

        }

        //登录信息查看

        public String user(){

          ContextotherAppsContext;

          Stringusername="";

          Stringflag="0";

          try {

            otherAppsContext = createPackageContext("com.example.qq", Context.CONTEXT_IGNORE_SECURITY);

            SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("user", Context.MODE_WORLD_READABLE);

             username = sharedPreferences.getString("username", "0");

             flag = sharedPreferences.getString("flag", "0");

          } catch (NameNotFoundException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

          if (flag.equals("0")) {

            return"0";

          } else {

            return username;

          }

         

        }

     

        @Override

        publicboolean onCreateOptionsMenu(Menu menu){

            // Inflate the menu; this adds items to the action bar if it is present.

            getMenuInflater().inflate(R.menu.main, menu);

            returntrue;

        }

     

        @Override

        publicboolean onOptionsItemSelected(MenuItemitem) {

            // Handle action bar item clicks here. The action bar will

            // automatically handle clicks on the Home/Up button, so long

            // as you specify a parent activity in AndroidManifest.xml.

            int id = item.getItemId();

            if (id == R.id.action_settings) {

                returntrue;

            }

            returnsuper.onOptionsItemSelected(item);

        }

    }

     

    Login.java

    publicclass Login extends Activity{

      

       privatestaticintF = 0;

       EditText eText1,eText2;

       String username="",password="",i="";

      

       @Override

       protectedvoid onCreate(Bundle savedInstanceState) {

          // TODO Auto-generatedmethod stub

          super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_login);

         

          eText1=(EditText) findViewById(R.id.editText1);

          eText2=(EditText) findViewById(R.id.editText2);

         

         

         

       }

      

       //登录按钮点击方法

      

       publicvoid Btn1OnClick(View view){

         

         

          username=eText1.getText().toString();

          password=eText2.getText().toString();

         

          if(username.length()==0||password.length()==0){

            

             Toast.makeText(getApplicationContext(),"账号密码不能为空!",

                 Toast.LENGTH_SHORT).show();

            

          }else{

             Runnable t = new Runnable(){                 //线程

               @Override

               publicvoid run() {

               // TODO Auto-generatedmethod stub

                  i=login(username,password);

                  System.out.println(i);

                  F=1;

               }

               };

           

               new Thread(t).start();

              

               //等待服务器传来的结果

              

               while (F!=1) {

                 

                 

               }

               System.out.println(" i= "+i);

                 

               //结果判定

              

                  if(i.equals("1")){

                     System.out.println("-1-");

                     Toast.makeText(getApplicationContext(), "登录成功!",

                      Toast.LENGTH_SHORT).show();

                    

                     userInfo(username, password, "1");

                    

                     Intent intent=new Intent(this,Index.class);

                      Bundlebundle=new Bundle();

                          //传递name参数为tinyphp

                         bundle.putString("username", username);

                         intent.putExtras(bundle);

                         startActivity(intent);

                    

                    

                  }else{

                     System.out.println("-0-");

                     Toast.makeText(getApplicationContext(), "账号或密码错误!",

                      Toast.LENGTH_SHORT).show();

                    

                  }

                 

                 

                  System.out.println("---");

            

          }

           

        }

      

       //登录信息保存

      

       publicvoid userInfo(String username,String password,String flag){

          SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);

          Editor editor = sharedPreferences.edit();//获取编辑器

          editor.putString("username", username);

          editor.putString("password", password);

          editor.putString("flag", flag);

          editor.commit();

       }

      

       //注册按钮

       publicvoid Btn2OnClick(View view){   

             

          Toast.makeText(getApplicationContext(), "欢迎新用户!",

                 Toast.LENGTH_SHORT).show();

         

          Intent intent=new Intent(this,Regist.class);

              startActivity(intent);

        }

      

       //链接服务器

      

       private String login(String username,String password){

          //1  声明一些变量

          String flag="";

          URL url = null;

          HttpURLConnection conn=null;

          String requestBody="";//请求体

          String responseBody="";//响应体

         

          try {

            //url=newURL("http://10.0.2.2:8080/Chapter_13_Networking_server/servlet/LoginServlet");

            url = new URL("http://10.0.2.2:8080/QQ_Server/servlet/LoginServlet");

              

          } catch (MalformedURLException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

          System.out.println("url=");

            //2 发送用户名和密码到服务器  post

          try{

          conn=(HttpURLConnection)url.openConnection();

           

          conn.setRequestMethod("POST");  //POST

          conn.setDoOutput(true);//设置请求体

           

          OutputStream os=conn.getOutputStream();

          System.out.println("username=");

          requestBody=new String("username="+username+"&password="+password);

          os.write(requestBody.getBytes("utf-8"));

          os.flush();

          os.close();

          }

          catch(Exception ex){

            ex.printStackTrace();

          }

          System.out.println("1");

          //5.接收数据

      try {

          InputStreamis=conn.getInputStream();

    //      byte []buffer=new byte[1024];

    //      while(in.available()!=0){

    //         in.read(buffer);

    //         responseBody=responseBody+buffer.toString();

    //      }

    //    //6  

    //      String msg=new String(responseBody.getBytes("utf-8"));

    //   

          byte  []temp  ;

         

         

           ByteArrayOutputStreamoutSteam = new ByteArrayOutputStream();

           System.out.println("1");

               byte[] buffer = newbyte[1024]; 

               int len = -1; 

               while ((len =is.read(buffer)) != -1) { 

                  outSteam.write(buffer, 0, len); 

               } 

              outSteam.close(); 

               is.close(); 

               temp=outSteam.toByteArray();

         

         

         

            //获得响应头

            //responseHeader = getResponseHeader(conn);

           

           

            String msg = new String(temp,"UTF-8");

            

            System.out.println("---msg="+msg);

           

            flag=msg;

           

          } catch (IOException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

      System.out.println("flag="+flag);

       return flag;

         

         

         

         

       }

      

      

      

       //返回键监听,返回桌面

       publicboolean onKeyDown(int keyCode, KeyEvent event) {

     

           if (keyCode ==KeyEvent.KEYCODE_BACK) {

               Intent home = new Intent(Intent.ACTION_MAIN);

              home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

              home.addCategory(Intent.CATEGORY_HOME);

               startActivity(home);

               returntrue;

           }

           returnsuper.onKeyDown(keyCode,event);

       }

      

      

     

      

    }

     

    Regist

    publicclass Regist extends Activity{

     

       privatestaticintF = 0;

       EditText eText1,eText2;

       String username="",password="",i="";

      

       protectedvoid onCreate(Bundle savedInstanceState) {

          // TODO Auto-generatedmethod stub

          super.onCreate(savedInstanceState);

          requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

          setContentView(R.layout.activity_regist);

         

          //标题打开

          getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.regist_title);

         

          eText1=(EditText) findViewById(R.id.editText1);

          eText2=(EditText) findViewById(R.id.editText2);

         

       }

       //返回

       publicvoid BlackOnClick(View view){   

             

          Intent intent=new Intent(this,Login.class);

              startActivity(intent);

               Regist.this.finish();

        }

       //注册

       publicvoid RegistOnClick(View view){   

          

         

             username=eText1.getText().toString();

             password=eText2.getText().toString();

            

             if(username.length()==0||password.length()==0){

              

               Toast.makeText(getApplicationContext(),"账号密码不能为空!",

                    Toast.LENGTH_SHORT).show();

              

             }else{

               Runnable t = new Runnable(){                 //线程

                  @Override

                  publicvoid run() {

                  // TODO Auto-generatedmethod stub

                     i=regist(username,password);

                     System.out.println(i);

                     F=1;

                  }

                  };

              

                  new Thread(t).start();

                  //等待结果

                  while (F!=1) {

                    

                    

                  }

                  System.out.println(" i= "+i);

                    

                     if(i.equals("1")){

                        System.out.println("-1-");

                        Toast.makeText(getApplicationContext(), "注册成功!",

                         Toast.LENGTH_SHORT).show();

                       

                       

                       

                        Intent intent=new Intent(this,Login.class);

                            startActivity(intent);

                       

                       

                     }else{

                        System.out.println("-0-");

                        Toast.makeText(getApplicationContext(), "注册失败!",

                         Toast.LENGTH_SHORT).show();

                       

                     }

                    

                    

                     System.out.println("---");

               

             }

      

        }

      

       //注册服务器链接

       private String regist(String username,String password){

          //1  声明一些变量

          String flag="";

          URL url = null;

          HttpURLConnection conn=null;

          String requestBody="";//请求体

          String responseBody="";//响应体

         

          try {

            //url=new URL("http://10.0.2.2:8080/Chapter_13_Networking_server/servlet/LoginServlet");

            url = new URL("http://10.0.2.2:8080/QQ_Server/servlet/RegistServlet");

              

          } catch (MalformedURLException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

          System.out.println("url=");

            //2 发送用户名和密码到服务器  post

          try{

          conn=(HttpURLConnection)url.openConnection();

           

          conn.setRequestMethod("POST");  //POST

          conn.setDoOutput(true);//设置请求体

           

          OutputStream os=conn.getOutputStream();

          System.out.println("username=");

          requestBody=new String("username="+username+"&password="+password);

          os.write(requestBody.getBytes("utf-8"));

          os.flush();

          os.close();

          }

          catch(Exception ex){

            ex.printStackTrace();

          }

          System.out.println("1");

          //5.接收数据

      try {

          InputStreamis=conn.getInputStream();

    //      byte []buffer=new byte[1024];

    //      while(in.available()!=0){

    //         in.read(buffer);

    //         responseBody=responseBody+buffer.toString();

    //      }

    //    //6  

    //      String msg=new String(responseBody.getBytes("utf-8"));

    //   

          byte  []temp  ;

         

         

           ByteArrayOutputStreamoutSteam = new ByteArrayOutputStream();

           System.out.println("1");

               byte[] buffer = newbyte[1024]; 

               int len = -1; 

               while ((len =is.read(buffer)) != -1) { 

                  outSteam.write(buffer, 0, len); 

               } 

              outSteam.close(); 

               is.close(); 

               temp=outSteam.toByteArray();

         

         

         

            //获得响应头

            //responseHeader = getResponseHeader(conn);

           

           

            String msg = new String(temp,"UTF-8");

            

            System.out.println("---msg="+msg);

           

            flag=msg;

           

          } catch (IOException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

      System.out.println("flag="+flag);

       return flag;

         

         

         

         

       }

      

       publicboolean onKeyDown(int keyCode, KeyEvent event) {

     

           if (keyCode ==KeyEvent.KEYCODE_BACK) {

               Intent home = new Intent(Intent.ACTION_MAIN);

              home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

              home.addCategory(Intent.CATEGORY_HOME);

               startActivity(home);

               returntrue;

           }

           returnsuper.onKeyDown(keyCode,event);

       }

    }

     

    Index.java

    publicclass Index extends Activity{

      

       private List<UserInfo> userInfos=new ArrayList<UserInfo>();

       private ListAdapter adapter;

       private ListView mListView;

      

       EditText eText;

      

       protectedvoid onCreate(Bundle savedInstanceState) {

          // TODO Auto-generatedmethod stub

          super.onCreate(savedInstanceState);

          requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

          setContentView(R.layout.activity_index);

         

          //listview数据填充

         

          initView();

          //标题打开

          getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.index_title);

         

          //item点击方法

         

          mListView.setOnItemClickListener(new OnItemClickListener() {

     

            @Override

            publicvoid onItemClick(AdapterView<?> parent, View view,

                  int position, long id) {

               Intent intent=new Intent(Index.this,Chat.class);

                Bundle bundle=new Bundle();

                    //传递name参数为tinyphp

                   bundle.putString("chat",view.findViewById(R.id.name).toString());

                   intent.putExtras(bundle);

                   startActivity(intent);

              

            }

           

           

          }

               );

           

         

          Bundle bundle = this.getIntent().getExtras();

            //接收name

            String username = bundle.getString("username");

           

            System.out.println(username);

           

           

          

           

           

      

       }

      

      

      

      

       privatevoid initView() {

          mListView = (ListView) findViewById(R.id.listView1);

          //新增數據

         

           

          UserInfo userInfo=new UserInfo(R.drawable.h1, "张辉", "在吗?");

          UserInfo userInfo1=new UserInfo(R.drawable.h2, "流浪", "附加费更痛苦");

          UserInfo userInfo2=new UserInfo(R.drawable.h3, "联想", "啊啊啊");

          UserInfo userInfo3=new UserInfo(R.drawable.h4, "作者", "ddd");

          UserInfo userInfo4=new UserInfo(R.drawable.h5, "0o搜索o0", "hello");

          UserInfo userInfo5=new UserInfo(R.drawable.h1, "书橱", "呜呜呜");

          userInfos.add(userInfo);

          userInfos.add(userInfo1);

          userInfos.add(userInfo2);

          userInfos.add(userInfo3);

          userInfos.add(userInfo4);

          userInfos.add(userInfo5);

         

         

          //初始化数据源

          adapter = new ListAdapter(this,userInfos);

          mListView.setAdapter(adapter);

         

         

          }

         

       //退出登录方法

      

       publicvoid LogoutOnClick(View view){   

             

         

          System.out.println(1);

          Context otherAppsContext;

          //清除登录数据

          try {

            otherAppsContext = createPackageContext("com.example.qq", Context.CONTEXT_IGNORE_SECURITY);

            SharedPreferences sharedPreferences =otherAppsContext.getSharedPreferences("user", Context.MODE_WORLD_READABLE);

            SharedPreferences.Editor editor = sharedPreferences.edit();

            editor.clear();

            editor.commit();

          } catch (NameNotFoundException e) {

            // TODO Auto-generatedcatch block

            e.printStackTrace();

          }

         

       System.out.println(2);

         

       Intent intent=new Intent(this,Login.class);

        startActivity(intent);

        Index.this.finish();

        }

      

      

      

      

       publicboolean onKeyDown(int keyCode, KeyEvent event) {

     

           if (keyCode ==KeyEvent.KEYCODE_BACK) {

               Intent home = new Intent(Intent.ACTION_MAIN);

              home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

              home.addCategory(Intent.CATEGORY_HOME);

               startActivity(home);

               returntrue;

           }

           returnsuper.onKeyDown(keyCode,event);

       }

    }

    Chat.java

    publicclass Chat extends Activity implements OnClickListener,OnRefreshListenerHeader{

       private ViewPager mViewPager;

       private LinearLayout mDotsLayout;

       private MyEditText input;

       private Button send;

       private DropdownListView mListView;

       private ChatLVAdapter mLvAdapter;

      

       private LinearLayout chat_face_container;

       private ImageView image_face;//表情图标

       // 73

       privateintcolumns = 6;

       privateintrows = 4;

       private List<View> views = new ArrayList<View>();

       private List<String> staticFacesList;

       private LinkedList<ChatInfo> infos = new LinkedList<ChatInfo>();

       private SimpleDateFormat sd;

      

       private String reply="";//模拟回复

     

       @SuppressLint("SimpleDateFormat")

       privatevoid initViews() {

          mListView = (DropdownListView) findViewById(R.id.message_chat_listview);

          sd=new SimpleDateFormat("MM-ddHH:mm");

          //模拟收到信息

          infos.add(getChatInfoFrom("你好啊!"));

          infos.add(getChatInfoFrom("认识你很高兴#[face/png/f_static_018.png]#"));

          mLvAdapter = new ChatLVAdapter(this, infos);

          mListView.setAdapter(mLvAdapter);

          //表情图标

          image_face=(ImageView) findViewById(R.id.image_face);

          //表情布局

          chat_face_container=(LinearLayout) findViewById(R.id.chat_face_container);

          mViewPager = (ViewPager) findViewById(R.id.face_viewpager);

          mViewPager.setOnPageChangeListener(new PageChange());

          //表情下小圆点

          mDotsLayout = (LinearLayout) findViewById(R.id.face_dots_container);

          input = (MyEditText) findViewById(R.id.input_sms);

          input.setOnClickListener(this);

          send = (Button) findViewById(R.id.send_sms);

          InitViewPager();

          //表情按钮

          image_face.setOnClickListener(this);

          // 发送

          send.setOnClickListener(this);

         

          mListView.setOnRefreshListenerHead(this);

          mListView.setOnTouchListener(new OnTouchListener() {

            @Override

            publicboolean onTouch(View arg0, MotionEvent arg1) {

               if(arg1.getAction()==MotionEvent.ACTION_DOWN){

                  if(chat_face_container.getVisibility()==View.VISIBLE){

                     chat_face_container.setVisibility(View.GONE);

                  }

               }

               returnfalse;

            }

          });

       }

      

     

       @Override

       publicvoid onClick(View arg0) {

          switch (arg0.getId()) {

          case R.id.input_sms://输入框

            if(chat_face_container.getVisibility()==View.VISIBLE){

               chat_face_container.setVisibility(View.GONE);

            }

            break;

          case R.id.image_face://表情

            hideSoftInputView();//隐藏软键盘

            if(chat_face_container.getVisibility()==View.GONE){

               chat_face_container.setVisibility(View.VISIBLE);

            }else{

               chat_face_container.setVisibility(View.GONE);

            }

            break;

          case R.id.send_sms://发送

            reply=input.getText().toString();

            if (!TextUtils.isEmpty(reply)) {

               infos.add(getChatInfoTo(reply));

               mLvAdapter.setList(infos);

               mLvAdapter.notifyDataSetChanged();

               mListView.setSelection(infos.size() - 1);

               new Handler().postDelayed(new Runnable() {

                  @Override

                  publicvoid run() {

                     infos.add(getChatInfoFrom(reply));

                     mLvAdapter.setList(infos);

                     mLvAdapter.notifyDataSetChanged();

                     mListView.setSelection(infos.size() - 1);

                  }

               }, 1000);

               input.setText("");

            }

            break;

     

          default:

            break;

          }

       }

     

       /*

        * 初始表情 *

        */

       privatevoid InitViewPager() {

          // 获取页数

          for (int i = 0; i < getPagerCount(); i++) {

            views.add(viewPagerItem(i));

            LayoutParams params = new LayoutParams(16, 16);

            mDotsLayout.addView(dotsItem(i), params);

          }

          FaceVPAdapter mVpAdapter = new FaceVPAdapter(views);

          mViewPager.setAdapter(mVpAdapter);

          mDotsLayout.getChildAt(0).setSelected(true);

       }

     

       private View viewPagerItem(int position) {

          LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

          View layout = inflater.inflate(R.layout.face_gridview, null);//表情布局

          GridView gridview = (GridView) layout.findViewById(R.id.chart_face_gv);

          /**

           * 注:因为每一页末尾都有一个删除图标,所以每一页的实际表情columns *rows - 1; 空出最后一个位置给删除图标

           * */

          List<String> subList = new ArrayList<String>();

          subList.addAll(staticFacesList

               .subList(position * (columns * rows - 1),

                     (columns * rows - 1) * (position + 1) > staticFacesList

                          .size() ? staticFacesList.size() : (columns

                          * rows - 1)

                          * (position + 1)));

          /**

           * 末尾添加删除图标

           * */

          subList.add("emotion_del_normal.png");

          FaceGVAdapter mGvAdapter = new FaceGVAdapter(subList, this);

          gridview.setAdapter(mGvAdapter);

          gridview.setNumColumns(columns);

          // 单击表情执行的操作

          gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override

            publicvoid onItemClick(AdapterView<?> parent, View view,int position, long id) {

               try {

                  String png = ((TextView) ((LinearLayout) view).getChildAt(1)).getText().toString();

                  if (!png.contains("emotion_del_normal")) {// 如果不是删除图标

                     insert(getFace(png));

                  } else {

                     delete();

                  }

               } catch (Exception e) {

                  e.printStackTrace();

               }

            }

          });

         

          return gridview;

       }

     

       private SpannableStringBuilder getFace(String png) {

          SpannableStringBuilder sb = new SpannableStringBuilder();

          try {

            /**

             * 经过测试,虽然这里tempText被替换为png显示,但是但我单击发送按钮时,获取到輸入框的内容是tempText的值而不是png

             * 所以这里对这个tempText值做特殊处理

             * 格式:#[face/png/f_static_000.png]#,以方便判斷當前圖片是哪一個

             * */

            String tempText = "#[" + png + "]#";

            sb.append(tempText);

            sb.setSpan(

                  new ImageSpan(Chat.this, BitmapFactory

                        .decodeStream(getAssets().open(png))),sb.length()

                        - tempText.length(), sb.length(),

                  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

     

          } catch (Exception e) {

            e.printStackTrace();

          }

     

          return sb;

       }

     

       /**

        * 向输入框里添加表情

        * */

       privatevoid insert(CharSequence text) {

          int iCursorStart = Selection.getSelectionStart((input.getText()));

          int iCursorEnd = Selection.getSelectionEnd((input.getText()));

          if (iCursorStart != iCursorEnd) {

            ((Editable) input.getText()).replace(iCursorStart, iCursorEnd, "");

          }

          int iCursor = Selection.getSelectionEnd((input.getText()));

          ((Editable) input.getText()).insert(iCursor, text);

       }

     

       /**

        * 删除图标执行事件

        * 注:如果删除的是表情,在删除时实际删除的是tempText即图片占位的字符串,所以必需一次性删除掉tempText,才能将图片删除

        * */

       privatevoid delete() {

          if (input.getText().length() != 0) {

            int iCursorEnd = Selection.getSelectionEnd(input.getText());

            int iCursorStart = Selection.getSelectionStart(input.getText());

            if (iCursorEnd > 0) {

               if (iCursorEnd == iCursorStart) {

                  if (isDeletePng(iCursorEnd)) {

                     String st = "#[face/png/f_static_000.png]#";

                     ((Editable) input.getText()).delete(

                          iCursorEnd - st.length(), iCursorEnd);

                  } else {

                     ((Editable) input.getText()).delete(iCursorEnd - 1,

                          iCursorEnd);

                  }

               } else {

                  ((Editable) input.getText()).delete(iCursorStart,

                        iCursorEnd);

               }

            }

          }

       }

     

       /**

        * 判断即将删除的字符串是否是图片占位字符串tempText 如果是:则讲删除整个tempText

        * **/

       privateboolean isDeletePng(int cursor) {

          String st = "#[face/png/f_static_000.png]#";

          String content = input.getText().toString().substring(0, cursor);

          if (content.length() >= st.length()) {

            String checkStr = content.substring(content.length() -st.length(),

                  content.length());

            String regex = "(\\#\\[face/png/f_static_)\\d{3}(.png\\]\\#)";

            Pattern p = Pattern.compile(regex);

            Matcher m = p.matcher(checkStr);

            return m.matches();

          }

          returnfalse;

       }

     

       private ImageView dotsItem(int position) {

          LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

          View layout = inflater.inflate(R.layout.dot_image, null);

          ImageView iv = (ImageView) layout.findViewById(R.id.face_dot);

          iv.setId(position);

          return iv;

       }

     

       /**

        * 根据表情数量以及GridView设置的行数和列数计算Pager数量

        * @return

        */

       privateint getPagerCount() {

          int count = staticFacesList.size();

          return count % (columns * rows - 1) == 0 ? count / (columns * rows - 1)

               : count / (columns * rows - 1) + 1;

       }

     

       /**

        * 初始化表情列表staticFacesList

        */

       privatevoid initStaticFaces() {

          try {

            staticFacesList = new ArrayList<String>();

            String[] faces = getAssets().list("face/png");

            //Assets中的表情名称转为字符串一一添加进staticFacesList

            for (int i = 0; i < faces.length; i++) {

               staticFacesList.add(faces[i]);

            }

            //去掉删除图片

            staticFacesList.remove("emotion_del_normal.png");

          } catch (Exception e) {

            e.printStackTrace();

          }

       }

     

       /**

        * 表情页改变时,dots效果也要跟着改变

        * */

       class PageChange implements OnPageChangeListener {

          @Override

          publicvoid onPageScrollStateChanged(int arg0) {

          }

          @Override

          publicvoid onPageScrolled(int arg0, float arg1, int arg2) {

          }

          @Override

          publicvoid onPageSelected(int arg0) {

            for (int i = 0; i < mDotsLayout.getChildCount(); i++) {

               mDotsLayout.getChildAt(i).setSelected(false);

            }

            mDotsLayout.getChildAt(arg0).setSelected(true);

          }

     

       }

     

       /**

        * 发送的信息

        * @param message

        * @return

        */

       private ChatInfo getChatInfoTo(String message) {

          ChatInfo info = new ChatInfo();

          info.content = message;

          info.fromOrTo = 1;

          info.time=sd.format(new Date());

          return info;

       }

      

       /**

        * 接收的信息

        * @param message

        * @return

        */

       private ChatInfo getChatInfoFrom(String message) {

          ChatInfo info = new ChatInfo();

          info.content = message;

          info.fromOrTo = 0;

          info.time=sd.format(new Date());

          return info;

       }

      

       @SuppressLint("HandlerLeak")

       private Handler mHandler = new Handler() {

          @Override

          publicvoid handleMessage(Message msg) {

            switch (msg.what) {

            case 0:

               mLvAdapter.setList(infos);

               mLvAdapter.notifyDataSetChanged();

               mListView.onRefreshCompleteHeader();

               break;

            }

          }

       };

       @Override

       protectedvoid onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.chat_main);

          initStaticFaces();

          initViews();

       }

     

       @Override

       publicvoid onRefresh() {

          new Thread() {

            @Override

            publicvoid run() {

               try {

                  sleep(1000);

                  Message msg = mHandler.obtainMessage(0);

                  mHandler.sendMessage(msg);

               } catch (InterruptedException e) {

                  e.printStackTrace();

               }

            }

          }.start();

       }

      

       publicvoid hideSoftInputView() {

          InputMethodManager manager = ((InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE));

          if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {

            if (getCurrentFocus() != null)

               manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);

          }

       }

     

    }

     

    展开全文
  • 移动设备软件应用与开发大作业报告姓 名:学 号:班 级:院 系:日 期:任课教师:一、程序的运行环境、安装步骤1、运行环境游戏运行环境:Android1.5以上版本2、程序的组成部份:2.1、JDK安装我的电脑->...

    移动设备软件应用与开发

    大作业报告

    姓 名:

    学 号:

    班 级:

    院 系:

    日 期:

    任课教师:

    一、程序的运行环境、安装步骤

    1、运行环境

    游戏运行环境:Android1.5以上版本

    2、程序的组成部份:

    2.1、JDK安装

    我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:

    JAVA_HOME值为: D:\Program Files\Java\jdk1.6.0_18(你安装JDK的目录)

    CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;

    Path:? 在开始追加 %JAVA_HOME%\bin;

    NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。

    安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:

    2.2、Eclipse安装

    2.3、Android SDK安装

    在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。

    运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。

    选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包

    在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。

    image图2、设置Android SDK的环境变量

    “确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。

    运行 android –h 如果有类似以下的输出,表明安装成功:

    图3、验证Android SDK是否安装成功

    2.4、ADT安装

    打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software"

    点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入/android/eclipse。如下图所示:

    确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:

    然后就是按提示一步一步next。

    完成之后:

    选择Window > Preferences...

    在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:

    D:\AndroidDevelop\android-sdk-windows点击Apply、OK。配置完成。

    2.5、创建AVD

    为使Android应用程序可以在模拟器上运行,必须创建AVD。

    1、在Eclipse中。选择Windows > Android SDK and AVD Manager

    2、点击左侧面板的Virtual Devices,再右侧点击New

    3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值

    4、点击Create AVD即可完成创建AVD

    注意:如果你点击左侧面板的Virtual Devices,再右侧点击New ,而target下拉列表没有可选项时,这时候你:

    点击左侧面板的Available Packages,在右侧勾选/android/repository/repository.xml,如下图所示:

    然后点击Install Selected按钮,接下来就是按提示做就行了

    要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages)。

    2.5、创建Android工程

    三、 程序开发平

    展开全文
  • AndroidStudio 3.5平台。可作为移动开发课程小学期作业,亦可做为毕业设计的思路与源码的提供(使用的是其自带的数据库),包含:注册、登录、注销、支付宝支付(这个仅提供了个窗口,读者可以方便地扩充)、VIP功能...
  • 移动设备软件应用与开发 大作业报告 姓 名 学 号 班 级 院 系 日 期 任课教师 一程序的运行环境安装步骤 1运行环境 游戏运行环境Android1.5以上版本 2程序的组成部份 2.1JDK安装 我的电脑->属性->高级->环境变量->...
  • 能正常运行。使用了fragment、Activity、sqlite数据库等技术,包含登陆页面、主页一级多个子页面,其中还有一个视频可以播放,有用户的注册和用户的登录、还有增删改查的功能。
  • 、系统模块:登录模块、个人信息模块。 登录模块包括:登录界面,要求能够根据个人账号和密码成功登陆,密码或账号错误,要进行提示:您输入的密码或账号不正确,请重新输入。
  • 功能2:Menu菜单功能 功能3:添加新闻信息功能 功能4:快速查找功能 功能5:删除新闻功能 参考:《Android应用开发教程》张冬玲 开发环境:  windows 10  Eclipse Java EE IDE for ... Android 5.1.1(API 22)
  • BaiduFence Android 关于百度API调用的一个大作业练习 项目名称:虚拟栅栏 项目简介:调用百度API,在地图上设置边界,一旦手机移动超出此边界自动报警。 请注意申请apikey和serviceId
  • 用eclipse做的android作业

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,576
精华内容 10,230
关键字:

安卓大作业