public class RollActivity extends Activity {private View view;private Button btn;private PopupWindow mPopupWindow;private View[] btns;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);//LinearLayout layout=(LinearLayout) view.findViewById(R.id.layout_main);////设置背景图片旋转180//Bitmap mBitmap=setRotate(R.drawable.bg_kuang);//BitmapDrawable drawable=new BitmapDrawable(mBitmap);//layout.setBackgroundDrawable(drawable);                btn=(Button) this.findViewById(R.id.btn);        btn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubshowPopupWindow(btn);}                });                initPopupWindow(R.layout.popwindow);    }    private void initPopupWindow(int resId){LayoutInflater mLayoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);    view = mLayoutInflater.inflate(resId, null);        mPopupWindow = new PopupWindow(view, 400,LayoutParams.WRAP_CONTENT);//mPopupWindow.setBackgroundDrawable(new BitmapDrawable());//必须设置background才能消失mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_frame));mPopupWindow.setOutsideTouchable(true);//自定义动画//mPopupWindow.setAnimationStyle(R.style.PopupAnimation);//使用系统动画mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog);mPopupWindow.update();mPopupWindow.setTouchable(true);mPopupWindow.setFocusable(true);btns=new View[3];btns[0]=view.findViewById(R.id.btn_0);btns[1]=view.findViewById(R.id.btn_1);btns[2]=view.findViewById(R.id.btn_2);btns[0].setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//doSomething}});btns[1].setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//doSomething}});btns[2].setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//doSomething}});}private void showPopupWindow(View view) {if(!mPopupWindow.isShowing()){//mPopupWindow.showAsDropDown(view,0,0);mPopupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);}}public Bitmap setRotate(int resId) {Matrix mFgMatrix = new Matrix();Bitmap mFgBitmap = BitmapFactory.decodeResource(getResources(), resId);mFgMatrix.setRotate(180f);return mFgBitmap=Bitmap.createBitmap(mFgBitmap, 0, 0, mFgBitmap.getWidth(), mFgBitmap.getHeight(), mFgMatrix, true);}}

PopupWindow的布局popwindow.xml
注意3个LinearLayout里必须设置clickable和background,这样当点击上去的时候才会有点击效果。
android:clickable="true"
android:background="@drawable/state_btn_pressed"

<?xml version="1.0" encoding="utf-8"?> <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"android:layout_height="wrap_content" android:orientation="horizontal"android:id="@+id/layout_main"><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center_horizontal"android:clickable="true"android:background="@drawable/state_btn_pressed"android:layout_weight="1"android:id="@+id/btn_0"><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content" android:scaleType="fitCenter"android:src="@drawable/ic_call"></ImageView><TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:textColor="#000000"android:textSize="18px"android:text="电话"></TextView></LinearLayout><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center_horizontal"android:clickable="true"android:background="@drawable/state_btn_pressed"android:layout_weight="1"android:id="@+id/btn_1"><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content" android:scaleType="fitCenter"android:src="@drawable/ic_home"></ImageView><TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:textColor="#000"android:textSize="18px"android:text="空间"></TextView></LinearLayout><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center_horizontal"android:clickable="true"android:background="@drawable/state_btn_pressed"android:layout_weight="1"android:id="@+id/btn_2"><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content" android:scaleType="fitCenter"android:src="@drawable/ic_sms"></ImageView><TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:textColor="#000"android:textSize="18px"android:text="短信"></TextView></LinearLayout></LinearLayout>

state_btn_pressed.xml,点击的效果:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true"        android:drawable="@drawable/bg_btn_pressed"        android:padding="0dp"/></selector>

Android 模仿迅雷的 PopupWindow 出现/消失动画
出现:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><scale android:fromXScale="0.6" android:toXScale="1.1"android:fromYScale="0.6" android:toYScale="1.1" android:pivotX="50%"android:pivotY="50%" android:duration="200" /><scale android:fromXScale="1.0" android:toXScale="0.91"android:fromYScale="1.0" android:toYScale="0.91" android:pivotX="50%"android:pivotY="50%" android:duration="400" android:delay="200" /><alpha android:interpolator="@android:anim/linear_interpolator"android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" /></set>

消失:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><scale android:fromXScale="1.0" android:toXScale="1.25"android:fromYScale="1.0" android:toYScale="1.25" android:pivotX="50%"android:pivotY="50%" android:duration="200" /><scale android:fromXScale="1.0" android:toXScale="0.48"android:fromYScale="1.0" android:toYScale="0.48" android:pivotX="50%"android:pivotY="50%" android:duration="400" android:delay="200" /><alpha android:interpolator="@android:anim/linear_interpolator"android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="400" /></set>

最后用下面的 XML 封装:

<?xml version="1.0" encoding="utf-8"?><resources><style name="PopupAnimation" parent="android:Animation"mce_bogus="1"><item name="android:windowEnterAnimation">@anim/anim_dialog_show</item><item name="android:windowExitAnimation">@anim/anim_dialog_hide</item></style></resources>

DraweRoll.rar (111 KB)

更多相关文章

  1. Android之获取、设置EditText的文本...
  2. Android(安卓)Material Design之FloatingActionButton
  3. Android(安卓)点击按钮,文字改变颜色
  4. android 使用动画 Button移动后不响应点击事件的解决办法
  5. Android自定义Dialog以控制其位置和宽高
  6. Android(安卓)webview 点击超链接打开新的webview
  7. Android(安卓)Network数据存储
  8. Android(安卓)TextView 给文本中指定片段添加自定义点击事件
  9. android的字体相关类Typeface

随机推荐

  1. Android(安卓)Aidl机制
  2. Android点亮屏幕
  3. android 传感器的使用
  4. Android(安卓)Studio使用gradle编译问题
  5. Android:30分钟弄明白Touch事件分发机制
  6. ProgressBar控件的使用(Android设置条形,环
  7. 图片中的毕加索【Picasso】
  8. android开发教程(八)——环境搭建之java-nd
  9. android----TextView如何实现无限滚动显
  10. Fragments的初识---不知道Fragments的不