公共品牌动态;我的产品

This commit is contained in:
tongchao 2025-06-27 15:54:34 +08:00
parent f4af131dfb
commit 28d7ec0a4b
19 changed files with 802 additions and 59 deletions

View File

@ -143,6 +143,21 @@
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.brand.PublicBrandDynamicsActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.brand.PublicBrandDynamicsDetailActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.brand.MyProductActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity

View File

@ -0,0 +1,91 @@
package com.tairui.industrial_operation.ui.brand;
import java.util.List;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityMyProductBinding;
import com.tairui.industrial_operation.ui.brand.entity.MyProductEntity;
import com.tairui.industrial_operation.util.AppUtil;
import com.tairui.industrial_operation.util.SingleClickListener;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
public class MyProductActivity extends BaseActivity<ActivityMyProductBinding> {
private MyProductAdapter adapter;
@Override
protected Class<ActivityMyProductBinding> getBindingClass() {
return ActivityMyProductBinding.class;
}
@Override
protected void initStatusBar() {
ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
.statusBarDarkFont(true).init();
}
@Override
protected void onQueryArguments() {
}
@Override
protected void onBindListener() {
binding.btnBack.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
finish();
}
});
}
@Override
protected void onFindView(Bundle savedInstanceState) {
binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext));
adapter = new MyProductAdapter();
binding.refreshRecycler.setAdapter(adapter);
binding.refreshRecycler.setEnableRefresh(false);
binding.refreshRecycler.setNoMoreData(true);
adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
});
}
@Override
protected void onApplyData() {
requestData();
}
private void requestData() {
String dataStr = AppUtil.loadJsonFromRaw(mContext, R.raw.my_product);
Gson gson = new Gson();
List<MyProductEntity> data = gson.fromJson(dataStr, new TypeToken<List<MyProductEntity>>() {
}.getType());
adapter.setNewData(data);
binding.refreshRecycler.showContent();
}
private class MyProductAdapter extends BaseQuickAdapter<MyProductEntity, BaseViewHolder> {
public MyProductAdapter() {
super(R.layout.item_my_product);
}
@Override
protected void convert(@NonNull BaseViewHolder holder, MyProductEntity entity) {
holder.setImageResource(R.id.image, AppUtil.getDrawableId(entity.getImgRes()));
holder.setText(R.id.name, entity.getName());
holder.setText(R.id.status, entity.getStatus().equals("0") ? "已停售" : "在售中");
holder.setTextColor(R.id.status, getResColor(entity.getStatus().equals("0") ? R.color.color_txt_red : R.color.color_txt_green));
holder.setText(R.id.price, "" + entity.getPrice());
}
}
}

View File

@ -3,6 +3,10 @@ package com.tairui.industrial_operation.ui.brand;
import com.gyf.immersionbar.ImmersionBar;
import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityPublicBrandBinding;
import com.tairui.industrial_operation.util.IntentUtil;
import com.tairui.industrial_operation.util.SingleClickListener;
import android.view.View;
public class PublicBrandActivity extends BaseActivity<ActivityPublicBrandBinding> {
@Override
@ -15,4 +19,20 @@ public class PublicBrandActivity extends BaseActivity<ActivityPublicBrandBinding
ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
.statusBarDarkFont(true).init();
}
@Override
protected void onBindListener() {
binding.dt.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
IntentUtil.startActivity(mContext, PublicBrandDynamicsActivity.class);
}
});
binding.wdcp.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
IntentUtil.startActivity(mContext, MyProductActivity.class);
}
});
}
}

View File

