应用布局基本设定

This commit is contained in:
ZhanGSKen 2025-02-28 10:43:35 +08:00
parent 3031c9bfe0
commit e0e001c417
16 changed files with 273 additions and 337 deletions

View File

@ -58,10 +58,11 @@ android {
} }
dependencies { dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
// //
implementation 'com.google.android.gms:play-services-location:20.0.0' implementation 'com.google.android.gms:play-services-location:20.0.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.viewpager:viewpager:1.0.0' implementation 'androidx.viewpager:viewpager:1.0.0'

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Feb 25 05:04:52 GMT 2025 #Fri Feb 28 02:42:20 GMT 2025
stageCount=0 stageCount=0
libraryProject= libraryProject=
baseVersion=1.0 baseVersion=1.0
publishVersion=1.0.0 publishVersion=1.0.0
buildCount=184 buildCount=197
baseBetaVersion=1.0.1 baseBetaVersion=1.0.1

View File

@ -47,7 +47,7 @@
tools:ignore="AllowBackup,GoogleAppIndexingWarning" tools:ignore="AllowBackup,GoogleAppIndexingWarning"
tools:targetApi="q"> tools:targetApi="q">
<activity android:name=".MainSimpleActivity"> <activity android:name=".MainActivity">
<intent-filter> <intent-filter>
@ -59,8 +59,7 @@
</activity> </activity>
<activity android:name=".MainActivity2"> <activity android:name=".MainSimpleActivity">
</activity> </activity>
<activity android:name="com.tencent.map.vector.demo.DemoMainActivity"> <activity android:name="com.tencent.map.vector.demo.DemoMainActivity">

View File

@ -7,7 +7,6 @@ import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@ -17,6 +16,10 @@ import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView; import cc.winboll.studio.libappbase.LogView;
@ -25,18 +28,18 @@ import cc.winboll.studio.libapputils.app.WinBollActivityManager;
import cc.winboll.studio.libapputils.bean.APPInfo; import cc.winboll.studio.libapputils.bean.APPInfo;
import cc.winboll.studio.libapputils.view.YesNoAlertDialog; import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
import cc.winboll.studio.positions.R; import cc.winboll.studio.positions.R;
import com.tencent.map.vector.demo.DemoMainActivity;
import cc.winboll.studio.positions.activities.SettingsActivity; import cc.winboll.studio.positions.activities.SettingsActivity;
import cc.winboll.studio.positions.adapters.MyPagerAdapter;
import cc.winboll.studio.positions.beans.MainServiceBean; import cc.winboll.studio.positions.beans.MainServiceBean;
import cc.winboll.studio.positions.services.MainService; import cc.winboll.studio.positions.fragments.LogFragment;
import cc.winboll.studio.positions.fragments.PositionsFragment;
import cc.winboll.studio.positions.fragments.TXMSFragment;
import cc.winboll.studio.positions.fragments.TasksFragment;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.tencent.map.vector.demo.AbsActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.tencent.map.vector.demo.AbsListActivity;
import com.tencent.map.vector.demo.AbsActivity;
final public class MainSimpleActivity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { final public class MainActivity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
public static final String TAG = "MainActivity"; public static final String TAG = "MainActivity";
@ -46,10 +49,11 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS"; public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
LogView mLogView; LogView mLogView;
Toolbar mToolbar; //Toolbar mToolbar;
CheckBox cbMainService; CheckBox cbMainService;
MainServiceBean mMainServiceBean; MainServiceBean mMainServiceBean;
ViewPager viewPager; private TabLayout tabLayout;
private ViewPager viewPager;
private List<View> views; //用来存放放进ViewPager里面的布局 private List<View> views; //用来存放放进ViewPager里面的布局
//实例化存储imageView导航原点的集合 //实例化存储imageView导航原点的集合
ImageView[] imageViews; ImageView[] imageViews;
@ -67,19 +71,19 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
@Override @Override
public APPInfo getAppInfo() { public APPInfo getAppInfo() {
// String szBranchName = "contacts"; // String szBranchName = "positions";
// //
// APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo(); // APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo();
// appInfo.setAppName("Contacts"); // appInfo.setAppName("Positions");
// appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll); // appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
// appInfo.setAppDescription("Contacts Description"); // appInfo.setAppDescription("Positions Description");
// appInfo.setAppGitName("APP"); // appInfo.setAppGitName("APP");
// appInfo.setAppGitOwner("Studio"); // appInfo.setAppGitOwner("Studio");
// appInfo.setAppGitAPPBranch(szBranchName); // appInfo.setAppGitAPPBranch(szBranchName);
// appInfo.setAppGitAPPSubProjectFolder(szBranchName); // appInfo.setAppGitAPPSubProjectFolder(szBranchName);
// appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=Contacts"); // appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=Positions");
// appInfo.setAppAPKName("Contacts"); // appInfo.setAppAPKName("Positions");
// appInfo.setAppAPKFolderName("Contacts"); // appInfo.setAppAPKFolderName("Positions");
// return appInfo; // return appInfo;
return null; return null;
} }
@ -92,72 +96,97 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
// 初始化工具栏 // // 初始化工具栏
mToolbar = findViewById(R.id.activitymainToolbar1); // mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar); // setSupportActionBar(mToolbar);
if (isEnableDisplayHomeAsUp()) { // if (isEnableDisplayHomeAsUp()) {
// 显示后退按钮 // // 显示后退按钮
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} // }
getSupportActionBar().setSubtitle(getTag()); // getSupportActionBar().setSubtitle(getTag());
initData(); // 初始化地图视图
initView(); // 创建Fragment实例
//initPoint();//调用初始化导航原点的方法 TXMSFragment myFragment = TXMSFragment.newInstance(0);
viewPager.addOnPageChangeListener(this);//滑动事件 // 获取FragmentTransaction
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// 将Fragment添加到FrameLayout容器中
transaction.add(R.id.frameLayout, myFragment);
transaction.commit();
ViewPager viewPager = findViewById(R.id.activitymainViewPager1); tabLayout = findViewById(R.id.tabLayout);
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(pagerAdapter);
TabLayout tabLayout = findViewById(R.id.activitymainTabLayout1); // 创建Fragment列表和标题列表
List<Fragment> fragmentList = new ArrayList<>();
List<String> tabTitleList = new ArrayList<>();
fragmentList.add(PositionsFragment.newInstance(0));
fragmentList.add(TasksFragment.newInstance(1));
fragmentList.add(LogFragment.newInstance(2));
tabTitleList.add("位置");
tabTitleList.add("任务");
tabTitleList.add("日志");
// 设置ViewPager的适配器
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentList, tabTitleList);
viewPager.setAdapter(adapter);
// 关联TabLayout和ViewPager
tabLayout.setupWithViewPager(viewPager); tabLayout.setupWithViewPager(viewPager);
// mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class);
// if (mMainServiceBean == null) {
// mMainServiceBean = new MainServiceBean();
// }
// cbMainService = findViewById(R.id.activitymainCheckBox1);
// cbMainService.setChecked(mMainServiceBean.isEnable());
// cbMainService.setOnClickListener(new View.OnClickListener(){
// @Override
// public void onClick(View view) {
// if (cbMainService.isChecked()) {
// MainService.startMainService(MainActivity.this);
// } else {
// MainService.stopMainService(MainActivity.this);
// }
// }
// });
MainService.startMainService(Main2Activity.this);
} }
// ViewPager的适配器
private class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
private List<String> tabTitleList;
public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> tabTitleList) {
super(fm);
this.fragmentList = fragmentList;
this.tabTitleList = tabTitleList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitleList.get(position);
}
}
//初始化view即显示的图片 //初始化view即显示的图片
void initView() { // void initViewPager() {
viewPager = findViewById(R.id.activitymainViewPager1); // pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); // mViewPager.setAdapter(pagerAdapter);
viewPager.setAdapter(pagerAdapter); // //adapter = new MyPagerAdapter(views);
//adapter = new MyPagerAdapter(views); // //viewPager = findViewById(R.id.activitymainViewPager1);
//viewPager = findViewById(R.id.activitymainViewPager1); // //viewPager.setAdapter(adapter);
//viewPager.setAdapter(adapter); // //linearLayout = findViewById(R.id.activitymainLinearLayout1);
//linearLayout = findViewById(R.id.activitymainLinearLayout1); // //initPoint();//初始化页面下方的点
//initPoint();//初始化页面下方的点 // mViewPager.setOnPageChangeListener(this);
viewPager.setOnPageChangeListener(this); // }
}
//初始化所要显示的布局 //初始化所要显示的布局
void initData() { // void initLayoutData() {
ViewPager viewPager = findViewById(R.id.activitymainViewPager1); // LayoutInflater inflater = LayoutInflater.from(getActivity());
LayoutInflater inflater = LayoutInflater.from(getActivity()); // View view1 = inflater.inflate(R.layout.fragment_gms, mViewPager, false);
View view1 = inflater.inflate(R.layout.fragment_gms, viewPager, false); // View view2 = inflater.inflate(R.layout.fragment_contacts, mViewPager, false);
View view2 = inflater.inflate(R.layout.fragment_contacts, viewPager, false); // View view3 = inflater.inflate(R.layout.fragment_log, mViewPager, false);
View view3 = inflater.inflate(R.layout.fragment_log, viewPager, false); //
// views = new ArrayList<>();
views = new ArrayList<>(); // views.add(view1);
views.add(view1); // views.add(view2);
views.add(view2); // views.add(view3);
views.add(view3); // }
}
// void initPoint() { // void initPoint() {
// imageViews = new ImageView[5];//实例化5个图片 // imageViews = new ImageView[5];//实例化5个图片
@ -225,51 +254,6 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
LogUtils.d(TAG, "onDestroy() SOS"); LogUtils.d(TAG, "onDestroy() SOS");
} }
//
// 处理传入的 Intent 数据
//
// boolean prosessIntents(Intent intent) {
// if (intent == null
// || intent.getAction() == null
// || intent.getAction().equals(""))
// return false;
//
// if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
// try {
// WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
// String tag = clazzActivity.getTag();
// LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
// Intent subIntent = new Intent(this, UnitTestActivity.class);
// subIntent.setAction(intent.getAction());
// File file = new File(getCacheDir(), UUID.randomUUID().toString());
// //取出文件uri
// Uri uri = intent.getData();
// if (uri == null) {
// uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
// }
// //获取文件真实地址
// String szSrcPath = UriUtils.getFileFromUri(getApplication(), uri);
// if (TextUtils.isEmpty(szSrcPath)) {
// return false;
// }
//
// Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
// //startWinBollActivity(subIntent, tag);
// WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
// } catch (IllegalAccessException | InstantiationException | IOException e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// // 函数处理异常返回失败
// return false;
// }
// } else {
// LogUtils.d(TAG, "prosessIntents|" + intent.getAction() + "|yet");
// return false;
// }
// return true;
// }
@Override @Override
public String getTag() { public String getTag() {
return TAG; return TAG;
@ -277,7 +261,7 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
@Override @Override
public Toolbar initToolBar() { public Toolbar initToolBar() {
return findViewById(R.id.activitymainToolbar1); return findViewById(R.id.toolbar);
} }
@Override @Override
@ -386,7 +370,7 @@ final public class MainSimpleActivity extends AbsActivity implements IWinBollAct
// } // }
if (requestCode == DIALER_REQUEST_CODE) { if (requestCode == DIALER_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
Toast.makeText(Main2Activity.this, getString(R.string.app_name) + " 已成为默认电话应用", Toast.makeText(MainActivity.this, getString(R.string.app_name) + " 已成为默认电话应用",
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();
} }
} }

View File

@ -9,29 +9,30 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;
import cc.winboll.studio.positions.fragments.GmsFragment; import cc.winboll.studio.positions.fragments.TasksFragment;
import cc.winboll.studio.positions.fragments.ContactsFragment; import cc.winboll.studio.positions.fragments.PositionsFragment;
import cc.winboll.studio.positions.fragments.LogFragment; import cc.winboll.studio.positions.fragments.LogFragment;
public class MyPagerAdapter extends FragmentPagerAdapter { public class MyPagerAdapter2 extends FragmentPagerAdapter {
public static final String TAG = "MyPagerAdapter"; public static final String TAG = "MyPagerAdapter2";
private static final int PAGE_COUNT = 3; private static final int PAGE_COUNT = 3;
public MyPagerAdapter(@NonNull FragmentManager fm) { public MyPagerAdapter2(@NonNull FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
} }
@NonNull @NonNull
@Override @Override
public Fragment getItem(int position) { public Fragment getItem(int position) {
if(position == 1) { // if(position == 0) {
return ContactsFragment.newInstance(position); // return PositionsFragment.newInstance(position);
} else if(position == 2) { // } else if(position == 1) {
return LogFragment.newInstance(position); // return TasksFragment.newInstance(position);
} else { // } else {
return GmsFragment.newInstance(position); // return LogFragment.newInstance(position);
} // }
return null;
} }
@Override @Override

View File

@ -1,111 +0,0 @@
package cc.winboll.studio.positions.fragments;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/20 12:57:00
* @Describe 拨号
*/
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.libappbase.LogView;
import androidx.annotation.Nullable;
import androidx.annotation.NonNull;
import android.graphics.Color;
import android.widget.TextView;
import cc.winboll.studio.positions.views.GridMapView;
import com.tencent.tencentmap.mapsdk.maps.MapView;
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
public class GmsFragment extends Fragment {
public static final String TAG = "GmsFragment";
private static final String ARG_PAGE = "ARG_PAGE";
private int mPage;
private TextureMapView mapView;
protected TencentMap tencentMap;
public static GmsFragment newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
GmsFragment fragment = new GmsFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments()!= null) {
mPage = getArguments().getInt(ARG_PAGE);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_gms, container, false);
// // 初始化视图
// GridMapView mapView = (GridMapView) view.findViewById(R.id.map_view);
//
// // 设置网格参数
// mapView.setGridParameters(10000f, 10000f, 10f);
//
// // 初始化显示区域中心点400,300显示范围2000x200
// mapView.initViewport(5000f, 5000f, 1000f, 1000f);
//
// // 绘制图形
// mapView.drawPoint(5000f, 5000f, Color.RED, 8f);
// mapView.drawCircle(5000f, 5000f, 50f, Color.BLUE, 8f);
// mapView.drawLine(4975f, 4975f, 5025f, 5025f, Color.GREEN, 2f);
// 初始化地图视图
mapView = view.findViewById(R.id.mapView);
mapView.setOpaque(false);
//创建tencentMap地图对象可以完成对地图的几乎所有操作
tencentMap = mapView.getMap();
return view;
}
/**
* mapview的生命周期管理
*/
@Override
public void onStart() {
super.onStart();
mapView.onStart();
}
@Override
public void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onStop() {
super.onStop();
mapView.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}

View File

@ -14,18 +14,19 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import cc.winboll.studio.positions.R; import cc.winboll.studio.positions.R;
import androidx.appcompat.widget.Toolbar;
public class ContactsFragment extends Fragment { public class PositionsFragment extends Fragment {
public static final String TAG = "ContactsFragment"; public static final String TAG = "ContactsFragment";
private static final String ARG_PAGE = "ARG_PAGE"; private static final String ARG_PAGE = "ARG_PAGE";
private int mPage; private int mPage;
public static ContactsFragment newInstance(int page) { public static PositionsFragment newInstance(int page) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(ARG_PAGE, page); args.putInt(ARG_PAGE, page);
ContactsFragment fragment = new ContactsFragment(); PositionsFragment fragment = new PositionsFragment();
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
@ -42,9 +43,10 @@ public class ContactsFragment extends Fragment {
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) { @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_contacts, container, false); View viewMain = inflater.inflate(R.layout.fragment_positions, container, false);
TextView textView = view.findViewById(R.id.page_text); Toolbar toolbar = viewMain.findViewById(R.id.toolbar);
textView.setText("这是第 " + mPage + ""); getActivity().getMenuInflater().inflate(R.menu.toolbar_positions, toolbar.getMenu());
return view;
return viewMain;
} }
} }

View File

@ -74,6 +74,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
public static final String TAG = "TXMSFragment"; public static final String TAG = "TXMSFragment";
private static final int PERMISSION_REQUEST_CODE = 1;
private static final String ARG_PAGE = "ARG_PAGE"; private static final String ARG_PAGE = "ARG_PAGE";
private int mPage; private int mPage;
@ -90,7 +91,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
public static TXMSFragment newInstance(int page) { public static TXMSFragment newInstance(int page) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putInt(ARG_PAGE, page); args.putInt(ARG_PAGE, page);
TXMSFragment fragment = new GmsFragment(); TXMSFragment fragment = new TXMSFragment();
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
@ -98,7 +99,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (getArguments()!= null) { if (getArguments() != null) {
mPage = getArguments().getInt(ARG_PAGE); mPage = getArguments().getInt(ARG_PAGE);
} }
} }
@ -107,14 +108,11 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) { @Nullable Bundle savedInstanceState) {
View viewRoot = inflater.inflate(R.layout.fragment_gms, container, false); View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
locationJsonList = new ArrayList<LocationJson>(); locationJsonList = new ArrayList<LocationJson>();
mLogView = viewRoot.findViewById(R.id.logview); TencentMapInitializer.setAgreePrivacy(getActivity(), true);
mLogView.start(); TencentMapInitializer.start(getActivity());
TencentMapInitializer.setAgreePrivacy(this, true);
TencentMapInitializer.start(this);
TencentLocationManager.setUserAgreePrivacy(true); TencentLocationManager.setUserAgreePrivacy(true);
@ -123,13 +121,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
//创建tencentMap地图对象可以完成对地图的几乎所有操作 //创建tencentMap地图对象可以完成对地图的几乎所有操作
tencentMap = mapView.getMap(); tencentMap = mapView.getMap();
FloatingActionButton fab = viewRoot.findViewById(R.id.fab); // FloatingActionButton fab = viewRoot.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() { // fab.setOnClickListener(new View.OnClickListener() {
@Override // @Override
public void onClick(View view) { // public void onClick(View view) {
Snackbar.make(view, "点击了悬浮按钮", Snackbar.LENGTH_LONG).show(); // Snackbar.make(view, "点击了悬浮按钮", Snackbar.LENGTH_LONG).show();
} // }
}); // });
mtvInfo = viewRoot.findViewById(R.id.tv_info); mtvInfo = viewRoot.findViewById(R.id.tv_info);
@ -169,6 +167,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
} }
}); });
loadLocations();
return viewRoot; return viewRoot;
} }
@ -186,7 +185,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
// LocationFileStorage.saveToFile(this, locations); // LocationFileStorage.saveToFile(this, locations);
// 读取数据 // 读取数据
locationJsonList = LocationFileStorage.loadFromFile(this); locationJsonList = LocationFileStorage.loadFromFile(getActivity());
for (LocationJson lj : locationJsonList) { for (LocationJson lj : locationJsonList) {
tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation()))); tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation())));
@ -204,7 +203,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
// 方式1保存到文件 // 方式1保存到文件
//List<Location> locations = new ArrayList<>(); //List<Location> locations = new ArrayList<>();
locationJsonList.add(new LocationJson(location)); locationJsonList.add(new LocationJson(location));
LocationFileStorage.saveToFile(this, locationJsonList); LocationFileStorage.saveToFile(getActivity(), locationJsonList);
// 读取数据 // 读取数据
// List<Location> loaded = LocationFileStorage.loadFromFile(this); // List<Location> loaded = LocationFileStorage.loadFromFile(this);
@ -283,18 +282,6 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
mapView.onDestroy(); mapView.onDestroy();
} }
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// LatLng center = new LatLng(39.904556, 116.427242);
// tencentMap.moveCamera(
// CameraUpdateFactory.newLatLngZoom(center, 13f) // 注意 13 13f
// );
loadLocations();
}
/** /**
* 设置定位图标样式 * 设置定位图标样式
*/ */
@ -334,7 +321,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
*/ */
private void initLocation() { private void initLocation() {
//用于访问腾讯定位服务的类, 周期性向客户端提供位置更新 //用于访问腾讯定位服务的类, 周期性向客户端提供位置更新
locationManager = TencentLocationManager.getInstance(this); locationManager = TencentLocationManager.getInstance(getActivity());
//设置坐标系 //设置坐标系
locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02); locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02);
//创建定位请求 //创建定位请求
@ -369,7 +356,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
locationChangedListener.onLocationChanged(location); locationChangedListener.onLocationChanged(location);
//显示回调的实时位置信息 //显示回调的实时位置信息
runOnUiThread(new Runnable() { getActivity().runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
// Rules.getEffectInfo(location); // Rules.getEffectInfo(location);
@ -401,13 +388,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
int err = locationManager.requestLocationUpdates(locationRequest, this, Looper.myLooper()); int err = locationManager.requestLocationUpdates(locationRequest, this, Looper.myLooper());
switch (err) { switch (err) {
case 1: case 1:
Toast.makeText(this, "设备缺少使用腾讯定位服务需要的基本条件", Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), "设备缺少使用腾讯定位服务需要的基本条件", Toast.LENGTH_SHORT).show();
break; break;
case 2: case 2:
Toast.makeText(this, "manifest 中配置的 key 不正确", Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), "manifest 中配置的 key 不正确", Toast.LENGTH_SHORT).show();
break; break;
case 3: case 3:
Toast.makeText(this, "自动加载libtencentloc.so失败", Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), "自动加载libtencentloc.so失败", Toast.LENGTH_SHORT).show();
break; break;
default: default:
@ -434,9 +421,9 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
} }
private void checkLocationPermission() { private void checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { || ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
PERMISSION_REQUEST_CODE); PERMISSION_REQUEST_CODE);
} else { } else {
@ -452,7 +439,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
//startLocationUpdates(); //startLocationUpdates();
} else { } else {
// 用户拒绝了权限请求 // 用户拒绝了权限请求
Toast.makeText(this, "请授予定位权限", Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(), "请授予定位权限", Toast.LENGTH_SHORT).show();
} }
} }
} }

