feat: 增加左右切换的功能
This commit is contained in:
parent
7fc22a7c6b
commit
bad1f99c66
1
.idea/misc.xml
generated
1
.idea/misc.xml
generated
@ -1,4 +1,3 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
android:name="android.hardware.type.automotive"
|
android:name="android.hardware.type.automotive"
|
||||||
android:required="true" />
|
android:required="true" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:appCategory="audio"
|
android:appCategory="audio"
|
||||||
|
|||||||
@ -15,6 +15,8 @@ import android.graphics.drawable.BitmapDrawable;
|
|||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.StateListDrawable;
|
import android.graphics.drawable.StateListDrawable;
|
||||||
|
import android.os.VibrationEffect;
|
||||||
|
import android.os.Vibrator;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.HapticFeedbackConstants;
|
import android.view.HapticFeedbackConstants;
|
||||||
@ -62,7 +64,8 @@ public class SplitLayout extends ViewGroup {
|
|||||||
private Bitmap cachedBitmap;
|
private Bitmap cachedBitmap;
|
||||||
private Canvas cachedCanvas; // 使用双缓冲方式绘制拖动中的View变化,提高效率
|
private Canvas cachedCanvas; // 使用双缓冲方式绘制拖动中的View变化,提高效率
|
||||||
private Paint mPaint = new Paint();
|
private Paint mPaint = new Paint();
|
||||||
private int dragForgroundColor = Color.argb(0.88f, 1f, 1f, 1f);
|
private int dragForgroundColor = Color.argb(0.88f, 1f, 1f, 1f); // 默认的前景色
|
||||||
|
private Vibrator vibrator;
|
||||||
|
|
||||||
public SplitLayout(Context context) {
|
public SplitLayout(Context context) {
|
||||||
this(context, null, 0);
|
this(context, null, 0);
|
||||||
@ -103,6 +106,9 @@ public class SplitLayout extends ViewGroup {
|
|||||||
a.recycle();
|
a.recycle();
|
||||||
|
|
||||||
mPaint.setColor(dragForgroundColor);
|
mPaint.setColor(dragForgroundColor);
|
||||||
|
// 获取震动权限
|
||||||
|
vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
||||||
|
vibrator.vibrate(VibrationEffect.createOneShot(500, 125));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -217,9 +223,9 @@ public class SplitLayout extends ViewGroup {
|
|||||||
|
|
||||||
private boolean isUnderSplitHandle(float x, float y) {
|
private boolean isUnderSplitHandle(float x, float y) {
|
||||||
if (mOrientation == VERTICAL) {
|
if (mOrientation == VERTICAL) {
|
||||||
return y >= (mSplitPosition - mHandleSize / 2) && y <= (mSplitPosition + mHandleSize / 2);
|
return y >= (mSplitPosition - (mHandleSize*2)) && y <= (mSplitPosition + (mHandleSize*2));
|
||||||
} else {
|
} else {
|
||||||
return x >= (mSplitPosition - mHandleSize / 2) && x <= (mSplitPosition + mHandleSize / 2);
|
return x >= (mSplitPosition - (mHandleSize*2)) && x <= (mSplitPosition + (mHandleSize*2));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -389,4 +395,15 @@ public class SplitLayout extends ViewGroup {
|
|||||||
public int getDragForgroundColor() {
|
public int getDragForgroundColor() {
|
||||||
return dragForgroundColor;
|
return dragForgroundColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void switchChildViewPosition() {
|
||||||
|
checkChildren();
|
||||||
|
removeAllViews();
|
||||||
|
addView(mChild1);
|
||||||
|
addView(mChild0);
|
||||||
|
View tempView = mChild0;
|
||||||
|
mChild0 = mChild1;
|
||||||
|
mChild1 = tempView;
|
||||||
|
requestLayout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,29 +22,29 @@ public class SplitLayoutActivity extends Activity {
|
|||||||
mVerticalSplitLayout = (SplitLayout) findViewById(R.id.splitlayout_vertical);
|
mVerticalSplitLayout = (SplitLayout) findViewById(R.id.splitlayout_vertical);
|
||||||
mHorizontalSplitLayout = (SplitLayout) findViewById(R.id.splitlayout_horizontal);
|
mHorizontalSplitLayout = (SplitLayout) findViewById(R.id.splitlayout_horizontal);
|
||||||
|
|
||||||
findViewById(R.id.tv_child0).setOnClickListener(new View.OnClickListener() {
|
// findViewById(R.id.tv_child0).setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
// @Override
|
||||||
public void onClick(View v) {
|
// public void onClick(View v) {
|
||||||
Toast.makeText(SplitLayoutActivity.this, "CHILD 0", Toast.LENGTH_SHORT).show();
|
// Toast.makeText(SplitLayoutActivity.this, "CHILD 0", Toast.LENGTH_SHORT).show();
|
||||||
Log.d("SplitLayoutActivity", "tv_child0 clicked");
|
// Log.d("SplitLayoutActivity", "tv_child0 clicked");
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
findViewById(R.id.tv_child0).setOnTouchListener(new View.OnTouchListener() {
|
// findViewById(R.id.tv_child0).setOnTouchListener(new View.OnTouchListener() {
|
||||||
@Override
|
// @Override
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
// public boolean onTouch(View v, MotionEvent event) {
|
||||||
Log.d("SplitLayoutActivity", "tv_child0 onTouch");
|
// Log.d("SplitLayoutActivity", "tv_child0 onTouch");
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
findViewById(R.id.layout_child0).setOnTouchListener(new View.OnTouchListener() {
|
// findViewById(R.id.layout_child0).setOnTouchListener(new View.OnTouchListener() {
|
||||||
@Override
|
// @Override
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
// public boolean onTouch(View v, MotionEvent event) {
|
||||||
Log.d("SplitLayoutActivity", "layout_child0 onTouch");
|
// Log.d("SplitLayoutActivity", "layout_child0 onTouch");
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClickVerticalSample(View v) {
|
public void onClickVerticalSample(View v) {
|
||||||
@ -63,11 +63,14 @@ public class SplitLayoutActivity extends Activity {
|
|||||||
// Toast.makeText(this, "CHILD 1", Toast.LENGTH_SHORT).show();
|
// Toast.makeText(this, "CHILD 1", Toast.LENGTH_SHORT).show();
|
||||||
// }
|
// }
|
||||||
public void onClickRotateScreen(View v) {
|
public void onClickRotateScreen(View v) {
|
||||||
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
|
// if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||||||
} else {
|
// } else {
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
// 切换两个子View的显示位置
|
||||||
|
mHorizontalSplitLayout.switchChildViewPosition();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="48dp"
|
android:layout_marginBottom="48dp"
|
||||||
|
app:splitFraction="0.3"
|
||||||
app:splitHandleDrawable="@drawable/split_drawable"
|
app:splitHandleDrawable="@drawable/split_drawable"
|
||||||
app:splitDragForgroundColor="@color/material_yellow_500"
|
app:splitDragForgroundColor="@color/material_yellow_500"
|
||||||
app:splitOrientation="horizontal">
|
app:splitOrientation="horizontal">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user