@ -0,0 +1,94 @@
package com.tairui.industrial_operation.ui.brand;
import java.util.List;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar;
import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityPublicBrandDynamicsBinding;
import com.tairui.industrial_operation.ui.brand.entity.PublicBrandDynamicsEntity;
import com.tairui.industrial_operation.util.AppUtil;
import com.tairui.industrial_operation.util.IntentUtil;
import com.tairui.industrial_operation.util.SingleClickListener;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
public class PublicBrandDynamicsActivity extends BaseActivity<ActivityPublicBrandDynamicsBinding> {
private PublicBrandDynamicsAdapter adapter;
@Override
protected Class<ActivityPublicBrandDynamicsBinding> getBindingClass() {
return ActivityPublicBrandDynamicsBinding.class;
}
@Override
protected void initStatusBar() {
ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
.statusBarDarkFont(true).init();
}
@Override
protected void onQueryArguments() {
}
@Override
protected void onBindListener() {
binding.btnBack.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
finish();
}
});
}
@Override
protected void onFindView(Bundle savedInstanceState) {
binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext));
adapter = new PublicBrandDynamicsAdapter();
binding.refreshRecycler.setAdapter(adapter);
binding.refreshRecycler.setEnableRefresh(false);
binding.refreshRecycler.setNoMoreData(true);
adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
Bundle bundle = new Bundle();
bundle.putSerializable("data", adapter.getData().get(i));
IntentUtil.startActivity(mContext, PublicBrandDynamicsDetailActivity.class, bundle);
});
}
@Override
protected void onApplyData() {
requestData();
}
private void requestData() {
String dataStr = AppUtil.loadJsonFromRaw(mContext, R.raw.public_brand_dynamics);
Gson gson = new Gson();
List<PublicBrandDynamicsEntity> data = gson.fromJson(dataStr, new TypeToken<List<PublicBrandDynamicsEntity>>() {
}.getType());
adapter.setNewData(data);
binding.refreshRecycler.showContent();
}
private class PublicBrandDynamicsAdapter extends BaseQuickAdapter<PublicBrandDynamicsEntity, BaseViewHolder> {
public PublicBrandDynamicsAdapter() {
super(R.layout.item_public_brand_dynamics);
}
@Override
protected void convert(@NonNull BaseViewHolder holder, PublicBrandDynamicsEntity entity) {
holder.setText(R.id.tvTitle, entity.getTitle());
holder.setText(R.id.tvContent, entity.getContent());
holder.setText(R.id.tvDate, entity.getDate());
}
}
}

View File

@ -0,0 +1,48 @@
package com.tairui.industrial_operation.ui.brand;
import com.gyf.immersionbar.ImmersionBar;
import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityPublicBrandDynamicsDetailBinding;
import com.tairui.industrial_operation.ui.brand.entity.PublicBrandDynamicsEntity;
import com.tairui.industrial_operation.util.SingleClickListener;
import android.os.Bundle;
import android.view.View;
public class PublicBrandDynamicsDetailActivity extends BaseActivity<ActivityPublicBrandDynamicsDetailBinding> {
private PublicBrandDynamicsEntity mData;
@Override
protected Class<ActivityPublicBrandDynamicsDetailBinding> getBindingClass() {
return ActivityPublicBrandDynamicsDetailBinding.class;
}
@Override
protected void initStatusBar() {
ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar().statusBarDarkFont(true).init();
}
@Override
protected void onQueryArguments() {
mData = (PublicBrandDynamicsEntity) getIntent().getSerializableExtra("data");
}
@Override
protected void onFindView(Bundle savedInstanceState) {
setText(binding.tvTitle, mData.getTitle());
setText(binding.tvDate, "发布日期:" + mData.getDate());
setText(binding.tvContent, mData.getContent());
}
@Override
protected void onBindListener() {
binding.btnBack.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
finish();
}
});
}
}

View File