View File

@ -0,0 +1,59 @@
package cc.winboll.studio.positions.fragments;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/20 12:57:00
* @Describe 拨号
*/
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.libappbase.LogView;
import androidx.annotation.Nullable;
import androidx.annotation.NonNull;
import android.graphics.Color;
import android.widget.TextView;
import cc.winboll.studio.positions.views.GridMapView;
import com.tencent.tencentmap.mapsdk.maps.MapView;
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
import androidx.appcompat.widget.Toolbar;
public class TasksFragment extends Fragment {
public static final String TAG = "GmsFragment";
private static final String ARG_PAGE = "ARG_PAGE";
private int mPage;
public static TasksFragment newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
TasksFragment fragment = new TasksFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments()!= null) {
mPage = getArguments().getInt(ARG_PAGE);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View viewMain = inflater.inflate(R.layout.fragment_tasks, container, false);
Toolbar toolbar = viewMain.findViewById(R.id.toolbar);
getActivity().getMenuInflater().inflate(R.menu.toolbar_tasks, toolbar.getMenu());
return viewMain;
}
}

View File

@ -7,21 +7,21 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="400dp"
android:id="@+id/activitymainToolbar1"/> android:id="@+id/frameLayout"/>
<androidx.viewpager.widget.ViewPager <androidx.viewpager.widget.ViewPager
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1.0" android:layout_weight="1.0"
android:id="@+id/activitymainViewPager1"/> android:id="@+id/viewPager"/>
<com.google.android.material.tabs.TabLayout <com.google.android.material.tabs.TabLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"
android:id="@+id/activitymainTabLayout1"/> android:id="@+id/tabLayout"/>
</LinearLayout> </LinearLayout>

