zoukankan      html  css  js  c++  java
  • Android音乐、视频类APP常用控件:DraggablePanel(2)

    

    Android音乐、视频类APP常用控件:DraggablePanel(2)

    附录文章1主要演示了如何使用DraggablePanel 的DraggableView。DraggablePanel除了DraggableView外,本身DraggablePanel与DraggableView不同的是,DraggableView是一个轻量级的“View”, 而DraggablePanel是一个重的面板、“平台”可以承载更重的如Android Fragment的组件。
    写一个测试的MainActivity.java:

    package zhangphil.demo;
    
    import com.github.pedrovgs.DraggableListener;
    import com.github.pedrovgs.DraggablePanel;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends FragmentActivity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		final DraggablePanel draggablePanel = (DraggablePanel) findViewById(R.id.draggable_panel);
    		findViewById(R.id.image).setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				draggablePanel.maximize();
    			}
    		});
    
    		// 注意!添加的监听事件需要放在初始化之前,否则可能无法正常达到监听效果。
    		draggablePanel.setDraggableListener(new DraggableListener() {
    
    			@Override
    			public void onMaximized() {
    				Toast.makeText(getApplication(), "onMaximized", Toast.LENGTH_SHORT).show();
    			}
    
    			@Override
    			public void onMinimized() {
    				Toast.makeText(getApplication(), "onMinimized", Toast.LENGTH_SHORT).show();
    			}
    
    			@Override
    			public void onClosedToLeft() {
    				Toast.makeText(getApplication(), "onClosedToLeft", Toast.LENGTH_SHORT).show();
    			}
    
    			@Override
    			public void onClosedToRight() {
    				Toast.makeText(getApplication(), "onClosedToRight", Toast.LENGTH_SHORT).show();
    			}
    		});
    
    		draggablePanel.setFragmentManager(getSupportFragmentManager());
    		draggablePanel.setTopFragment(new MyTopFragment());
    		draggablePanel.setBottomFragment(new MyBottomFragment());
    		draggablePanel.initializeView();
    	}
    
    	private static class MyTopFragment extends Fragment {
    		@Override
    		public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    			View v = inflater.inflate(android.R.layout.simple_list_item_1, null);
    			v.setBackgroundColor(0xFFEF5350);
    			TextView text = (TextView) v.findViewById(android.R.id.text1);
    			text.setText("zhang phil @ csdn , 顶");
    			return v;
    		}
    	}
    
    	private static class MyBottomFragment extends Fragment {
    		@Override
    		public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    			View v = inflater.inflate(android.R.layout.simple_list_item_1, null);
    			v.setBackgroundColor(0xFF42A5F5);
    			TextView text = (TextView) v.findViewById(android.R.id.text1);
    			text.setText("zhang phil @ csdn , 底");
    			return v;
    		}
    	}
    }
    


    所需的activity_main.xml布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:draggable_panel="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/ic_launcher" />
    
        <com.github.pedrovgs.DraggablePanel
            android:id="@+id/draggable_panel"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            draggable_panel:enable_horizontal_alpha_effect="false"
            draggable_panel:top_fragment_height="200dip"
            draggable_panel:top_fragment_margin_bottom="20dip"
            draggable_panel:top_fragment_margin_right="20dip"
            draggable_panel:x_scale_factor="2.3"
            draggable_panel:y_scale_factor="2.3" />
    
    </FrameLayout>



    代码运行结果,从顶向底拖曳,然后到底后再水平向左拖曳,最终点击Android小机器人使之复位,如图所示:






    代码中写了两个不同的Android Fragment加载到DraggablePanel中,分别为top和bottom。


    附录文章:
    1,《Android音乐、视频类APP常用控件:DraggablePanel(1)》链接地址:http://blog.csdn.net/zhangphil/article/details/51566860
    2,《Android自底部平滑向上滑出面板的AndroidSlidingUpPanel》链接地址:http://blog.csdn.net/zhangphil/article/details/51444509
     

  • 相关阅读:
    python学习笔记(1)
    一些有趣的使用function
    axios构建请求池处理全局loading状态&&axios避免重复请求
    axios构建缓存池存储基础数据
    文件下载方法
    关于 JS this
    前端 JS 获取 Image 图像 宽高 尺寸
    Html CSS transform matrix3d 3D转场特效
    Github 持续化集成 工作流 Npm包自动化发布
    远程 Linux(Ubuntu 18)添加字体
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147316.html
Copyright © 2011-2022 走看看