@ -0,0 +1,46 @@
package com.tairui.industrial_operation.ui.brand.entity;
import java.io.Serializable;
public class MyProductEntity implements Serializable {
private String imgRes;
private String name;
private String price;
private String status; //0-停售1-在售中
public String getImgRes() {
return imgRes;
}
public void setImgRes(String imgRes) {
this.imgRes = imgRes;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}

View File

@ -0,0 +1,34 @@
package com.tairui.industrial_operation.ui.brand.entity;
import java.io.Serializable;
public class PublicBrandDynamicsEntity implements Serializable {
private String title;
private String content;
private String date;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}

View File

@ -1,35 +1,69 @@
package com.tairui.industrial_operation.util;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.ui.photoview.PhotoViewActivty;
import com.tairui.industrial_operation.widget.loading.LoadingDialog;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.RawRes;
public class AppUtil {
public static LoadingDialog getLoading(Context context) {
return getLoading(context, 1);
}
public static LoadingDialog getLoading(Context context) {
return getLoading(context, 1);
}
public static LoadingDialog getLoading(Context context, int style) {
if (null != context) {
LoadingDialog loading = new LoadingDialog(context);
loading.setLoadStyle(style); //STYLE_RING = 0; STYLE_LINE = 1;
loading.setLoadingText(null);
loading.setInterceptBack(false);
return loading;
} else {
return null;
}
}
public static LoadingDialog getLoading(Context context, int style) {
if (null != context) {
LoadingDialog loading = new LoadingDialog(context);
loading.setLoadStyle(style); //STYLE_RING = 0; STYLE_LINE = 1;
loading.setLoadingText(null);
loading.setInterceptBack(false);
return loading;
} else {
return null;
}
}
public static void startPhotoView(Context context, ArrayList<String> imgs){
Bundle bundle = new Bundle();
bundle.putInt("index", 0);
bundle.putStringArrayList("imgs", imgs);
IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
}
public static void startPhotoView(Context context, ArrayList<String> imgs) {
Bundle bundle = new Bundle();
bundle.putInt("index", 0);
bundle.putStringArrayList("imgs", imgs);
IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
}
public static String loadJsonFromRaw(Context context, @RawRes int rawRes) {
String jsonString = null;
try {
InputStream inputStream = context.getResources().openRawResource(rawRes);
int size = inputStream.available();
byte[] buffer = new byte[size];
inputStream.read(buffer);
inputStream.close();
jsonString = new String(buffer, StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
return jsonString;
}
// 根据图片名称获取本地资源ID
public static int getDrawableId(String imageName) {
try {
// 通过反射获取资源类的字段
Field field = R.mipmap.class.getField(imageName);
return field.getInt(null);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
// 若没找到资源返回默认图片
return R.mipmap.ic_launcher;
}
}
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="30dp"
android:bottomRightRadius="30dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp" />
<solid android:color="@color/color_txt_hint" />
</shape>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f8f8f8">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:id="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@id/statusbar">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
android:padding="4dp"
android:src="@mipmap/ic_back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的产品"
android:textColor="@color/color_txt_black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.tairui.industrial_operation.widget.RefreshRecyclerView
android:id="@+id/refreshRecycler"
app:layout_constraintTop_toBottomOf="@id/toolbar"
android:layout_width="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_height="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@color/color_f8f8f8"
android:layout_height="match_parent">
<View
@ -217,51 +218,52 @@
</LinearLayout>
<LinearLayout
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_container_white_raduis_10"
android:orientation="vertical"
android:padding="12dp">
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="品牌服务"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="品牌服务"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:drawableRight="@mipmap/ic_arrow_right_gray"
android:text="查看更多"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:drawableRight="@mipmap/ic_arrow_right_gray"
android:text="查看更多"
android:textColor="@color/color_txt_label"
android:textSize="14sp" />
</FrameLayout>
</FrameLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_public_brand_5" />
<ImageView
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_public_brand_6" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_public_brand_5" />
<ImageView
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginTop="12dp"
android:src="@mipmap/pic_public_brand_6" />
</LinearLayout>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f8f8f8">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:id="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@id/statusbar">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
android:padding="4dp"
android:src="@mipmap/ic_back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="公共品牌动态"
android:textColor="@color/color_txt_black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.tairui.industrial_operation.widget.RefreshRecyclerView
android:id="@+id/refreshRecycler"
app:layout_constraintTop_toBottomOf="@id/toolbar"
android:layout_width="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_height="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_f8f8f8">
<com.tairui.industrial_operation.widget.statusbar.StatusBarHeightView
android:id="@+id/statusbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@id/statusbar">
<ImageView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
android:padding="4dp"
android:src="@mipmap/ic_back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center"
android:textColor="@color/color_txt_black"
android:textSize="18sp"
android:textStyle="bold"
tools:text="《耿马农产品公共品牌使用规范》" />
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:textColor="@color/color_txt_label"
android:textSize="14sp"
tools:text="发布日期2025.01.01" />
<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:lineSpacingExtra="2dp"
android:textColor="@color/color_txt_black"
android:textSize="14sp"
tools:text="发布日期2025.01.01" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="12dp"
android:layout_marginRight="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:padding="12dp">
<ImageView
android:id="@+id/image"
android:layout_width="80dp"
android:layout_height="80dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="在售中"
android:textColor="@color/color_txt_green"
android:textSize="14sp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/image" />
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:ellipsize="end"
android:maxLines="2"
android:text="耿马普罗旺斯西红柿沙瓤番茄甄选番茄苗"
android:textColor="@color/color_txt_black"
android:textSize="16sp"
app:layout_constraintLeft_toRightOf="@id/image"
app:layout_constraintRight_toLeftOf="@id/status"
app:layout_constraintTop_toTopOf="@id/image" />
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:text="¥4.50"
android:textColor="@color/color_txt_green"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/image"
app:layout_constraintLeft_toRightOf="@id/image" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_container_gray_raduis_30"
android:paddingLeft="16dp"
android:paddingTop="6dp"
android:paddingRight="16dp"
android:paddingBottom="6dp"
android:text="取消授权"
android:textColor="@color/color_txt_black"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@id/image"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="12dp"
android:layout_marginRight="16dp"
android:background="@drawable/bg_container_white_raduis_10"
android:padding="12dp">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="《耿马农产品公共品牌使用规范》"
android:textColor="@color/color_txt_black"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:ellipsize="end"
android:layout_marginTop="8dp"
android:text="一、总则为规范“耿品”公共品牌(以下简称“品牌”)的使用与管理,维护品牌形象与声誉,保障消费者权益,促..."
android:textColor="@color/color_txt_label"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/tvTitle" />
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="2025.01.01"
android:textColor="@color/color_txt_label"
android:textSize="12sp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvContent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -0,0 +1,14 @@
[
{
"name": "耿马普罗旺斯西红柿沙瓤番茄甄选番茄苗",
"imgRes": "pic_my_product_1",
"price": "4.50",
"status": "1"
},
{
"name": "紫皮长茄子新鲜蔬菜细茄子长条茄子杭茄",
"imgRes": "pic_my_product_2",
"price": "4.50",
"status": "1"
}
]

View File

@ -0,0 +1,17 @@
[
{
"title": "《耿马农产品公共品牌使用规范》",
"content": "一、总则为规范“耿品”公共品牌以下简称“品牌”的使用与管理维护品牌形象与声誉保障消费者权益促进耿马县农产品高质量发展特制定本规范。二、品牌定位“耿品”品牌代表耿马县出产的具有优良品质、鲜明地域特色及生态、健康、可信赖特质的农产品整体形象。三、使用原则1.自愿申请: 符合条件的主体自愿申请使用。2.授权许可: 经品牌管理机构审核授权后方可使用。3.统一管理: 遵循品牌标识系统、品质标准及宣传规范。4.权责一致: 使用者享有品牌权益承担维护责任。四、申请主体资格1.在耿马县依法注册登记从事相关农产品生产、加工、经营的企业、合作社、家庭农场等。2.具备合法有效的生产经营资质。3.产品符合国家及行业相关质量标准、安全规范。4.近三年内无重大质量安全、诚信经营不良记录。五、产品准入标准1.产地要求: 主要原料产自耿马县行政区域内。2.品质要求: 符合“耿品”品牌制定的具体产品品质标准如理化指标、感官要求等。3.认证要求: 鼓励通过绿色食品、有机产品、地理标志等认证。4包装要求 使用经审核备案的包装设计清晰标注品牌授权标识、产品信息、生产者信息、溯源信息等。六、品牌标识使用规范1.标准展示: 严格按照《“耿品”品牌视觉识别系统手册》规定使用标识包括图形、字体、色彩、组合方式等不得擅自更改。2.突出位置: 品牌主标识应在产品包装、宣传材料显著位置清晰展示。3.禁用情形: 不得用于未授权产品、不合格产品及可能损害品牌声誉的场合。七、使用流程1.申请: 提交申请表、主体资质证明、产品质检报告等材料。2.审核: 品牌管理机构组织材料审核与实地考察。3.签约: 审核通过后签订《“耿品”品牌使用授权协议》。4.授权: 颁发授权证书明确授权产品范围、有效期。5.续期: 有效期届满前申请续期重新审核。八、使用者义务1.维护品牌形象保证产品质量安全。2.规范使用品牌标识接受监督管理。3.建立产品溯源体系确保来源可追溯。4.及时报告重大变更如生产条件、产品标准变更。5.配合品牌宣传推广活动。九、监督管理1.日常监管: 品牌管理机构进行不定期抽检和市场巡查。2.社会监督: 接受消费者、媒体等社会监督。3.违规处理: 对违反本规范或授权协议者视情节轻重给予警告、责令整改、暂停授权直至撤销授权处理并公告。十、退出机制授权期满未续期、主动申请退出、被撤销授权或主体资格丧失时须立即停止使用品牌标识及相关宣传并配合后续处理。十一、附则1.本规范由耿马县“耿品”品牌管理机构负责解释。2.本规范自发布之日起施行。",
"date": "2025.01.01"
},
{
"title": "《云南省 “绿色食品牌” 品牌目录管理办法》",
"content": "该办法自 2021 年 9 月 1 日起施行,明确了云南省 “绿色食品牌” 品牌目录相关事宜。其中规定申报产品为食用农产品的应当获得绿色食品、有机农产品、良好农业规范GAP认证之一且在有效期内或获得不低于绿色食品质量认证要求的其他质量或管理体系认证才有资格申报品牌目录。入选品牌目录的品牌经云南省绿色食品发展中心授权后许可使用云南省 “绿色食品牌” 统一形象标识。若违规使用形象标识,将被退出目录,且三年内不得再次申报。",
"date": "2021.09.01"
},
{
"title": "《云南省绿色食品牌形象标识管理办法(试行)》",
"content": "该办法自 2021 年 1 月 18 日起实施,规定云南省 “绿色食品牌” 形象标识由云南省绿色食品发展中心依法申请全类商标注册,受法律保护。获得云南省 “绿色食品牌” 名品名企表彰的生产经营主体等可优先获得使用授权。形象标识经授权后,由使用主体自行印制或加贴使用,使用过程中不得更改图案、色相,但图形大小可按比例缩放。若不符合规定使用,或产地环境受污染、产品质量不合格等,不得继续使用该形象标识,还将被依法追究相关责任。",
"date": "2021.01.18"
}
]