View File

@ -5,8 +5,10 @@
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<cc.winboll.studio.libappbase.LogView <cc.winboll.studio.libappbase.LogView
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/logview"/> android:id="@+id/logview"/>
</LinearLayout> </LinearLayout>

View File

@ -6,10 +6,14 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Text" android:text="fragment_positions"/>
android:id="@+id/page_text"/>
</LinearLayout> </LinearLayout>

View File

@ -6,10 +6,15 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<com.tencent.tencentmap.mapsdk.maps.TextureMapView <androidx.appcompat.widget.Toolbar
android:id="@+id/mapView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fragment_tasks"/>
</LinearLayout> </LinearLayout>

View File

@ -6,16 +6,9 @@
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activitymainToolbar1"/>
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="match_parent">
android:layout_weight="1.0">
<com.tencent.tencentmap.mapsdk.maps.TextureMapView <com.tencent.tencentmap.mapsdk.maps.TextureMapView
android:id="@+id/mapview" android:id="@+id/mapview"
@ -35,16 +28,6 @@
</TextView> </TextView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_margin="16dp"
android:src="@drawable/ic_location_searching"
app:backgroundTint="@color/colorPrimary"
android:layout_alignParentTop="true"/>
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_addposition"
android:title="AddPositions"
app:showAsAction="ifRoom" />
</menu>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_addtask"
android:title="AddTask"
app:showAsAction="ifRoom" />
</menu>