有哪位兄弟做过上面这种带小三角的菜单,能不能给点思路或者能否提供点源码给小弟,不甚感激

解决方案 »

  1.   

    先将图片上传到csdn相册,再把相册中图片的地址放到插入图片的地址,
      

  2.   

    我目前也在做这样一个东西,我参考了下面的例子
    http://www.eoeandroid.com/thread-24780-1-1.html
    按你的需求这个例子就可以了,但我想在气泡出现的同时气泡中的菜单以“弹回”的动画出现,试了很多方法都不行,借你的帖子问下,希望大牛们指点!
      

  3.   

    具体可以查查 popwindow 的使用
      

  4.   

    可以把气泡菜单作为一个单独的view调用。
      

  5.   

    可以看看这个博文:android自定义menu,完全模拟系统事件然后将View改成自己想要的布局,以及自己想要的动画
      

  6.   

    首先前提就是你得是2.2版本的系统, 其次你必须已经root.下面说步骤:1. 下载附件, 解压里面的bootanimation并替换/system/bin里的同名文件(建议先备份该文件),注意改好权限(跟其他文件一样)
    2. 修改你的/system/media/bootanimation.zip教程很多, 只简单的提一下
        (a)解压bootanimation.zip, 在里面的desc.txt最后另起一行一行加上"s boot.ogg"不带引号,然后按照原来的结构重新打包, 注意压缩格式选zip(仅储存)
        (b)把自己喜欢的开机音转成ogg格式(mp3没试过, 待更新), 命名为boot.ogg(注意大小写)并和刚才做好的bootanimation.zip一起放回/system/media/, 改好权限
    3. 重启就可以了, 开机第一次震动之后就会出现你的自定义音乐了      先将你要作为开机铃声的音乐文件转为.ogg格式 下载附件 soft-ogg-convert.zip。解压并安装  桌面新建一个文件夹,然后把开机音文件丢进去,然后都在左边的资源管理器里,找到你要转换的开机音文件夹点一下,然后右边会出现文件,右键单击文件 选择转换   然后它提示你注册什么的不用管它,然后选择输出目录  然后点开始转换 转换完了之后吧转换得到的文件重命名为  boot.ogg(一定要小写)
      

  7.   

    进入手机找到 /system/customize/CID/default.xml  ,然后下载到你的电脑桌面,然后用IE浏览器打开
    在最下面找到这个内容<BootAnimation animation="/system/customize/resource/bootanimation.zip" audio="/system/customize/resource/android_audio.mp3" />
      

  8.   

    使用SurfaceView播放视频,其实很简单,但是经常会碰见有声音没图像的问题.
    其实使用SurfaceView播放视频只需要主要下面几个地方就可以了
    1. surfaceChanged也就是Suface是否创建成功
    2. onPrepared 也就是MideoPlayer是否加载并准备完成
    3. surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 类型必须是SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS
    java代码:
      1 package VideoTest.Test;
      2 
      3  import java.io.FileDescriptor;
      4 
      5 import android.app.Activity;
      6 import android.content.res.AssetFileDescriptor;
      7 import android.media.AudioManager;
      8 import android.media.MediaPlayer;
      9 import android.media.MediaPlayer.OnBufferingUpdateListener;
     10 import android.media.MediaPlayer.OnCompletionListener;
     11 import android.media.MediaPlayer.OnPreparedListener;
     12 import android.os.Bundle;
     13 import android.view.SurfaceHolder;
     14 import android.view.SurfaceView;
     15 
     16 
     17 public class VideoTest extends Activity implements SurfaceHolder.Callback, 
     18     OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener{
     19     
     20     private SurfaceView surfaceView;
     21     private SurfaceHolder surfaceHolder;
     22     private MediaPlayer mediaPlayer;
     23     
     24     @Override
     25     public void onCreate(Bundle savedInstanceState) {
     26         super.onCreate(savedInstanceState);
     27         
     28         this.surfaceView = new SurfaceView(this);
     29         this.surfaceHolder = this.surfaceView.getHolder();
     30         this.surfaceHolder.addCallback(this);
     31         
     32         //类型必须设置成SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS
     33         this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    
     34         setContentView(this.surfaceView);
     35     }
     36     
     37     @Override
     38     public void onDestroy() {
     39         super.onDestroy();
     40         if (this.mediaPlayer != null) {
     41             this.mediaPlayer.release();
     42             this.mediaPlayer = null;
     43         }
     44     }
     45     
     46     public void PlayVideo(){
     47         
     48         try {
     49             //视频文件放在 assert中
     50             AssetFileDescriptor aFD = this.getAssets().openFd("welcome.3gp");
     51             FileDescriptor fileDescriptor = aFD.getFileDescriptor();
     52             this.mediaPlayer = new MediaPlayer();
     53             this.mediaPlayer.setDataSource(fileDescriptor, aFD.getStartOffset(), aFD.getLength());
     54             aFD.close();    
     55             
     56             //视频放在SDCard中
     57             //File sdFile = Environment.getExternalStorageDirectory();
     58             //this.mediaPlayer = new MediaPlayer();
     59             //this.mediaPlayer.setDataSource(sdFile.getAbsoluteFile() + File.separator + "welcome.3gp");
     60             
     61             //视频放在res中
     62             //this.mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
     63             
     64             //网上的视频,没有测试
     65             //this.mediaPlayer
     66             //    .setDataSource("http://xy2.163.com/download/down/wukong.mp3");
     67             
     68             this.mediaPlayer.setDisplay(this.surfaceHolder);
     69             this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
     70             //准备完成后才可以播放,另外如果文件特别大或者从网上获得的资源
     71             //会在这里等待时间过长,造成堵塞,这样的话就得用
     72             //this.mediaPlayer.prepareAsync(),然后监听是否准备完毕在开始
     73             
     74             this.mediaPlayer.prepare();            
     75             this.mediaPlayer.start();                
     76                 
     77         } catch (Exception e) {
     78             // TODO: handle exception
     79         }
     80     }
     81     
     82     @Override
     83     public void surfaceChanged(SurfaceHolder holder, int format, int width,
     84             int height) {
     85         
     86     }
     87 
     88     @Override
     89     public void surfaceCreated(SurfaceHolder holder) {
     90         //SurfaceCreated 创建成功才可以播放视频
     91         PlayVideo();
     92     }
     93 
     94     @Override
     95     public void surfaceDestroyed(SurfaceHolder holder) {
     96         
     97     }
     98     
     99     //@Override
    100     public void onBufferingUpdate(MediaPlayer mp, int percent) {
    101         // TODO Auto-generated method stub
    102 
    103     }
    104 
    105     //@Override
    106     public void onCompletion(MediaPlayer mp) {
    107         // TODO Auto-generated method stub
    108 
    109     }
    110 
    111     //@Override
    112     public void onPrepared(MediaPlayer mp) {
    113         //MediaPlayer加载准备完毕才能开始播放
    114         //mp.start();
    115     }
    116     
    117 }