Smartisan OS一步之自定義拖拽內容

櫻花洛發表於2018-09-14

OneStepDemo

Github地址: github.com/codeccc/One…

這是一個適配Smartisan OS一步Demo,實現文字、連結、單圖、多圖拖拽功能,打破應用邊界,操作更便捷。

This is a one-step demo for Smartisan OS. It implements text, link, single-picture, multi-picture drag and drop functions, breaks application boundaries and makes operation more convenient.

軟體截圖

首頁
文字拖拽
多圖拖拽
連結拖拽

Demo視訊演示

優酷視訊播放地址

使用教程

1、初始化OneStepHelper

smartisanos-api-1.0.2.jar 新增到你的專案 /libs 目錄下,新增依賴並同步

2、初始化OneStepHelper
OneStepHelper mOneStepHelper = OneStepHelper.getInstance(OnestepDragActivity.this);
複製程式碼
3、設定view長按事件,在onLongClick中設定拖拽
 views[i].setOnLongClickListener(this);
複製程式碼
@Override
public boolean onLongClick(View view){
    switch (view.getId()){
       case R.id.txt_link_style:
       //連結型別
       if (mOneStepHelper.isOneStepShowing()){
           mOneStepHelper.dragLink(view, mBinding.txtLinkStyle.getText().toString().trim());
       }
       break;
}
複製程式碼

基礎API:

1、文字型別
mOneStepHelper.dragText(View view, CharSequence text)
複製程式碼
2、連結型別
mOneStepHelper.dragLink(View view, CharSequence link)
複製程式碼
3、單圖型別
mOneStepHelper.dragImage(View view, File file, String mimeType)
複製程式碼
4、多圖型別
mOneStepHelper.dragMultipleImages(View view, File[] files, String[] mimeTypes)
複製程式碼
5、檔案型別
mOneStepHelper.dragFile(View view, File file, String mimeType, String displayname)
複製程式碼

高階自定義API:

1、文字型別自定義拖拽縮圖
mOneStepHelper.dragText(View view, CharSequence text, Bitmap background, Bitmap content, Bitmap avatar)
複製程式碼
2、檔案型別自定義拖拽縮圖
mOneStepHelper.dragFile(View view, File file, String mimeType, Bitmap background, Bitmap content, Bitmap avatar)
複製程式碼
3、單圖型別自定義拖拽縮圖
mOneStepHelper.dragImage(View view, Bitmap content, File file, String mimeType)
複製程式碼
4、自定義氣泡顯示位置
mOneStepHelper.showDragPopupText(View view, OnDragListener dragListener, String content, int x, int y)
複製程式碼

注意事項:

1、進行圖片拖拽、檔案拖拽時,請在AndroidManifest.xml申請許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
複製程式碼
2、進行圖片拖拽分享時,請先將圖片儲存到本地 , 測試儲存程式碼示例:
/**
 * 儲存目錄
 */
private static final String SAMPLE_FILE_DIR
        = Environment.getExternalStorageDirectory() + "/OneStepDemo/";
/**
 * 建立檔案
 * @param filename 檔名稱
 * @return
 */
private File createTestFileIfNotExists(String filename)
{
    File testFile = new File(SAMPLE_FILE_DIR, filename);
    if (!testFile.exists())
    {
        try
        {
            testFile.createNewFile();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    return testFile;
}
複製程式碼
/**
 * 將圖片從assets中拷貝到sd卡中
 * @param assetFile 檔案
 * @return
 */
private void copyAssetFile2Sdcard(String assetFile)
{
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try
    {
        inputStream = getAssets().open(assetFile);
        String destFilePath = createTestFileIfNotExists(assetFile).getAbsolutePath();
        File f = new File(destFilePath);
        outputStream = new FileOutputStream(f);
        byte[] buf = new byte[1024 * 4];
        int len = 0;
        while ((len = inputStream.read(buf)) > 0)
        {
            outputStream.write(buf, 0, len);
        }
        outputStream.flush();
    } catch (IOException e)
    {
        e.printStackTrace();
    } finally
    {
        try
        {
            if (outputStream != null)
            {
                outputStream.close();
            }
            if (inputStream != null)
            {
                inputStream.close();
            }
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}
複製程式碼

TODO

  • [ ] 接收拖拽的圖片、文字、連結、檔案;

專案Github地址: github.com/codeccc/One…

官方GITHUB主頁: github.com/SmartisanTe…

相關文章